赠品入库
前台页面:GiftsWarehousing.vue 方法:listZprk
前台js文件:zprk.js
查询方法对应的后台类:SpareZprkController 查询参数:ZZPJH
查询方法对应的SQL语句:
select ZZPJH, BUKRS, WERKS, CGHTH, MATNR, MAKTX, ZZPJHH, MEINS, YRKSL, ELIFN from spare_zprk
where ZZPJH = 'H190220002'
查询结果如下:
它的HdInfo和InInfo里的数据,都是从上面的SQL语句中获取。
但是HdInfo只有一个,InInfo可以有多个。
前台页面展示的数据如下:
提交方法的后台类:SpareWarehousingController
方法
@PostMapping("/gifts")
@Transactional
public AjaxResult commercial(@RequestBody GiftsWarehousing giftsWarehousing) {
// 入库信息
GiftsHdInfo giftsHdInfo = giftsWarehousing.getHdInfo();
List<GiftsLnInfo> giftsLnInfos = giftsWarehousing.getLnInfo();
// 获取仓库信息
SpareWarehouse spareWarehouse = spareWarehouseService.selectSpareWarehouseById(Long.valueOf(giftsHdInfo.getWarehouseId()));
// 获取当前用户
String createBy = getUsername();
try {
// 处理交易头表
SpareTradehd spareTradehd = new SpareTradehd();
spareTradehd.setBwart("101");
spareTradehd.setDocumentNum(giftsHdInfo.getZzpjh());
spareTradehd.setDocumentDate(giftsHdInfo.getDocumentDate());
spareTradehd.setPostingDate(giftsHdInfo.getPostingDate());
spareTradehd.setCompany(giftsHdInfo.getBukrs());
spareTradehd.setSupplier(giftsHdInfo.getElifn());
spareTradehd.setTradeType("05");
spareTradehd.setCreateBy(createBy);
spareTradehd.setCreateTime(new Date());
spareTradehdService.insertSpareTradehd(spareTradehd);
Long hd_id = spareTradehd.getId();
for (GiftsLnInfo giftsLnInfo : giftsLnInfos) {
// 从内存中获取批次
String batch = SpareUtils.getByWDM(redisCache, spareWarehouse.getWarehouseCode(), giftsLnInfo.getMatnr());
// 处理批次
SpareBatch spareBatch = spareBatchService.selectSpareBatchByBatch(batch);
// 如果批次不存在则创建批次
if (spareBatch == null) {
SpareBatch sb = new SpareBatch();
sb.setBatch(batch);
sb.setMatnr(giftsLnInfo.getMatnr());
sb.setMatxt(giftsLnInfo.getMaktx());
sb.setUnit(giftsLnInfo.getMeins());
sb.setStockinDate(new Date());
spareBatchService.insertSpareBatch(sb);
}
if(giftsLnInfo.getActualRecevieAmount()!=null && !("").equals(giftsLnInfo.getActualRecevieAmount())){
SpareBatchDetail spareBatchDetail = new SpareBatchDetail();
spareBatchDetail.setBatch(batch);
spareBatchDetail.setDetailType(giftsLnInfo.getType());
spareBatchDetail.setIsLimit(giftsLnInfo.getType().equals("预留占用")?"1":"0");
spareBatchDetail.setAmount(giftsLnInfo.getActualRecevieAmount());
spareBatchDetail.setDept("公共部门");
spareBatchDetail.setBeginingDept("公共部门");
spareBatchDetail.setCreateBy(createBy);
spareBatchDetail.setCreateTime(new Date());
spareBatchDetailService.insertSpareBatchDetail(spareBatchDetail);
Long batchDeatilId = spareBatchDetail.getId();
// 存明细历史表
SpareBatchDetailHistory spareBatchDetailHistory = new SpareBatchDetailHistory();
spareBatchDetailHistory.setBatch(batch);
spareBatchDetailHistory.setAmount(giftsLnInfo.getActualRecevieAmount());
spareBatchDetailHistory.setDetailType(giftsLnInfo.getType());
spareBatchDetailHistory.setDetailChangeDate(new Date());
spareBatchDetailHistory.setDetailChangeDirection("I");
spareBatchDetailHistory.setDetailChangeReason("赠品入库");
spareBatchDetailHistory.setDetailChangeDept(giftsLnInfo.getMeins());
spareBatchDetailHistory.setDocumentNum(giftsHdInfo.getZzpjh());
spareBatchDetailHistory.setDocumentLineNum(giftsLnInfo.getZzpjhh());
spareBatchDetailHistory.setBatchDetailId(String.valueOf(batchDeatilId));
spareBatchDetailHistory.setCreateBy(createBy);
spareBatchDetailHistory.setCreateTime(new Date());
spareBatchDetailHistoryService.insertSpareBatchDetailHistory(spareBatchDetailHistory);
// 上架,默认上到Z999999货架
SpareShelvesRecord shelvesRecord = new SpareShelvesRecord();
shelvesRecord.setBatch(batch);
shelvesRecord.setLocation(spareWarehouse.getWarehouseCode() + "Z999999");
shelvesRecord.setAmount(giftsLnInfo.getActualRecevieAmount());
shelvesRecord.setShelvesDate(new Date());
shelvesRecord.setShelvesPer(createBy);
shelvesRecord.setDirection("U");
shelvesRecord.setDocumentNum(giftsHdInfo.getZzpjh());
shelvesRecord.setCreateBy(createBy);
shelvesRecord.setCreateTime(new Date());
spareShelvesRecordService.insertSpareShelvesRecord(shelvesRecord);
// 处理库存
SpareInventory spareInventory = new SpareInventory();
spareInventory.setWareshouseCode(spareWarehouse.getWarehouseCode());
spareInventory.setLocationCode(spareWarehouse.getWarehouseCode() + "Z999999");
spareInventory.setMatnr(giftsLnInfo.getMatnr());
spareInventory.setMatxt(giftsLnInfo.getMaktx());
spareInventory.setBatch(batch);
spareInventory.setUnit(giftsLnInfo.getMeins());
spareInventory.setAmount(giftsLnInfo.getActualRecevieAmount());
spareInventory.setCreateBy(createBy);
spareInventory.setCreateTime(new Date());
spareInventoryService.insertSpareInventory(spareInventory);
// 处理交易行表
SpareTradeln spareTradeln = new SpareTradeln();
spareTradeln.setTradehdId(String.valueOf(hd_id));
spareTradeln.setMatnr(giftsLnInfo.getMatnr());
spareTradeln.setMatxt(giftsLnInfo.getMaktx());
spareTradeln.setDocumentLineNum(giftsLnInfo.getZzpjhh());
spareTradeln.setAmount(giftsLnInfo.getActualRecevieAmount());
spareTradeln.setWarehouseCode(spareWarehouse.getWarehouseCode());
spareTradeln.setBatch(batch);
spareTradeln.setCreateBy(createBy);
spareTradeln.setCreateTime(new Date());
spareTradeln.setRemark(giftsLnInfo.getRemark());
spareTradelnService.insertSpareTradeln(spareTradeln);
}
}
return AjaxResult.success();
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
商贸入库
前台页面:CommercialWarehousing.vue 方法:listSmrk
前台js文件:smrk.js
查询方法对应的后台类:SpareSmrkController 查询参数:ebeln
查询方法对应的SQL语句:
SELECT EBELN, EBELP, a.LIFNR,c.NAME1 lifnr_desc, a.BUKRS,
b.BUTXT BUKRS_DESC,BSTYP,BSART,BEDAT,MATNR,
TXZ01, a.WERKS,d.NAME1 werks_desc,LGORT,MEINS,MENGE
FROM spare_smrk a
LEFT JOIN ( SELECT DISTINCT BUKRS, BUTXT FROM spare_t001 ) b ON b.BUKRS = a.bukrs
LEFT JOIN spare_supplier c ON c.LIFNR = a.lifnr
LEFT JOIN spare_t001 d ON d.WERKS = a.werks
where EBELN = '4500005783'
查询结果如下:
它的HdInfo和InInfo里的数据,都是从上面的SQL语句中获取。
但是HdInfo只有一个,InInfo可以有多个。
前台页面的展示效果如下:
提交方法的后台类:SpareWarehousingController
方法
@PostMapping("/commercial")
@Transactional
public AjaxResult commercial(@RequestBody CommercialWarehousing commercialWarehousing) {
// 入库信息
CommercialHdInfo commercialHdInfo = commercialWarehousing.getHdInfo();
List<CommercialLnInfo> commercialLnInfos = commercialWarehousing.getLnInfo();
// 获取仓库信息
SpareWarehouse spareWarehouse = spareWarehouseService.selectSpareWarehouseById(Long.valueOf(commercialHdInfo.getWarehouseId()));
// 获取当前用户
String createBy = getUsername();
try {
// 处理交易头表
SpareTradehd spareTradehd = new SpareTradehd();
spareTradehd.setBwart("101");
spareTradehd.setDocumentNum(commercialHdInfo.getEbeln());
spareTradehd.setDocumentDate(commercialHdInfo.getDocumentDate());
spareTradehd.setPostingDate(commercialHdInfo.getPostingDate());
spareTradehd.setCompany(commercialHdInfo.getBukrs());
spareTradehd.setSupplier(commercialHdInfo.getLifnr());
spareTradehd.setTradeType("07");
spareTradehd.setCreateBy(createBy);
spareTradehd.setCreateTime(new Date());
spareTradehdService.insertSpareTradehd(spareTradehd);
Long hd_id = spareTradehd.getId();
for (CommercialLnInfo commercialLnInfo : commercialLnInfos) {
// 从内存中获取批次
String batch = SpareUtils.getByWDM(redisCache, spareWarehouse.getWarehouseCode(), commercialLnInfo.getMatnr());
// 处理批次
SpareBatch spareBatch = spareBatchService.selectSpareBatchByBatch(batch);
// 如果批次不存在则创建批次
if (spareBatch == null) {
SpareBatch sb = new SpareBatch();
sb.setBatch(batch);
sb.setMatnr(commercialLnInfo.getMatnr());
sb.setMatxt(commercialLnInfo.getTxz01());
sb.setUnit(commercialLnInfo.getMeins());
sb.setStockinDate(new Date());
spareBatchService.insertSpareBatch(sb);
}
if(commercialLnInfo.getActualRecevieAmount()!=null && !("").equals(commercialLnInfo.getActualRecevieAmount())){
SpareBatchDetail spareBatchDetail = new SpareBatchDetail();
spareBatchDetail.setBatch(batch);
spareBatchDetail.setDetailType(commercialLnInfo.getType());
spareBatchDetail.setIsLimit(commercialLnInfo.getType().equals("预留占用")?"1":"0");
spareBatchDetail.setAmount(commercialLnInfo.getActualRecevieAmount());
spareBatchDetail.setDept("公共部门");
spareBatchDetail.setBeginingDept("公共部门");
spareBatchDetail.setCreateBy(createBy);
spareBatchDetail.setCreateTime(new Date());
spareBatchDetailService.insertSpareBatchDetail(spareBatchDetail);
Long batchDeatilId = spareBatchDetail.getId();
// 存明细历史表
SpareBatchDetailHistory spareBatchDetailHistory = new SpareBatchDetailHistory();
spareBatchDetailHistory.setBatch(batch);
spareBatchDetailHistory.setAmount(commercialLnInfo.getActualRecevieAmount());
spareBatchDetailHistory.setDetailType(commercialLnInfo.getType());
spareBatchDetailHistory.setDetailChangeDate(new Date());
spareBatchDetailHistory.setDetailChangeDirection("I");
spareBatchDetailHistory.setDetailChangeReason("商贸采购入库");
spareBatchDetailHistory.setDetailChangeDept(commercialLnInfo.getMeins());
spareBatchDetailHistory.setDocumentNum(commercialHdInfo.getEbeln());
spareBatchDetailHistory.setDocumentLineNum(commercialLnInfo.getEbelp());
spareBatchDetailHistory.setBatchDetailId(String.valueOf(batchDeatilId));
spareBatchDetailHistory.setCreateBy(createBy);
spareBatchDetailHistory.setCreateTime(new Date());
spareBatchDetailHistoryService.insertSpareBatchDetailHistory(spareBatchDetailHistory);
// 上架,默认上到Z999999货架
SpareShelvesRecord shelvesRecord = new SpareShelvesRecord();
shelvesRecord.setBatch(batch);
shelvesRecord.setLocation(spareWarehouse.getWarehouseCode() + "Z999999");
shelvesRecord.setAmount(commercialLnInfo.getActualRecevieAmount());
shelvesRecord.setShelvesDate(new Date());
shelvesRecord.setShelvesPer(createBy);
shelvesRecord.setDirection("U");
shelvesRecord.setDocumentNum(commercialHdInfo.getEbeln());
shelvesRecord.setDocumentLineNum(commercialLnInfo.getEbelp());
shelvesRecord.setCreateBy(createBy);
shelvesRecord.setCreateTime(new Date());
spareShelvesRecordService.insertSpareShelvesRecord(shelvesRecord);
// 处理库存
SpareInventory spareInventory = new SpareInventory();
spareInventory.setWareshouseCode(spareWarehouse.getWarehouseCode());
spareInventory.setLocationCode(spareWarehouse.getWarehouseCode() + "Z999999");
spareInventory.setMatnr(commercialLnInfo.getMatnr());
spareInventory.setMatxt(commercialLnInfo.getTxz01());
spareInventory.setBatch(batch);
spareInventory.setUnit(commercialLnInfo.getMeins());
spareInventory.setAmount(commercialLnInfo.getActualRecevieAmount());
spareInventory.setCreateBy(createBy);
spareInventory.setCreateTime(new Date());
spareInventoryService.insertSpareInventory(spareInventory);
// 处理交易行表
SpareTradeln spareTradeln = new SpareTradeln();
spareTradeln.setTradehdId(String.valueOf(hd_id));
spareTradeln.setMatnr(commercialLnInfo.getMatnr());
spareTradeln.setMatxt(commercialLnInfo.getTxz01());
spareTradeln.setAmount(commercialLnInfo.getActualRecevieAmount());
spareTradeln.setWarehouseCode(spareWarehouse.getWarehouseCode());
spareTradeln.setBatch(batch);
spareTradeln.setDocumentLineNum(commercialLnInfo.getEbelp());
spareTradeln.setCreateBy(createBy);
spareTradeln.setCreateTime(new Date());
spareTradeln.setRemark(commercialLnInfo.getRemark());
spareTradelnService.insertSpareTradeln(spareTradeln);
}
}
return AjaxResult.success();
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
退库入库
前台页面:ReturnWarehousing.vue 方法:listMatdoc
前台js文件:matdoc.js
查询方法对应的后台类:SpareMatdocController 查询参数:mblnr
查询方法对应的SQL语句:
SELECT
MBLNR,MJAHR,VGART,BLART,BLDAT,BUDAT,CPUDT,CPUTM,
AEDAT,USNAM,BKTXT,ZEILE,BWART,a.MATNR,b.MAKTX,
WERKS,LGORT,SHKZG,WAERS,DMBTR,MENGE,a.MEINS,ERFMG,
ERFME,SGTXT,KOKRS,cast(RSNUM+0 as char) rsnum,
PRCTR,PS_PSP_PNR,RSPOS,c.amount return_amount
FROM spare_matdoc a
left join spare_mara b on b.matnr=a.matnr
left join (select document_num,document_line_num,sum(amount) amount from spare_batch_detail_history where detail_change_direction='I' group by document_num,document_line_num ) c
on c.document_num=a.MBLNR and c.document_line_num=a.ZEILE
where MBLNR = ''
执行查询之后发现:
spare_matdoc 表不存在。
看来这个流程并没有启用。
再去看看,入库的方法有没有。
咦,竟然有。
@PostMapping("/ret")
@Transactional
public AjaxResult ret(@RequestBody ReturnWarehousing returnWarehousing) {
// 入库信息
ReturnHdInfo returnHdInfo = returnWarehousing.getHdInfo();
List<ReturnLnInfo> returnLnInfos = returnWarehousing.getLnInfo();
// 获取仓库信息
SpareWarehouse spareWarehouse = spareWarehouseService.selectSpareWarehouseById(Long.valueOf(returnHdInfo.getWarehouseId()));
// 获取当前用户
String createBy = getUsername();
try {
// 处理交易头表
SpareTradehd spareTradehd = new SpareTradehd();
spareTradehd.setBwart("101");
spareTradehd.setDocumentNum(returnHdInfo.getMblnr());
spareTradehd.setDocumentDate(returnHdInfo.getDocumentDate());
spareTradehd.setPostingDate(returnHdInfo.getPostingDate());
spareTradehd.setTradeType("09");
spareTradehd.setCreateBy(createBy);
spareTradehd.setCreateTime(new Date());
spareTradehdService.insertSpareTradehd(spareTradehd);
Long hd_id = spareTradehd.getId();
for (ReturnLnInfo returnLnInfo : returnLnInfos) {
// 从内存中获取批次
String batch = SpareUtils.getByWDM(redisCache, spareWarehouse.getWarehouseCode(), returnLnInfo.getMatnr());
// 处理批次
SpareBatch spareBatch = spareBatchService.selectSpareBatchByBatch(batch);
// 如果批次不存在则创建批次
if (spareBatch == null) {
SpareBatch sb = new SpareBatch();
sb.setBatch(batch);
sb.setMatnr(returnLnInfo.getMatnr());
sb.setMatxt(returnLnInfo.getMaktx());
sb.setUnit(returnLnInfo.getMeins());
sb.setStockinDate(new Date());
spareBatchService.insertSpareBatch(sb);
}
// 根据预留查部门
String dept=null;
List<SpareResb> spareResbs = spareResbService.selectSpareResbByRsnum(Long.valueOf(returnLnInfo.getRsnum()));
if (spareResbs.size()>0){
dept = spareResbs.get(0).getKtext();
}
if (returnLnInfo.getActualRecevieAmount()!=null && !("").equals(returnLnInfo.getActualRecevieAmount())){
SpareBatchDetail spareBatchDetail = new SpareBatchDetail();
spareBatchDetail.setBatch(batch);
spareBatchDetail.setDetailType(returnLnInfo.getType());
spareBatchDetail.setIsLimit("0");
spareBatchDetail.setAmount(returnLnInfo.getActualRecevieAmount());
spareBatchDetail.setDept("公共部门");
spareBatchDetail.setBeginingDept(dept);
spareBatchDetail.setCreateBy(createBy);
spareBatchDetail.setCreateTime(new Date());
spareBatchDetailService.insertSpareBatchDetail(spareBatchDetail);
Long batchDeatilId = spareBatchDetail.getId();
// 存明细历史表
SpareBatchDetailHistory spareBatchDetailHistory = new SpareBatchDetailHistory();
spareBatchDetailHistory.setBatch(batch);
spareBatchDetailHistory.setAmount(returnLnInfo.getActualRecevieAmount());
spareBatchDetailHistory.setDetailType(returnLnInfo.getType());
spareBatchDetailHistory.setDetailChangeDate(new Date());
spareBatchDetailHistory.setDetailChangeDirection("I");
spareBatchDetailHistory.setDetailChangeReason("退库入库");
spareBatchDetailHistory.setDetailChangeDept(returnLnInfo.getMeins());
spareBatchDetailHistory.setDocumentNum(returnHdInfo.getMblnr());
spareBatchDetailHistory.setDocumentLineNum(returnLnInfo.getZeile());
spareBatchDetailHistory.setBatchDetailId(String.valueOf(batchDeatilId));
spareBatchDetailHistory.setCreateBy(createBy);
spareBatchDetailHistory.setCreateTime(new Date());
spareBatchDetailHistoryService.insertSpareBatchDetailHistory(spareBatchDetailHistory);
// 上架,默认上到Z999999货架
SpareShelvesRecord shelvesRecord = new SpareShelvesRecord();
shelvesRecord.setBatch(batch);
shelvesRecord.setLocation(spareWarehouse.getWarehouseCode() + "Z999999");
shelvesRecord.setAmount(returnLnInfo.getActualRecevieAmount());
shelvesRecord.setShelvesDate(new Date());
shelvesRecord.setShelvesPer(createBy);
shelvesRecord.setDirection("U");
shelvesRecord.setDocumentNum(returnHdInfo.getMblnr());
shelvesRecord.setCreateBy(createBy);
shelvesRecord.setCreateTime(new Date());
spareShelvesRecordService.insertSpareShelvesRecord(shelvesRecord);
// 处理库存
SpareInventory spareInventory = new SpareInventory();
spareInventory.setWareshouseCode(spareWarehouse.getWarehouseCode());
spareInventory.setLocationCode(spareWarehouse.getWarehouseCode() + "Z999999");
spareInventory.setMatnr(returnLnInfo.getMatnr());
spareInventory.setMatxt(returnLnInfo.getMaktx());
spareInventory.setBatch(batch);
spareInventory.setUnit(returnLnInfo.getMeins());
spareInventory.setAmount(returnLnInfo.getActualRecevieAmount());
spareInventory.setCreateBy(createBy);
spareInventory.setCreateTime(new Date());
spareInventoryService.insertSpareInventory(spareInventory);
// 处理交易行表
SpareTradeln spareTradeln = new SpareTradeln();
spareTradeln.setTradehdId(String.valueOf(hd_id));
spareTradeln.setMatnr(returnLnInfo.getMatnr());
spareTradeln.setMatxt(returnLnInfo.getMaktx());
spareTradeln.setDocumentLineNum(returnLnInfo.getZeile());
spareTradeln.setAmount(returnLnInfo.getActualRecevieAmount());
spareTradeln.setWarehouseCode(spareWarehouse.getWarehouseCode());
spareTradeln.setBatch(batch);
spareTradeln.setCreateBy(createBy);
spareTradeln.setCreateTime(new Date());
spareTradeln.setRemark(returnLnInfo.getRemark());
spareTradelnService.insertSpareTradeln(spareTradeln);
}
}
return AjaxResult.success();
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}