package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
import com.core.common.SnowflakeIdWorker;
|
import com.zy.asrs.entity.RequestLog;
|
import com.zy.asrs.entity.WaitPakin;
|
import com.zy.asrs.entity.WrkDetl;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.common.model.BillDto;
|
import com.zy.common.model.MatnrDto;
|
import com.zy.common.service.ErpService;
|
import com.zy.common.service.wms.ReplenishDto;
|
import com.zy.common.service.wms.Result;
|
import com.zy.common.service.wms.WmsService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Optional;
|
|
/**
|
* Created by vincent on 2020/7/6
|
*/
|
@Slf4j
|
@Service
|
public class WorkLogHandler extends AbstractHandler<String> {
|
|
@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 SnowflakeIdWorker snowflakeIdWorker;
|
@Autowired
|
private WmsService wmsService;
|
|
@Transactional
|
public ReturnT<String> start(WrkMast wrkMast) {
|
try {
|
|
// 入库
|
if (wrkMast.getWrkSts() == 5) {
|
|
// 全板入库
|
if (wrkMast.getIoType() == 1) {
|
String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
|
// 上报给erp
|
List<MatnrDto> matnrDtos = new ArrayList<>();
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
for (WrkDetl wrkDetl : wrkDetls) {
|
MatnrDto dto = new MatnrDto();
|
dto.setMatnr(wrkDetl.getMatnr());
|
dto.setCount(wrkDetl.getAnfme());
|
matnrDtos.add(dto);
|
}
|
List<BillDto> dtos = new ArrayList<>();
|
for (MatnrDto dto : matnrDtos) {
|
BillDto billDto = new BillDto();
|
billDto.setMatnr(dto.getMatnr());
|
billDto.setQty(dto.getCount());
|
dtos.add(billDto);
|
}
|
if (!erpService.uploadBill(dtos, 34, docNum)) {
|
exceptionHandle("无法上报至erp[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 入库通知单
|
if (!Cools.isEmpty(wrkMast.getBarcode())) {
|
// 保存入库通知档历史档
|
if (!waitPakinLogService.save(wrkMast.getBarcode())) {
|
exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 删除入库通知档
|
if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
|
exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
}
|
// 拣料再入库
|
} else if (wrkMast.getIoType() == 53) {
|
// 非销售订单出库,需要补货到平仓
|
if (!wrkMast.getPdcType().equals("Y")) {
|
List<ReplenishDto> replenishDtos = new ArrayList<>();
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
for (WrkDetl wrkDetl : wrkDetls) {
|
ReplenishDto param = new ReplenishDto();
|
param.setMatnr(wrkDetl.getMatnr());
|
param.setCount(wrkDetl.getAnfme());
|
param.setWorkNo(wrkMast.getWrkNo());
|
replenishDtos.add(param);
|
}
|
Result result = wmsService.replenish(replenishDtos);
|
if (result.getCode() != 200) {
|
exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
}
|
|
}
|
|
// 出库
|
} else if (wrkMast.getWrkSts() == 15) {
|
// 非销售订单出库,需要补货到平仓
|
if (Cools.isEmpty(wrkMast.getPdcType()) || !wrkMast.getPdcType().equals("Y")) {
|
List<ReplenishDto> replenishDtos = new ArrayList<>();
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
for (WrkDetl wrkDetl : wrkDetls) {
|
ReplenishDto param = new ReplenishDto();
|
param.setMatnr(wrkDetl.getMatnr());
|
param.setCount(wrkDetl.getAnfme());
|
param.setWorkNo(wrkMast.getWrkNo());
|
replenishDtos.add(param);
|
}
|
Result result = wmsService.replenish(replenishDtos);
|
if (result.getCode() != 200) {
|
exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
// 销售订单
|
} else {
|
if (wrkMast.getIoType() == 101) {
|
Double more = Optional.ofNullable(wrkMast.getRefWrkno()).orElse(0.0D);
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (more > 0 && !Cools.isEmpty(wrkDetls)) {
|
WrkDetl wrkDetl = wrkDetls.get(0);
|
ReplenishDto param = new ReplenishDto();
|
param.setMatnr(wrkDetl.getMatnr());
|
param.setCount(more);
|
param.setWorkNo(wrkMast.getWrkNo());
|
List<ReplenishDto> replenishDtos = new ArrayList<>();
|
replenishDtos.add(param);
|
Result result = wmsService.replenish(replenishDtos);
|
if (result.getCode() != 200) {
|
exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo());
|
}
|
}
|
}
|
}
|
}
|
|
|
|
// 保存工作主档历史档
|
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) {
|
e.printStackTrace();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg(e.getMessage());
|
}
|
return SUCCESS;
|
}
|
|
}
|