diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java index d7812dd..745883e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java @@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil; import com.ruoyi.api.domain.ReMaterialParam; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.domain.WmsJobRequest; +import com.ruoyi.api.service.IToErpService; import com.ruoyi.api.service.IToWmsService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.log.domain.RequestLog; @@ -23,6 +24,9 @@ import java.util.Map; @RequestMapping("/api2erp") public class ToErpApiController { + @Autowired + private IToErpService toErpService; + /** * 入库完成回传 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/RequestEnter.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/RequestEnter.java index 9707e8f..da9996c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/RequestEnter.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/RequestEnter.java @@ -8,7 +8,12 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class RequestEnter { + //物料码 private String trayCode; + //物料大小 1-5 private String size; + //入库位置 private String entranceId; + //入库楼层 1-一楼 2-二楼 + private String floor; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java new file mode 100644 index 0000000..d16a951 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java @@ -0,0 +1,12 @@ +package com.ruoyi.api.service; + +import java.util.Map; + +/** + * 作业统计 Service 接口 + */ +public interface IToErpService { + + + Map saveTransferBill(); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java new file mode 100644 index 0000000..8dd6a63 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java @@ -0,0 +1,32 @@ +package com.ruoyi.api.service.impl; + +import cn.hutool.http.HttpUtil; +import com.ruoyi.api.mapper.JobStatisticsMapper; +import com.ruoyi.api.service.IJobStatisticsService; +import com.ruoyi.api.service.IToErpService; +import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.job.mydojob.domain.MydoJob; +import com.ruoyi.job.mydojob.mapper.MydoJobMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 作业统计 Service 实现 + */ +@Service +public class ToErpServiceImpl implements IToErpService { + + + @Override + public Map saveTransferBill() { + HashMap map = new HashMap<>(); + map.put("code","200"); + return map; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index 40a3078..adbc379 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.api.domain.ReMaterialParam; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.domain.RequestEnterResponse; import com.ruoyi.api.domain.WmsJobRequest; +import com.ruoyi.api.service.IToErpService; import com.ruoyi.api.service.IToWmsService; import com.ruoyi.bas.BasProduct.domain.BasProduct; import com.ruoyi.bas.BasProduct.service.IBasProductService; @@ -27,6 +28,8 @@ import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.agv.domain.AgvContainerTask; import com.ruoyi.device.agv.service.IAgvContainerTaskService; +import com.ruoyi.in.erp.domain.TransferBillCallback; +import com.ruoyi.in.erp.service.ITransferBillCallbackService; import com.ruoyi.in.stockin.domain.InStockin; import com.ruoyi.in.stockin.service.IInStockinService; import com.ruoyi.in.stockindetail.domain.InStockinDetail; @@ -40,6 +43,7 @@ import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService; import com.ruoyi.out.tagTask.domain.TagTask; import com.ruoyi.out.tagTask.service.ITagTaskService; import lombok.extern.slf4j.Slf4j; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -77,6 +81,14 @@ public class ToWmsServiceImpl implements IToWmsService { private IBasProductService basProductService; @Autowired private IBasJobIdService basJobIdService; + @Autowired + private IToErpService toErpService; + @Autowired + private ITransferBillCallbackService transferBillCallbackService; + @Autowired + private IInStockinService inStockinService; + @Autowired + private IInStockinDetailService inStockinDetailService; @Override @@ -87,6 +99,13 @@ public class ToWmsServiceImpl implements IToWmsService { } log.info("扫码内容{}", requestEnter.getTrayCode()); + //生成调拨单 + Map saveTransferBill = toErpService.saveTransferBill(); + if (!"200".equals(saveTransferBill.get("code"))) { + return AjaxResult.error("生成调拨单失败"); + } + log.info("生成调拨单{}", saveTransferBill); + //解析扫码内容 String trayCode = requestEnter.getTrayCode(); String[] split = trayCode.split(" "); @@ -106,8 +125,9 @@ public class ToWmsServiceImpl implements IToWmsService { String jx = decode[2]; String fx = decode[3]; String xlh = decode[4]; - log.info("二维码详情 productId:{} model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}",productId, model, color, serial, v, hz, ph, nw, gw, erpBill, xh, jx, fx, xlh); + log.info("二维码详情 productId:{} model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}", productId, model, color, serial, v, hz, ph, nw, gw, erpBill, xh, jx, fx, xlh); + //查询物料信息 BasProduct basProductParam = new BasProduct(); basProductParam.setProductId(productId); List basProducts = basProductService.selectBasProductList(basProductParam); @@ -115,20 +135,47 @@ public class ToWmsServiceImpl implements IToWmsService { return AjaxResult.error("物料信息不存在"); } BasProduct basProduct = basProducts.get(0); - /*if (!basProduct.getSpec().equals(requestEnter.getSize())) { - return AjaxResult.error("规格不一致"); - }*/ + String inOrOutType = null; + String inStockId = null; + String inStockDetailId = null; + if ("1".equals(requestEnter.getFloor())) { + //一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量 + InStockin inStockinParam = new InStockin(); + inStockinParam.setErpBill(erpBill); + List inStockins = inStockinService.selectInStockinListApi(inStockinParam); + if (CollUtil.isEmpty(inStockins)) { + return AjaxResult.error("单据不存在"); + } + InStockin inStockin = inStockins.get(0); + if ("1".equals(inStockin.getStatus()) ||"2".equals(inStockin.getStatus())){ + inStockin.setStatus("3"); + inStockinService.updateInStockin(inStockin); + } + inOrOutType = inStockin.getInType(); + inStockId = inStockin.getStockinId(); + InStockinDetail inStockinDetailParam = new InStockinDetail(); + inStockinDetailParam.setStockinId(inStockin.getStockinGuid()); + inStockinDetailParam.setProductId(basProduct.getProductId()); + List inStockinDetails = inStockinDetailService.selectInStockinDetailList(inStockinDetailParam); + if (CollUtil.isEmpty(inStockinDetails)) { + return AjaxResult.error("单据明细不存在"); + } + InStockinDetail inStockinDetail = inStockinDetails.get(0); + inStockDetailId = inStockinDetail.getStockinDetailId(); + inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1)))); + inStockinDetailService.updateInStockinDetail(inStockinDetail); + } else { + inOrOutType = "1"; + } //生成作业 MydoJob mydoJob = new MydoJob(); mydoJob.setStatus("1"); - //mydoJob.setDepartmentId(Convert.toStr(SecurityUtils.getDeptId())); - mydoJob.setInOrOut("1"); + mydoJob.setInOrOut(inOrOutType); mydoJob.setExecutionPhase("1"); mydoJob.setTrayCode(basJobIdService.getJobId("TP")); mydoJob.setWarehouseId("01"); - BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); //todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积 判断巷道1 还是巷道2 switch (requestEnter.getSize()) { case "1": @@ -144,6 +191,7 @@ public class ToWmsServiceImpl implements IToWmsService { } //根据巷道查找货位 + BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); @@ -173,12 +221,24 @@ public class ToWmsServiceImpl implements IToWmsService { mydoJobDetail.setSpare9(fx); mydoJobDetail.setUnit(jx); mydoJobDetail.setSpec(basProduct.getSpec()); + mydoJobDetail.setInOrOutId(inStockId); + mydoJobDetail.setInOrOutDId(inStockDetailId); + mydoJobDetail.setStockinId(inStockId); mydoJobDetailService.insertMydoJobDetail(mydoJobDetail); //修改货位状态 basCargoSpace.setStatus("3"); basCargoSpaceService.updateBasCargoSpace(basCargoSpace); + + //存入调拨单数据 已生成 + TransferBillCallback transferBillCallback = new TransferBillCallback(); + transferBillCallback.setJobId(mydoJob.getJobId()); + transferBillCallback.setErpBill(erpBill); + transferBillCallback.setType("1"); + transferBillCallback.setStatus("1"); + transferBillCallbackService.insertTransferBillCallback(transferBillCallback); + return AjaxResult.success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java index 214dd1d..6d1c8e1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java @@ -29,6 +29,7 @@ public interface IInStockinService * @return 入库单据集合 */ public List selectInStockinList(InStockin inStockin); + public List selectInStockinListApi(InStockin inStockin); /** * 新增入库单据 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java index 359141e..6143a8a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java @@ -63,6 +63,18 @@ public class InStockinServiceImpl implements IInStockinService return inStockinMapper.selectInStockinList(inStockin); } + /** + * 查询入库单据列表 + * + * @param inStockin 入库单据 + * @return 入库单据 + */ + @Override + public List selectInStockinListApi(InStockin inStockin) + { + return inStockinMapper.selectInStockinList(inStockin); + } + /** * 新增入库单据 * @@ -84,8 +96,9 @@ public class InStockinServiceImpl implements IInStockinService } InStockin inStockin = new InStockin(); - inStockin.setStockinGuid(iBasJobIdService.getJobId("RKD")); - inStockin.setStockinId(iBasJobIdService.getJobId("RKD")); + String rkdId = iBasJobIdService.getJobId("RKD"); + inStockin.setStockinGuid(rkdId); + inStockin.setStockinId(rkdId); inStockin.setCreateDate(DateUtil.formatDateTime(DateUtil.date())); inStockin.setCreateManId(Convert.toStr(SecurityUtils.getUserId())); inStockin.setDepartmentNo(Convert.toStr(SecurityUtils.getDeptId())); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java index c37b660..03179c4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java @@ -16,6 +16,8 @@ import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MessageUtils; +import com.ruoyi.in.erp.domain.TransferBillCallback; +import com.ruoyi.in.erp.service.ITransferBillCallbackService; import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.service.IInStockinDetailService; import com.ruoyi.job.mydojob.domain.MydoJob; @@ -67,15 +69,13 @@ public class MydoJobServiceImpl implements IMydoJobService { @Autowired private IBasCargoSpaceService basCargoSpaceService; @Autowired - private ICheckDifferenceRecordService checkDifferenceRecordService; - @Autowired - private IOutExceptionRecordService outExceptionRecordService; - @Autowired private PdaService pdaService; @Autowired private IBasWarehouseService basWarehouseService; @Autowired private IToWcsService iToWcsService; + @Autowired + private ITransferBillCallbackService transferBillCallbackService; /** @@ -230,25 +230,17 @@ public class MydoJobServiceImpl implements IMydoJobService { */ @Override @Transactional(rollbackFor = Exception.class) - public AjaxResult manualCompleted(MydoJob mydoJob, int type) { - String jobId = mydoJob.getJobId(); - MydoJob job = selectMydoJobByJobId(jobId); - if (job == null) { + public AjaxResult manualCompleted(MydoJob mydoJobParam, int type) { + String jobId = mydoJobParam.getJobId(); + MydoJob mydoJob = selectMydoJobByJobId(jobId); + if (mydoJob == null) { return AjaxResult.warn("任务不存在"); } - if (type == 0) { - //todo 取消堆垛机任务 或者 agv任务 - /*AjaxResult ajaxResult = iToWcsService.cancelTaskByTaskNo(job.getTaskNo()); - if (!ajaxResult.isSuccess()){ - return AjaxResult.error(""); - }*/ - } - //入库任务 MydoJobDetail param = new MydoJobDetail(); param.setJobId(jobId); List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId()); + BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId()); if (CollUtil.isNotEmpty(mydoJobDetails)) { List list = new ArrayList<>(); for (MydoJobDetail mydoJobDetail : mydoJobDetails) { @@ -260,13 +252,13 @@ public class MydoJobServiceImpl implements IMydoJobService { inStockinDetailService.updateInStockinDetail(inStockinDetail); } //正常库存 - list.add(getStockByInStockinDetail(mydoJobDetail, job, "1")); + list.add(getStockByInStockinDetail(mydoJobDetail, mydoJob, "1")); } //修改货位状态 basCargoSpace.setStatus("2"); - basCargoSpace.setTrayCode(job.getTrayCode()); - basCargoSpace.setCargoSpaceId(job.getCargoSpaceId()); + basCargoSpace.setTrayCode(mydoJob.getTrayCode()); + basCargoSpace.setCargoSpaceId(mydoJob.getCargoSpaceId()); basCargoSpaceService.updateBasCargoSpace(basCargoSpace); //插入库存信息 @@ -279,8 +271,21 @@ public class MydoJobServiceImpl implements IMydoJobService { // 插入任务历史表 删除任务 insertHistory(mydoJob.getJobId()); - //todo 插入回传表 - + //修改回传单据表状态 + if ("1".equals(mydoJob.getInOrOut())){ + //调拨单 + TransferBillCallback transferBillCallbackParam = new TransferBillCallback(); + transferBillCallbackParam.setJobId(mydoJob.getJobId()); + List transferBillCallbacks = transferBillCallbackService.selectTransferBillCallbackList(transferBillCallbackParam); + if (CollUtil.isNotEmpty(transferBillCallbacks)){ + for (TransferBillCallback transferBillCallback : transferBillCallbacks) { + transferBillCallback.setStatus("2"); + transferBillCallbackService.updateTransferBillCallback(transferBillCallback); + } + } + }else { + //todo 退料入库 其它入库 + } return AjaxResult.success(); } else { return AjaxResult.warn("不存在子作业"); diff --git a/ruoyi-ui/src/views/in/stockIn/index.vue b/ruoyi-ui/src/views/in/stockIn/index.vue index fa69847..3adb92f 100644 --- a/ruoyi-ui/src/views/in/stockIn/index.vue +++ b/ruoyi-ui/src/views/in/stockIn/index.vue @@ -438,7 +438,7 @@ export default { this.getList() }) }else { - this.$modal.msgError('只有未确认的单据可以确认') + this.$modal.msgError('只有执行中的单据可以确认') } }, /** 打印条码按钮操作 */