package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.core.common.Cools;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.utils.VersionUtils;
|
import com.zy.common.service.erp.ErpService;
|
import com.zy.common.service.erp.entity.OutStockBillEntry;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* Created by vincent on 2020/7/6
|
*/
|
@Slf4j
|
@Service
|
@RestController
|
public class WorkLogHandler extends AbstractHandler<Exception> {
|
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private WrkMastLogService wrkMastLogService;
|
@Autowired
|
private WrkDetlService wrkDetlService;
|
@Autowired
|
private WrkDetlLogService wrkDetlLogService;
|
@Autowired
|
private WaitPakinService waitPakinService;
|
@Autowired
|
private WaitPakinLogService waitPakinLogService;
|
@Autowired
|
private ErpService erpService;
|
@Autowired
|
private OutStockService outStockService;
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
@Autowired
|
private OutStockDanService outStockDanService;
|
@Autowired
|
private LocNormalService locNormalService;
|
@Autowired
|
private LocNormalLogService locNormalLogService;
|
|
@Transactional
|
public ReturnT<Exception> start(WrkMast wrkMast) {
|
try {
|
|
if (!Cools.isEmpty(wrkMast.getBarcode())) {
|
Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode());
|
// erp关联订单处理
|
List<WaitPakin> waitPakins = waitPakinService.selectList(wrapper);
|
for (WaitPakin waitPakin : waitPakins) {
|
if (!Cools.isEmpty(waitPakin.getMemo())) {
|
if (waitPakin.getMemo().equals("原材料")) {
|
if (!erpService.incrementPakIn(waitPakin.getSupplier(), waitPakin.getMatnr(), waitPakin.getAnfme())) {
|
exceptionHandle("更新ERP原材料入库数据[matnr={0}]失败", waitPakin.getMatnr());
|
}
|
} else if (waitPakin.getMemo().equals("成品")) {
|
if (!erpService.incrementCPakIn(waitPakin.getSupplier(), waitPakin.getMatnr(), waitPakin.getAnfme())) {
|
exceptionHandle("更新ERP成品入库数据[matnr={0}]失败", waitPakin.getMatnr());
|
}
|
}
|
}
|
|
}
|
|
// 保存入库通知档历史档
|
waitPakinLogService.save(wrkMast.getBarcode());
|
// 删除入库通知档
|
waitPakinService.delete(wrapper);
|
}
|
|
if (!Cools.isEmpty(wrkMast.getPdcType()) && wrkMast.getPdcType().equals("Y")){
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (Cools.isEmpty(wrkDetls)){
|
log.error("出库(移库)作业时,未查询到工作明细");
|
}else {
|
for (WrkDetl wrkDetl : wrkDetls) {
|
EntityWrapper<LocNormal> locNormalEntityWrapper = new EntityWrapper<>();
|
locNormalEntityWrapper.eq("matnr",wrkDetl.getMatnr());
|
locNormalEntityWrapper.eq("mnemonic",wrkDetl.getMnemonic());
|
locNormalEntityWrapper.eq("state","1");
|
locNormalEntityWrapper.eq("warehouse",wrkMast.getLogErrMemo());
|
LocNormal locNormal = locNormalService.selectOne(locNormalEntityWrapper);
|
if (Cools.isEmpty(locNormal)){
|
Date now = new Date();
|
LocNormal locNormal1 = new LocNormal();
|
locNormal1.setMatnr(wrkDetl.getMatnr());
|
locNormal1.setMaktx(wrkDetl.getMaktx());
|
locNormal1.setLgnum(wrkDetl.getLgnum());
|
locNormal1.setType(wrkDetl.getType());
|
locNormal1.setMnemonic(wrkDetl.getMnemonic());
|
locNormal1.setSupplier(wrkDetl.getSupplier());
|
locNormal1.setWarehouse(wrkMast.getLogErrMemo());
|
locNormal1.setAnfme(BigDecimal.valueOf(wrkDetl.getAnfme()));
|
locNormal1.setModiTime(now);
|
locNormal1.setModiUser(9527L);
|
locNormal1.setAppeUser(9527L);
|
locNormal1.setAppeTime(now);
|
locNormal1.setState("1");
|
boolean insert = locNormalService.insert(locNormal1);
|
if (!insert){
|
log.error("出库(移库)作业时,插入平库物料失败");
|
}
|
// 生成平仓出入库记录
|
LocNormalLog locLog = new LocNormalLog();
|
VersionUtils.setLocNormalLog(locLog, locNormal1);
|
locLog.setAnfme(locNormal1.getAnfme().doubleValue());
|
locLog.setIoType(1);
|
locLog.setCreateTime(new Date());
|
locLog.setCreateUser(9527L);
|
if (!locNormalLogService.insert(locLog)) {
|
String logStr = JSON.toJSONString(locLog);
|
log.info("平仓入库记录插入失败,数据:" + logStr);
|
}
|
}else {
|
locNormal.setAnfme(locNormal.getAnfme().add(BigDecimal.valueOf(wrkDetl.getAnfme())));
|
boolean update = locNormalService.update(locNormal, locNormalEntityWrapper);
|
if (!update){
|
log.error("出库(移库)作业时,更新平库物料失败");
|
}
|
}
|
}
|
}
|
}
|
// erp关联出库订单处理
|
if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 53) {
|
EntityWrapper<WrkDetl> wrapper = new EntityWrapper<>();
|
// 获取工作档内物料清单
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(wrapper.eq("wrk_no", wrkMast.getWrkNo()).and().isNotNull("supplier"));
|
for (WrkDetl wrkDetl: wrkDetls) {
|
if (!Cools.isEmpty(wrkDetl)) {
|
Integer FInterI = outStockDanService.queryOutStockFInterID(wrkDetl.getSupplier()); // 获取出库单主表主键
|
if (!Cools.isEmpty(FInterI)) {
|
if (!erpService.incrementCPakOut(FInterI, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getSupplier())) {
|
exceptionHandle("[xtyasrs_dual]更新ERP成品出库数据[matnr={0},FBillNo={1}]失败", wrkDetl.getMatnr(),wrkDetl.getSupplier());
|
}
|
if (!outStockDanService.incrementCPakOut(FInterI, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getSupplier())) {
|
exceptionHandle("[xtyasrs]更新ERP成品出库数据[matnr={0},FBillNo={1}]失败", wrkDetl.getMatnr(),wrkDetl.getSupplier());
|
}
|
}
|
}
|
}
|
}
|
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
exceptionHandle("删除工作主档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 保存工作明细档历史档
|
if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
|
// exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作明细档
|
if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
|
// exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
} catch (Exception e) {
|
log.error("fail", e);
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setContent(e);
|
}
|
return SUCCESS;
|
}
|
|
}
|