package com.ruoyi.pda.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.service.IToWmsService; import com.ruoyi.bas.warehouse.domain.BasWarehouse; import com.ruoyi.bas.warehouse.mapper.BasWarehouseMapper; import com.ruoyi.check.commit.domain.CheckCommitRecord; import com.ruoyi.check.commit.service.ICheckCommitRecordService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.service.IInStockinDetailService; import com.ruoyi.job.mydojob.domain.MydoJob; import com.ruoyi.job.mydojob.service.IMydoJobService; import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService; import com.ruoyi.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.mapper.PdaMapper; import com.ruoyi.pda.trayMsg.domain.TrayMsg; import com.ruoyi.pda.trayMsg.service.ITrayMsgService; import com.ruoyi.stock.stock.domain.BasStock; import com.ruoyi.stock.stock.mapper.BasStockMapper; import com.ruoyi.system.service.ISysRoleService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service @Slf4j public class PdaServiceImp implements PdaService { @Autowired private PdaMapper pdaMapper; @Autowired private IMydoJobService mydoJobService; @Autowired ISysRoleService sysRoleService; @Autowired IInStockinDetailService inStockinDetailService; @Autowired ITrayMsgService trayMsgService; @Autowired private ICheckCommitRecordService checkCommitRecordService; @Autowired private IToWmsService iToWmsService; @Autowired private IMydoJobDetailService mydoJobDetailService; @Autowired private BasWarehouseMapper basWarehouseMapper; @Autowired private BasStockMapper basStockMapper; @Override public AjaxResult addInJob(RequestEnter requestEnter) { if(requestEnter.getEntranceId()!=null && "G1005".equals(requestEnter.getEntranceId())){ MydoJob mydoJob = new MydoJob(); mydoJob.setEntranceId(requestEnter.getEntranceId()); mydoJob.setStatus("1"); MydoJob mydoJob1 = mydoJobService.selectMydoJobByEntranceId(mydoJob); if(mydoJob1!=null){ return AjaxResult.error("该入口已有补码作业"); } } AjaxResult ajaxResult = iToWmsService.requestEnterByTrayCode(requestEnter); return ajaxResult; } @Override public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure) { String trayCode = trayCodeMakeSure.getTrayCode(); MydoJob mydoJob = new MydoJob(); mydoJob.setStatus("3"); mydoJob.setTrayCode(trayCode); List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob); return AjaxResult.success(mydoJobDetails); } @Override public AjaxResult selectDetailByPDTray(TrayCodeMakeSure trayCodeMakeSure) { MydoJob mydoJob = new MydoJob(); mydoJob.setTrayCode(trayCodeMakeSure.getTrayCode()); List mydoJobDetails = mydoJobDetailService.selectPdMydoJobDetailListByExit(mydoJob); return AjaxResult.success(mydoJobDetails); } @Override public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) { MydoJob mydoJobParam = new MydoJob(); mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode()); mydoJobParam.setStatus("3"); List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJobParam); BasWarehouse basWarehouse = basWarehouseMapper.selectBasWarehouseByWarehouseId(mydoJobDetails.get(0).getWarehouseId()); if("2".equals(basWarehouse.getWarehouseType()) && mydoJobDetails.isEmpty()){ BasStock basStock = new BasStock(); basStock.setTrayCode(trayCodeMakeSure.getTrayCode()); List basStocks = basStockMapper.selectBasStockList(basStock); basStockMapper.deleteBasStockByStockIds((String[]) basStocks.stream().map(BasStock::getStockId).toArray()); } if(mydoJobDetails.isEmpty() && "1".equals(basWarehouse.getWarehouseType())){ return AjaxResult.error("该物料没有出库作业,请检查"); } HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMakeSure.getTrayCode()); pdaMapper.outMakeSure(map); String result = map.get("v_result").toString(); if ("10".equals(result)) { return AjaxResult.success(); } else { return AjaxResult.error( map.get("v_resultmsg").toString()); } } @Override //@Transactional(rollbackFor = Exception.class) public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) { MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCodeMakeSure.getTrayCode()); if (mydoJob == null){ return AjaxResult.error("该托盘没有盘点作业,请检查"); } List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(mydoJob.getJobId()); if(mydoJobDetails.isEmpty()){ return AjaxResult.error("该物料没有盘点出库作业,请检查"); } List mydoJobDetailList = trayCodeMakeSure.getMaterials(); if (CollUtil.isNotEmpty(mydoJobDetailList)) { boolean flag = mydoJobDetailList.stream().anyMatch(x -> StrUtil.isEmpty(x.getStockId()) && "0".equals(x.getInQuantity())); if (flag) { return AjaxResult.warn("新增物料数量不能为空!"); } for (MydoJobDetail mydoJobDetail : mydoJobDetailList) { //插入盘点提交表 CheckCommitRecord checkCommitRecord = new CheckCommitRecord(); checkCommitRecord.setQuantity(mydoJobDetail.getInQuantity()); checkCommitRecord.setTrayCode(mydoJob.getTrayCode()); checkCommitRecord.setStockId(mydoJobDetail.getStockId()); checkCommitRecord.setSpare1(mydoJobDetail.getInOrOutDId()); checkCommitRecord.setSpare2(mydoJobDetail.getProductId()); checkCommitRecord.setSpare3(mydoJobDetail.getSupplierId()); checkCommitRecord.setSpare4(mydoJobDetail.getSpare1()); checkCommitRecord.setSpare5(mydoJobDetail.getSpare2()); checkCommitRecord.setSpare6(mydoJobDetail.getSpare3()); checkCommitRecord.setSpare7(mydoJobDetail.getSpare4()); checkCommitRecord.setSpare8(mydoJobDetail.getSpare5()); checkCommitRecord.setSpare9(mydoJobDetail.getSpare6()); checkCommitRecord.setSpare10(mydoJobDetail.getSpare7()); checkCommitRecord.setSpare11(mydoJobDetail.getLotNo()); checkCommitRecord.setSpare12(mydoJobDetail.getPrintDate()); checkCommitRecord.setSpare13(mydoJobDetail.getSpare9()); checkCommitRecord.setSpare14(mydoJobDetail.getSpare8()); checkCommitRecordService.insertCheckCommitRecord(checkCommitRecord); } } HashMap map = new HashMap<>(); map.put("v_tray_code", mydoJob.getTrayCode()); pdaMapper.checkMakeSure(map); //iToWcsService.pushInMydoJob(); String result = map.get("v_result").toString(); if ("10".equals(result)) { return AjaxResult.success(map.get("v_resultmsg").toString()); } else { throw new RuntimeException(map.get("v_resultmsg").toString()); } } @Override public AjaxResult bindMsg(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMsg.getTrayCode()); map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId()); map.put("v_quantity", Integer.parseInt(trayCodeMsg.getInQuantity())); pdaMapper.bindMsg(map); String result = map.get("v_result").toString(); if ("10".equals(result)) { return AjaxResult.success(map.get("v_resultmsg").toString()); }else{ return AjaxResult.error(map.get("v_resultmsg").toString()); } } @Override public AjaxResult selectBindTrayMsg(TrayMsg trayMsg) { trayMsg.setStockinDetailId(null); trayMsg.setQuantity(null); List trayMsgs = trayMsgService.selectTrayMsgList(trayMsg); return AjaxResult.success(trayMsgs); } @Override public AjaxResult selectStockinDetail(String stockinDetailId) { InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(stockinDetailId); int i = Integer.parseInt(inStockinDetail.getQuantity()) - Integer.parseInt(inStockinDetail.getScanNum()); inStockinDetail.setQuantityX(String.valueOf(i)); return AjaxResult.success(inStockinDetail); } @Override public AjaxResult rkSure(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMsg.getTrayCode()); map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); pdaMapper.rkSure(map); String result = map.get("v_result").toString(); if ("10".equals(result)){ return AjaxResult.success(map.get("v_resultmsg").toString()); }else{ return AjaxResult.error(map.get("v_resultmsg").toString()); } } @Override public AjaxResult rkSurepk(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMsg.getTrayCode()); map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); pdaMapper.rkSure(map); AjaxResult ajaxResult = mydoJobService.manualCompleted(mydoJobService.selectMydoJobByTrayCode(trayCodeMsg.getTrayCode()), 1); return ajaxResult; } @Override public AjaxResult ktpout(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); map.put("v_exit_id", trayCodeMsg.getExitId()); pdaMapper.ktpout(map); String result = map.get("v_result").toString(); if ("10".equals(result)){ return AjaxResult.success(map.get("v_resultmsg").toString()); }else{ return AjaxResult.error(map.get("v_resultmsg").toString()); } } @Override public AjaxResult ktpin(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMsg.getTrayCode()); // map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); pdaMapper.ktpin(map); String result = map.get("v_result").toString(); if ("10".equals(result)){ return AjaxResult.success(map.get("v_resultmsg").toString()); }else{ return AjaxResult.error(map.get("v_resultmsg").toString()); } } }