Browse Source

客户中心-烟草订单审核

master
lzh 2 years ago
parent
commit
5110ed0895
  1. 34
      supervise-customer-ui/src/api/supervise/purchaserequisitiontobacco.js
  2. 27
      supervise-customer-ui/src/api/supervise/purchaserequisitiontobaccodetails.js
  3. 132
      supervise-customer-ui/src/views/supervise/tobaccopurchaseapplication/tobaccopurchaseapplicationAdd.vue
  4. 7
      yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/anrui/portal/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java
  5. 8
      yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/anrui/portal/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java
  6. 13
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java
  7. 47
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java
  8. 10
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java
  9. 23
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java
  10. 163
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java
  11. 9
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobaccodetails/PurchaseRequisitionTobaccoDetailsRest.java
  12. 96
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobaccodetails/PurchaseRequisitionTobaccoDetailsService.java

34
supervise-customer-ui/src/api/supervise/purchaserequisitiontobacco.js

@ -0,0 +1,34 @@
import request from '@/utils/request'
// 库房提供的采购订单表
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/purchaserequisitiontobacco/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 保存新增记录
saveOrUpdate: function(params) {
return request({
url: '/purchaserequisitiontobacco/save',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 通过sid查询一条记录
fetchVoBySid: function(params) {
return request({
url: '/purchaserequisitiontobacco/fetchVoBySid',
params: params
})
}
}

27
supervise-customer-ui/src/api/supervise/purchaserequisitiontobaccodetails.js

@ -0,0 +1,27 @@
import request from '@/utils/request'
// 库房提供的采购订单表
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/purchaserequisitiontobaccodetails/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 保存新增记录
saveOrUpdate: function(params) {
return request({
url: '/purchaserequisitiontobaccodetails/save',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
}

132
supervise-customer-ui/src/views/supervise/tobaccopurchaseapplication/tobaccopurchaseapplicationAdd.vue

@ -6,12 +6,11 @@
<div>{{ viewTitle }}</div>
<!-- start 添加修改按钮 -->
<div style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<el-button type="text" @click="handleDownload"><span style="border-bottom: 1px solid blue">下载Excel示例表样</span></el-button>
<div style="margin-left: 10px;margin-right: 10px">
<el-upload
ref="upload"
class="avatar-uploade"
accept=".xls"
accept=".xlsx"
:action="updateAction"
name="filename"
:file-list="fileList"
@ -20,12 +19,26 @@
:show-file-list="false"
:limit="1"
>
<el-button type="primary" size="small">导入采购订单表</el-button>
<el-button type="primary" size="small">上传烟草系统采购订单及明细.xlsx</el-button>
</el-upload>
</div>
<!-- <el-button type="primary" size="small" :disabled="candownload" @click="downCheckExcel">下载审核结果</el-button>-->
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled">提交</el-button>
<div style="margin-left: 10px;margin-right: 10px">
<el-upload
ref="upload"
class="avatar-uploade"
accept=".csv"
:action="updateActionDetails"
:data="currentOrderSid"
name="filename"
:file-list="fileListDetails"
:on-success="handleSuccessDetail"
:multiple="true"
:show-file-list="false"
>
<el-button :disabled="!currentOrderSid.sid" type="primary" size="small">上传报烟明细.csv</el-button>
</el-upload>
</div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
<!-- end 添加修改按钮 -->
@ -46,7 +59,7 @@
<el-col :span="4" class="tleftb"><span>填单人</span></el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<span>{{ formobj.buyerName }}</span>
<span>{{ formobj.tdrName }}</span>
</el-form-item>
</el-col>
</el-row>
@ -74,7 +87,7 @@
<el-col :span="4" class="tleftb"><span>入库单位</span></el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<span>{{ formobj.purchasingDeptName }}</span>
<span>{{ formobj.purchasingOrgName }}</span>
</el-form-item>
</el-col>
</el-row>
@ -82,7 +95,7 @@
<el-col :span="4" class="tleftb"><span>要货单位</span></el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<span>{{ formobj.purchasingDeptName }}</span>
<span>{{ formobj.purchasingOrgName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb"><span>入库仓位</span></el-col>
@ -112,33 +125,39 @@
<span>合计金额:{{ amountInTotal }}</span>
</div>
</div>
<el-table :key="tableKey" :data="formobj.pros" :index="index" border style="width: 100%">
<el-table-column fixed label="序号" width="80px" type="index" :index="index + 1" align="center" />
<el-table-column fixed label="操作" width="100px" align="center" header-align="center">
<el-table :key="tableKey" :data="formobj.storeList" :index="index" border style="width: 100%">
<el-table-column type="expand">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="dataDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="烟草证编码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.proCode }}</span>
<div>
<el-table :data="scope.row.detailsList" border style="width: 100%">
<el-table-column label="卷烟代码" align="center" prop="ycode" />
<el-table-column label="商品" align="center" prop="ycode" />
<el-table-column label="批发价" align="center" prop="ycode" />
<el-table-column label="要货量" align="center" prop="ycode" />
<el-table-column label="订单量" align="center" prop="ycode" />
<el-table-column label="金额" align="center" prop="ycode" />
<el-table-column label="厂家名称" align="center" prop="ycode" />
<el-table-column label="零售指导价" align="center" prop="ycode" />
</el-table>
</div>
</template>
</el-table-column>
<el-table-column fixed label="序号" width="80px" type="index" :index="index + 1" align="center" />
<el-table-column label="烟草证编码" align="center" prop="ycode" />
<el-table-column label="门店名称" align="center">
<template slot-scope="scope">
<span>{{ scope.row.proName }}</span>
<span>[{{ scope.row.storeCode }}]{{ scope.row.storeName }}</span>
</template>
</el-table-column>
<el-table-column label="金额(元)" align="center">
<el-table-column label="金额(元)" align="center" prop="price" />
<el-table-column label="明细汇总金额" align="center" prop="detailPrice" />
<el-table-column label="金额比对" align="center">
<template slot-scope="scope">
<span>{{ scope.row.content }}</span>
</template>
</el-table-column>
<el-table-column label="烟草批次" align="center">
<template slot-scope="scope">
<span>{{ scope.row.number }}</span>
<span v-if="parseFloat(scope.row.price).toFixed(2) == parseFloat(scope.row.detailPrice).toFixed(2)">相同</span>
<span v-else>不相符</span>
</template>
</el-table-column>
<el-table-column label="烟草批次" align="center" prop="pc" />
</el-table>
</el-form>
</div>
@ -147,7 +166,7 @@
</template>
<script>
import req from '@/api/supervise/purchaseapplicationmanagement'
import req from '@/api/supervise/purchaserequisitiontobacco'
export default {
name: 'ToBaccopurchaseApplicationAdd',
data() {
@ -157,9 +176,14 @@ export default {
viewTitle: '',
tableKey: 0,
index: 0,
updateAction: process.env.VUE_APP_BASE_API + '/v1/purchaserequisition/importBrandSort',
updateAction: process.env.VUE_APP_BASE_API + '/purchaserequisitiontobacco/importOrderXlsx',
updateActionDetails: process.env.VUE_APP_BASE_API + '/purchaserequisitiontobaccodetails/importCsvBatch',
fileList: [],
fileListDetails: [],
amountInTotal: '', //
currentOrderSid: {
sid: ''
},
formobj: {
sid: '',
code: '', //
@ -180,7 +204,9 @@ export default {
newCode: '', //
oldCode: '', //
completionStatusKey: '', // key
pros: [] //
tdrCode: '', //
tdrName: '', //
storeList: [] //
},
rules: {}
}
@ -208,7 +234,9 @@ export default {
newCode: '', //
oldCode: '', //
completionStatusKey: '', // key
pros: [] //
tdrCode: '', //
tdrName: '', //
storeList: [] //
}
this.amountInTotal = ''
this.$refs['form_obj'].resetFields()
@ -256,27 +284,45 @@ export default {
window.location.href = process.env.VUE_APP_BASE_API + '/v1/purchaserequisition/yb'
},
handleSuccess(resp, file, fileList) {
this.fileList = []
const _this = this
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: '导入成功' })
this.formobj = resp.data
if (this.formobj.pros.length > 0) {
var aa = 0
for (var i = 0; i < this.formobj.pros.length; i++) {
if (this.formobj.pros[i].totalPrice !== '') {
aa = parseFloat(aa) + parseFloat(this.formobj.pros[i].totalPrice)
}
}
this.amountInTotal = aa
}
console.log(',,1111',this.formobj.code)
if (this.formobj.code) {
this.candownload = false
_this.currentOrderSid.sid = resp.data
_this.loadData(resp.data)
} else {
this.$message({ showClose: true, type: 'error', message: resp.msg })
}
},
handleSuccessDetail(resp, file, fileList) {
// this.fileListDetails = []
const _this = this
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: '导入成功' })
_this.loadData()
} else {
this.$message({ showClose: true, type: 'error', message: resp.msg })
}
},
loadData() {
const _this = this
req
.fetchVoBySid({ sid: _this.currentOrderSid.sid })
.then(res => {
_this.formobj = res.data
console.log(',,1111', _this.formobj)
var aa = 0
for (var i = 0; i < _this.formobj.storeList.length; i++) {
if (_this.formobj.storeList[i].price !== '') {
aa = parseFloat(aa) + parseFloat(_this.formobj.storeList[i].price)
}
}
_this.amountInTotal = aa.toFixed(2)
})
.catch(e => {
console.log('EEEE:', e)
})
},
dataDelete(index) {
const tip = '请确认是否删除所选记录?'
this.$confirm(tip, '提示', {

7
yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/anrui/portal/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java

@ -26,12 +26,17 @@
package com.yxt.anrui.portal.api.purchaserequisitionstore;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoDetailsVo;
import com.yxt.anrui.portal.api.purchaserequisitiontobaccodetails.PurchaseRequisitionTobaccoDetails;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Project: yxt-supervise(宇信通监管) <br/>
* File: PurchaseRequisitionStoreVo.java <br/>
@ -69,4 +74,6 @@ public class PurchaseRequisitionStoreVo implements Vo {
@ApiModelProperty("明细总金额")
private String detailPrice; // 明细总金额
private List<PurchaseRequisitionTobaccoDetails> detailsList = new ArrayList<>();
}

8
yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/anrui/portal/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java

@ -26,12 +26,17 @@
package com.yxt.anrui.portal.api.purchaserequisitiontobacco;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStoreVo;
import com.yxt.anrui.portal.api.purchaserequisitiontobaccodetails.PurchaseRequisitionTobaccoDetails;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Project: yxt-supervise(宇信通监管) <br/>
* File: PurchaseRequisitionTobaccoVo.java <br/>
@ -105,4 +110,7 @@ public class PurchaseRequisitionTobaccoVo implements Vo {
private String tdrCode;
@ApiModelProperty("填单人姓名")
private String tdrName;
private List<PurchaseRequisitionStoreVo> storeList = new ArrayList<>();
}

13
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java

@ -27,10 +27,9 @@ package com.yxt.supervise.portal.biz.purchaserequisitionstore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStore;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.*;
import java.util.List;
/**
* Project: yxt-supervise(宇信通监管) <br/>
@ -52,9 +51,13 @@ public interface PurchaseRequisitionStoreMapper extends BaseMapper<PurchaseRequi
@Update("update purchase_requisition_store set detailPrice=#{detailPrice} where sid=#{sid} and storeCode=#{storeCode}")
void updateDetailsPriceForBatch(@Param("sid") String mainSid, @Param("storeCode") String storeCode, @Param("detailPrice") String price);
@Select("select * from purchase_requisition_store where mainSid=#{mainSid} and storeCode=#{storeCode}")
@Select("select * from purchase_requisition_store where mainSid=#{mainSid} and storeCode=#{storeCode} limit 1")
PurchaseRequisitionStore selectByMainSidAndStoreCode(@Param("storeCode") String storeCode, @Param("mainSid") String mainSid);
@Delete("delete from purchase_requisition_store where mainSid=#{mainSid} ")
void clearByMainSid(@Param("mainSid") String mainSid);
//@Update("update purchase_requisition_store set name=#{msg} where id=#{id}")
//IPage<PurchaseRequisitionStoreVo> voPage(IPage<PurchaseRequisitionStore> page, @Param(Constants.WRAPPER) QueryWrapper<PurchaseRequisitionStore> qw);

47
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java

@ -26,18 +26,26 @@
package com.yxt.supervise.portal.biz.purchaserequisitionstore;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStore;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStoreQuery;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStoreVo;
import com.yxt.anrui.portal.api.purchaserequisitiontobaccodetails.PurchaseRequisitionTobaccoDetails;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.portal.biz.purchaserequisitiontobaccodetails.PurchaseRequisitionTobaccoDetailsService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* Project: yxt-supervise(宇信通监管) <br/>
* File: PurchaseRequisitionStoreService.java <br/>
@ -54,6 +62,9 @@ import org.springframework.stereotype.Service;
@Service
public class PurchaseRequisitionStoreService extends MybatisBaseService<PurchaseRequisitionStoreMapper, PurchaseRequisitionStore> {
@Autowired
private PurchaseRequisitionTobaccoDetailsService purchaseRequisitionTobaccoDetailsService;
public PagerVo<PurchaseRequisitionStore> listPage(PagerQuery<PurchaseRequisitionStoreQuery> pq) {
PurchaseRequisitionStoreQuery query = pq.getParams();
QueryWrapper<PurchaseRequisitionStore> qw = createQueryWrapper(query);
@ -82,7 +93,6 @@ public class PurchaseRequisitionStoreService extends MybatisBaseService<Purchase
}
if (StringUtils.isNotBlank(query.getPrice())) {
qw.eq("price", query.getPrice());
}
@ -94,6 +104,7 @@ public class PurchaseRequisitionStoreService extends MybatisBaseService<Purchase
public void updateDetailsPrice(String sid, String price) {
baseMapper.updateDetailsPrice(sid, price);
}
public void updateDetailsPrice(String mainSid, String storeCode, String price) {
baseMapper.updateDetailsPriceForBatch(mainSid, storeCode, price);
}
@ -101,4 +112,38 @@ public class PurchaseRequisitionStoreService extends MybatisBaseService<Purchase
public PurchaseRequisitionStore selectByMainSidAndStoreCode(String storeCode, String sid) {
return baseMapper.selectByMainSidAndStoreCode(storeCode, sid);
}
public void clearAllByMainSid(String mainSid) {
List<String> sidList = listSidByMainSid(mainSid);
if (!sidList.isEmpty()) {
purchaseRequisitionTobaccoDetailsService.clearByMainSids(sidList);
}
baseMapper.clearByMainSid(mainSid);
}
public List<String> listSidByMainSid(String mainSid) {
List<String> list = new ArrayList<>();
List<PurchaseRequisitionStore> sList = listByMainSid(mainSid);
sList.forEach(st -> list.add(st.getSid()));
return list;
}
public List<PurchaseRequisitionStore> listByMainSid(String mainSid) {
QueryWrapper<PurchaseRequisitionStore> qw = new QueryWrapper<>();
qw.eq("mainSid", mainSid);
return baseMapper.selectList(qw);
}
public List<PurchaseRequisitionStoreVo> listVoByMainSid(String mainSid) {
List<PurchaseRequisitionStoreVo> list = new ArrayList<>();
List<PurchaseRequisitionStore> elist = listByMainSid(mainSid);
for (PurchaseRequisitionStore entity : elist) {
PurchaseRequisitionStoreVo vo = new PurchaseRequisitionStoreVo();
BeanUtil.copyProperties(entity,vo,true);
List<PurchaseRequisitionTobaccoDetails> detailsList = purchaseRequisitionTobaccoDetailsService.listByMainSid(entity.getSid());
vo.setDetailsList(detailsList);
list.add(vo);
}
return list;
}
}

10
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java

@ -28,10 +28,7 @@ package com.yxt.supervise.portal.biz.purchaserequisitiontobacco;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStore;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
@ -58,6 +55,7 @@ public interface PurchaseRequisitionTobaccoMapper extends BaseMapper<PurchaseReq
@Select("select * from purchase_requisition_tobacco where code like CONCAT('%',#{date},'%') ")
List<PurchaseRequisitionTobacco> selectByDateForCode(@Param("date") String date);
@Select("SELECT '市烟草' supplierName,prtd.prodName prodName,SUM(prtd.ddl) ddl,prtd.price price\n" +
"FROM `purchase_requisition_tobacco_details` prtd \n" +
"LEFT JOIN `purchase_requisition_store` prs ON prtd.`mainSid`=prs.`sid` \n" +
@ -65,6 +63,7 @@ public interface PurchaseRequisitionTobaccoMapper extends BaseMapper<PurchaseReq
"WHERE prt.`purchaseDate`=#{date} " +
"GROUP BY prtd.prodName")
List<Map<String, String>> selectDdinfo(@Param("date") String date);
@Select("SELECT SUM(prtd.price) price\n" +
"FROM `purchase_requisition_tobacco_details` prtd\n" +
"LEFT JOIN `purchase_requisition_store` prs ON prtd.`mainSid`=prs.`sid` \n" +
@ -72,6 +71,9 @@ public interface PurchaseRequisitionTobaccoMapper extends BaseMapper<PurchaseReq
"WHERE prt.`purchaseDate`=#{date} ")
Map<String, String> selectDdzje(@Param("date") String date);
@Delete("delete from purchase_requisition_tobacco where code=#{code}")
void clearByCode(@Param("code") String orderCode);
//@Update("update purchase_requisition_tobacco set name=#{msg} where id=#{id}")
//IPage<PurchaseRequisitionTobaccoVo> voPage(IPage<PurchaseRequisitionTobacco> page, @Param(Constants.WRAPPER) QueryWrapper<PurchaseRequisitionTobacco> qw);

23
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java

@ -27,6 +27,7 @@ package com.yxt.supervise.portal.biz.purchaserequisitiontobacco;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoQuery;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -71,6 +72,7 @@ public class PurchaseRequisitionTobaccoRest {
/**
* 在途商品统计条件207家报烟店范围审核通过的烟草采购订单230105开始中商品明细有未入库的记录
*
* @return
*/
@ApiOperation("烟草在途")
@ -97,6 +99,7 @@ public class PurchaseRequisitionTobaccoRest {
purchaseRequisitionTobaccoService.saveOrUpdate(entity);
return rb.success();
}
@ApiOperation(" ")
@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ResultBean importBrandSort(@RequestParam("filename") MultipartFile file) {
@ -104,6 +107,7 @@ public class PurchaseRequisitionTobaccoRest {
purchaseRequisitionTobaccoService.readBrandPeriodSorXls1(file);
return rb.success();
}
@ApiOperation("删除记录")
@GetMapping("/del/{ids}")
public ResultBean del(@PathVariable("ids") String ids) {
@ -119,4 +123,23 @@ public class PurchaseRequisitionTobaccoRest {
PurchaseRequisitionTobacco entity = purchaseRequisitionTobaccoService.fetchById(id);
return rb.success().setData(entity);
}
@ApiOperation("上传并解析《烟草系统采购订单及明细.xlsx》文件")
@RequestMapping(value = "/importOrderXlsx", method = RequestMethod.POST)
public ResultBean importOrderXlsx(@RequestParam("filename") MultipartFile file) {
ResultBean rb = ResultBean.fireFail();
String sid = purchaseRequisitionTobaccoService.readOrderXlsx(file);
return rb.success().setData(sid);
}
@ApiOperation("获取一条记录")
@GetMapping("/fetchVoBySid")
public ResultBean<PurchaseRequisitionTobaccoVo> fetchVoBySid(@RequestParam("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
PurchaseRequisitionTobaccoVo entity = purchaseRequisitionTobaccoService.fetchVoBySid(sid);
if (entity == null)
return rb.setMsg("未得到烟草采购订单数据");
return rb.success().setData(entity);
}
}

163
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java

@ -33,8 +33,10 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStore;
import com.yxt.anrui.portal.api.purchaserequisitionstore.PurchaseRequisitionStoreVo;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoQuery;
import com.yxt.anrui.portal.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -42,6 +44,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.FileUploadResult;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.portal.biz.purchaserequisitionstore.PurchaseRequisitionStoreService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -71,6 +74,9 @@ import java.util.*;
public class PurchaseRequisitionTobaccoService extends MybatisBaseService<PurchaseRequisitionTobaccoMapper, PurchaseRequisitionTobacco> {
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private PurchaseRequisitionStoreService purchaseRequisitionStoreService;
public PagerVo<PurchaseRequisitionTobacco> listPage(PagerQuery<PurchaseRequisitionTobaccoQuery> pq) {
PurchaseRequisitionTobaccoQuery query = pq.getParams();
QueryWrapper<PurchaseRequisitionTobacco> qw = createQueryWrapper(query);
@ -195,6 +201,7 @@ public class PurchaseRequisitionTobaccoService extends MybatisBaseService<Purcha
log.info("list:{}", JSONObject.toJSONString(list));
log.info("zje:{}", JSONObject.toJSONString(zje));
}
public void readBrandPeriodSorXls1(MultipartFile file) {
ResultBean<FileUploadResult> fub = fileUploadComponent.uploadFile(file, "PurchaseRequisitionTobacco");
@ -203,6 +210,7 @@ public class PurchaseRequisitionTobaccoService extends MybatisBaseService<Purcha
long millis = System.currentTimeMillis();
ExcelUtil.read07BySax(fp, -1, createRowHandler());
}
private RowHandler createRowHandler() {
return new RowHandler() {
@ -213,6 +221,7 @@ public class PurchaseRequisitionTobaccoService extends MybatisBaseService<Purcha
Map<String, Object> map = new HashMap<>();
int i = 0;
int j = 0;
@Override
public void handle(int sheetIndex, long rowNum, List<Object> r) {
map.put("sid", sid);
@ -326,4 +335,158 @@ public class PurchaseRequisitionTobaccoService extends MybatisBaseService<Purcha
}
};
}
public String readOrderXlsx(MultipartFile file) {
ResultBean<FileUploadResult> fub = fileUploadComponent.uploadFile(file, "PurchaseRequisitionTobacco");
String filePath = fub.getData().getFilePath();
String fp = fileUploadComponent.getUploadPath() + filePath;
String orderSid = UUID.randomUUID().toString();
ExcelUtil.read07BySax(fp, 0, createRowHandlerWithSid(orderSid));
return orderSid;
}
private RowHandler createRowHandlerWithSid(String orderSid) {
return new RowHandler() {
List<PurchaseRequisitionStore> toInsertList = new ArrayList<>();
Map<String, Object> orderMap = new HashMap<>();
@Override
public void handle(int sheetIndex, long rowNum, List<Object> r) {
orderMap.put("sid", orderSid);
if (rowNum == 1) {
orderMap.put("code", r.get(2));
String tdrCode_s = r.get(4).toString();
String[] split = tdrCode_s.split("\\[");
String s = split[1];
String replace = s.replace("]", "");
orderMap.put("tdrCode", replace);//填单人
orderMap.put("tdrName", split[0]);//填单人
orderMap.put("purchaseDate", r.get(6));//填单时间
orderMap.put("supplierName", r.get(6));//
orderMap.put("supplierCode", r.get(6));//
}
if (rowNum == 2) {
String s = r.get(2).toString();
String[] split = s.split("]");
orderMap.put("supplierName", split[1]);//
String s1 = split[0];
String replace = s1.replace("[", "");
orderMap.put("supplierCode", replace);//
String o = r.get(4).toString();
// String[] split1 = o.split("]");
orderMap.put("warehousePosition", o.substring(3));
// String s2 = split1[0];
// String replace1 = s2.replace("[", "");
orderMap.put("warehousePositionCode", o.substring(0, 3));
orderMap.put("arrivalDate", r.get(6));
}
if (rowNum == 3) {
String s = r.get(2).toString();
String[] split = s.split("\\[");
orderMap.put("buyerName", split[0]);//
String s1 = split[1];
String replace = s1.replace("]", "");
orderMap.put("buyerCode", replace);//
String s3 = r.get(4).toString();
String substring = s3.substring(s3.indexOf("[") + 1, s3.indexOf("]"));
String substring1 = s3.substring(s3.indexOf("]") + 1, s3.length());
orderMap.put("purchasingOrgCode", substring);
orderMap.put("purchasingOrgName", substring1);
String expiryDate = r.get(6) == null ? "" : r.get(6).toString();
orderMap.put("expiryDate", expiryDate);
}
if (rowNum == 4) {
String completionStatus = r.get(6) == null ? "" : r.get(6).toString();
orderMap.put("completionStatus", completionStatus);
orderMap.put("completionStatus", "0");
}
if (rowNum > 5) {
Map<String, Object> sd_map = new HashMap<>();
String o = "" + r.get(3);
if (StringUtils.isNotBlank(o) && o.length() > 9) {
try {
sd_map.put("yCode", r.get(2));//卷烟代码
String[] split = o.split("]");
String substring = split[0].substring(split[0].indexOf("[") + 1, split[0].length());
sd_map.put("storeCode", substring);//门店代码
sd_map.put("storeName", split[1]);//门店名称
sd_map.put("price", r.get(4));//金额
sd_map.put("pc", r.get(5));//批次
sd_map.put("mainSid", orderSid);//关联sid
PurchaseRequisitionStore sd = new PurchaseRequisitionStore();
BeanUtil.fillBeanWithMap(sd_map, sd, true);
toInsertList.add(sd);
} catch (Exception e) {
e.printStackTrace();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
baseMapper.insertIntoImportDataInfo(sdf.format(new Date()), "烟草数据导入第" + rowNum + "出现异常" + e.getMessage());
System.err.println("i=" + rowNum + ",value=null");
}
}
log.info("productInformation:{}", JSONObject.toJSONString(sd_map));
log.info("rowNum:{}", rowNum);
}
}
@Override
public void handleCell(int sheetIndex, long rowIndex, int cellIndex, Object value, CellStyle xssfCellStyle) {
RowHandler.super.handleCell(sheetIndex, rowIndex, cellIndex, value, xssfCellStyle);
}
@Override
public void doAfterAllAnalysed() {
if (orderMap != null && !orderMap.isEmpty()) {
String orderCode = ("" + orderMap.get("purchaseDate")).replace(".", "");
PurchaseRequisitionTobaccoService.this.clearAllByCode(orderCode);
PurchaseRequisitionTobacco sd = new PurchaseRequisitionTobacco();
BeanUtil.fillBeanWithMap(orderMap, sd, true);
sd.setCode(orderCode);
baseMapper.insert(sd);
}
if (toInsertList != null && !toInsertList.isEmpty()) {
purchaseRequisitionStoreService.saveBatch(toInsertList);
}
RowHandler.super.doAfterAllAnalysed();
}
};
}
public void clearAllByCode(String orderCode) {
PurchaseRequisitionTobacco tt = fetchByCode(orderCode);
if (tt == null)
return;
purchaseRequisitionStoreService.clearAllByMainSid(tt.getSid());
baseMapper.clearByCode(orderCode);
}
/**
* 通过单号查找订单信息
*
* @param orderCode
* @return
*/
public PurchaseRequisitionTobacco fetchByCode(String orderCode) {
QueryWrapper<PurchaseRequisitionTobacco> qw = new QueryWrapper<>();
qw.eq("code", orderCode);
List<PurchaseRequisitionTobacco> list = baseMapper.selectList(qw);
if (list == null || list.isEmpty())
return null;
return list.get(0);
}
public PurchaseRequisitionTobaccoVo fetchVoBySid(String sid) {
QueryWrapper<PurchaseRequisitionTobacco> qw = new QueryWrapper<>();
qw.eq("sid", sid);
List<PurchaseRequisitionTobacco> list = baseMapper.selectList(qw);
if (list == null || list.isEmpty())
return null;
PurchaseRequisitionTobacco entity = list.get(0);
PurchaseRequisitionTobaccoVo vo = new PurchaseRequisitionTobaccoVo();
BeanUtil.copyProperties(entity, vo, true);
List<PurchaseRequisitionStoreVo> storeVoList = purchaseRequisitionStoreService.listVoByMainSid(sid);
vo.setStoreList(storeVoList);
return vo;
}
}

9
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobaccodetails/PurchaseRequisitionTobaccoDetailsRest.java

@ -82,6 +82,7 @@ public class PurchaseRequisitionTobaccoDetailsRest {
purchaseRequisitionTobaccoDetailsService.saveOrUpdate(entity);
return rb.success();
}
@ApiOperation("导入门店的明细根据汇总表中门店数据的sid")
@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ResultBean importBrandSort(@RequestParam("filename") MultipartFile file, @RequestParam(name = "sid", required = false) String sid) {
@ -89,6 +90,7 @@ public class PurchaseRequisitionTobaccoDetailsRest {
purchaseRequisitionTobaccoDetailsService.readBrandPeriodSorXls1(file, sid);
return rb.success();
}
@ApiOperation("根据汇总表的sid批量导入门店的明细")
@RequestMapping(value = "/importBrandSortBatch", method = RequestMethod.POST)
public ResultBean importBrandSortBatch(@RequestParam("filename") List<MultipartFile> file, @RequestParam(name = "sid", required = false) String sid) {
@ -98,6 +100,7 @@ public class PurchaseRequisitionTobaccoDetailsRest {
}
return rb.success();
}
@ApiOperation("删除记录")
@GetMapping("/del/{ids}")
public ResultBean del(@PathVariable("ids") String ids) {
@ -113,4 +116,10 @@ public class PurchaseRequisitionTobaccoDetailsRest {
PurchaseRequisitionTobaccoDetails entity = purchaseRequisitionTobaccoDetailsService.fetchById(id);
return rb.success().setData(entity);
}
@ApiOperation("根据汇总表的sid批量导入门店的明细")
@RequestMapping(value = "/importCsvBatch", method = RequestMethod.POST)
public ResultBean importCsvBatch(@RequestParam("filename") List<MultipartFile> files, @RequestParam(name = "sid") String sid) {
return purchaseRequisitionTobaccoDetailsService.importCsvBatch(files, sid);
}
}

96
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitiontobaccodetails/PurchaseRequisitionTobaccoDetailsService.java

@ -42,8 +42,10 @@ import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.portal.biz.purchaserequisitionstore.PurchaseRequisitionStoreService;
import com.yxt.supervise.portal.biz.purchaserequisitiontobacco.PurchaseRequisitionTobaccoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -80,6 +82,9 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
private FileUploadComponent fileUploadComponent;
@Resource
private PurchaseRequisitionStoreService purchaseRequisitionStoreService;
@Autowired
private PurchaseRequisitionTobaccoService purchaseRequisitionTobaccoService;
public PagerVo<PurchaseRequisitionTobaccoDetails> listPage(PagerQuery<PurchaseRequisitionTobaccoDetailsQuery> pq) {
PurchaseRequisitionTobaccoDetailsQuery query = pq.getParams();
QueryWrapper<PurchaseRequisitionTobaccoDetails> qw = createQueryWrapper(query);
@ -105,6 +110,7 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
return qw;
}
public void readBrandPeriodSorXls1(MultipartFile file, String sid) {
CsvReader csvReader = CsvUtil.getReader();
@ -123,7 +129,8 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
"零售指导价": "70.00\t",
"金额": "184.50\t",
"厂家名称": "河北中烟\t"*/
try{ String sp = hm.get("商品").toString().trim();
try {
String sp = hm.get("商品").toString().trim();
String pfj = hm.get("批发价").toString().trim();
String jydm = hm.get("卷烟代码").toString().trim();
String ddl = hm.get("订单量").toString().trim();
@ -157,6 +164,7 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
baseMapper.batchInsert(ls);
purchaseRequisitionStoreService.updateDetailsPrice(sid, bigDecimal.toString());
}
public void importBrandSortBatch(MultipartFile file, String sid) {
CsvReader csvReader = CsvUtil.getReader();
File f = this.multiToFile(file);
@ -179,7 +187,8 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
"零售指导价": "70.00\t",
"金额": "184.50\t",
"厂家名称": "河北中烟\t"*/
try{ String sp = hm.get("商品").toString().trim();
try {
String sp = hm.get("商品").toString().trim();
String pfj = hm.get("批发价").toString().trim();
String jydm = hm.get("卷烟代码").toString().trim();
String ddl = hm.get("订单量").toString().trim();
@ -214,8 +223,10 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
baseMapper.batchInsert(ls);
purchaseRequisitionStoreService.updateDetailsPrice(purchaseRequisitionStore.getSid(), storeCode, bigDecimal.toString());
}
/**
* MultipartFile转file
*
* @param multipartFile
* @return
*/
@ -243,6 +254,7 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
int i = 0;
// int j = 0;
BigDecimal bigDecimal = new BigDecimal("0");
@Override
public void handle(int sheetIndex, long rowNum, List<Object> r) {
if (rowNum > 0) {
@ -304,4 +316,84 @@ public class PurchaseRequisitionTobaccoDetailsService extends MybatisBaseService
}
};
}
public void clearByMainSids(List<String> mainsidList) {
mainsidList.forEach(mainsid -> baseMapper.deleteByMainSid(mainsid));
}
public List<PurchaseRequisitionTobaccoDetails> listByMainSid(String mainSid) {
QueryWrapper<PurchaseRequisitionTobaccoDetails> qw = new QueryWrapper<>();
qw.eq("mainSid", mainSid);
return baseMapper.selectList(qw);
}
public ResultBean importCsvBatch(List<MultipartFile> files, String sid) {
ResultBean rb = ResultBean.fireFail();
if (files == null || files.isEmpty())
return rb.setMsg("没有上传文件");
if (StringUtils.isBlank(sid))
return rb.setMsg("没有订单ID");
List<PurchaseRequisitionTobaccoDetails> toInsertList = new ArrayList<>();
Map<String, String> priceMap = new HashMap<>();
List<String> sidList = new ArrayList<>();
for (MultipartFile file : files) {
CsvReader csvReader = CsvUtil.getReader();
File f = this.multiToFile(file);
BufferedReader reader = ResourceUtil.getReader(f.getPath(), CharsetUtil.CHARSET_GBK);
List<HashMap> rows = csvReader.read(reader, HashMap.class);
String filename = file.getOriginalFilename();//365[0100]省直店
String[] split = filename.split("]");
String s = split[0];
String storeCode = s.replace("365[", "");
PurchaseRequisitionStore purchaseRequisitionStore = purchaseRequisitionStoreService.selectByMainSidAndStoreCode(storeCode, sid);
if (purchaseRequisitionStore == null)
return rb.setMsg(filename + " 没有对应订单记录");
String mainSid = purchaseRequisitionStore.getSid();
int i = 0;
BigDecimal bigDecimal = new BigDecimal("0");
for (HashMap hm : rows) {
try {
String sp = hm.get("商品").toString().trim();
String pfj = hm.get("批发价").toString().trim();
String jydm = hm.get("卷烟代码").toString().trim();
String ddl = hm.get("订单量").toString().trim();
String yhl = hm.get("要货量").toString().trim();
String lszdj = hm.get("零售指导价").toString().trim();
String je = hm.get("金额").toString().trim();
String cjmc = hm.get("厂家名称").toString().trim();
PurchaseRequisitionTobaccoDetails p = new PurchaseRequisitionTobaccoDetails();
p.setCjmc(cjmc);
p.setDdl(ddl);
p.setLszdj(lszdj);
p.setPfj(pfj);
BigDecimal price = new BigDecimal(je.trim());
bigDecimal = bigDecimal.add(price);
p.setPrice(je);
p.setProdName(sp);
p.setYCode(jydm);
p.setYhl(yhl);
p.setMainSid(mainSid);
toInsertList.add(p);
i++;
} catch (Exception e) {
e.printStackTrace();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
baseMapper.insertIntoImportDataInfo(sdf.format(new Date()), "烟草数据明细导入第" + i + "出现异常" + e.getMessage());
System.err.println("i=" + i + ",value=null");
}
}
sidList.add(mainSid);
priceMap.put(mainSid, bigDecimal.toString());
}
this.clearByMainSids(sidList);
this.saveBatch(toInsertList);
for (String key : priceMap.keySet()) {
purchaseRequisitionStoreService.updateDetailsPrice(key, priceMap.get(key));
}
return rb.success();
}
}

Loading…
Cancel
Save