src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java
New file @@ -0,0 +1,101 @@ package com.zy.asrs.entity.param; import com.baomidou.mybatisplus.annotations.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; @Data @ApiModel(value = "CheckOrderDetlParams", description = "盘点调整参数") public class CheckOrderDetlParams implements Serializable { private static final long serialVersionUID = 1L; /** * 单据编号 */ @ApiModelProperty(value= "单据编号") @TableField("order_no") private String orderNo; /** * 数量 */ @ApiModelProperty(value= "数量") private BigDecimal anfme; @ApiModelProperty(value= "") @TableField("diff_qty") private BigDecimal diffQty; /** * 商品编码 */ @ApiModelProperty(value= "商品编码") private String matnr; /** * 商品名称 */ @ApiModelProperty(value= "商品名称") private String maktx; /** * 批号 */ @ApiModelProperty(value= "批号") private String batch; /** * 规格 */ @ApiModelProperty(value= "规格") private String specs; /** * 型号 */ @ApiModelProperty(value= "型号") private String model; /** * 三方编码 */ @ApiModelProperty(value= "三方编码") @TableField("three_code") private String threeCode; /** * 供应商 */ @ApiModelProperty(value= "供应商") private String supp; /** * 供应商编码 */ @ApiModelProperty(value= "供应商编码") @TableField("supp_code") private String suppCode; /** * 备用1 */ @ApiModelProperty(value= "备用1") private String standby1 = ""; /** * 备用1 */ @ApiModelProperty(value= "备用1") @TableField("box_type1") private String boxType1 = "1"; } src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -133,7 +133,7 @@ locMast.setLocSts("Q"); locMast.setModiTime(now); locMast.setModiUser(userId); if (!locCacheService.updateById(locMast)) { if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) { throw new CoolException("修改库位状态失败"); } } @@ -174,7 +174,7 @@ locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F"); locMast.setModiTime(now); locMast.setModiUser(userId); locCacheService.updateById(locMast); locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo())); } BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo())); @@ -189,7 +189,7 @@ throw new CoolException("更新源站点状态失败,目标库位状态:" + station.getLocSts()); } // 出库取消(修改源库位) } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() < 14) { } else if (wrkMast.getWrkSts() > 300 && wrkMast.getWrkSts() < 304) { locNo = wrkMast.getSourceLocNo(); // 出库 ===>> F.在库 if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { @@ -208,7 +208,8 @@ locMast.setLocSts("O"); locMast.setModiTime(now); locMast.setModiUser(userId); locCacheService.updateById(locMast); locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo())); // locCacheService.updateById(locMast); } BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo())); @@ -334,7 +335,8 @@ locMast.setLocSts(locSts); locMast.setModiTime(now); locMast.setModiUser(userId); boolean locMastRes = locCacheService.updateById(locMast); boolean locMastRes = locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo())); if (!wrkMastRes || !locMastRes) { throw new CoolException("保存数据失败"); } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -517,7 +517,8 @@ @Transactional(rollbackFor = Exception.class) public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) { Date now = new Date(); List<LocDto> locDtos = taskDto.getLocDtos(); List<LocDto> locDtos = taskDto.getLocDtos().stream().distinct().collect(Collectors.toList()); // Map<String, List<LocDto>> collect = taskDto.getLocDtos().stream().collect(Collectors.groupingBy(LocDto::getLocNo)); for (LocDto locDto : locDtos) { if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) { throw new CoolException("订单出库异常,请联系管理员"); @@ -554,25 +555,24 @@ throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); } // 生成工作档明细 for (LocDto locDto : taskDto.getLocDtos()) { for (LocDto locDto : locDtos) { if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { continue; } List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>() CheckOrderDetl checkOrderDetls = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>() .eq("loc_no", locDto.getLocNo()) .eq("matnr", locDto.getMatnr()) .eq(!Cools.isEmpty(locDto.getBatch()),"batch", locDto.getBatch()) .eq("order_no", locDto.getOrderNo()) ); .eq("supp_code", locDto.getSuppCode()) .eq("order_no", locDto.getOrderNo())); if (checkOrderDetls.size() > 1) { if (Objects.isNull(checkOrderDetls)) { throw new CoolException("数据大于1,请检查数据"); } WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(checkOrderDetls.get(0)); wrkDetl.setOrderId(checkOrderDetls.get(0).getId()); wrkDetl.sync(checkOrderDetls); wrkDetl.setOrderId(checkOrderDetls.getId()); wrkDetl.setZpallet(wrkMast.getBarcode()); wrkDetl.setIoTime(now); wrkDetl.setWrkNo(workNo); @@ -587,8 +587,8 @@ throw new CoolException("保存工作档明细失败"); } // 修改订单明细 checkOrderDetls.get(0).setStatus(2); if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))) { checkOrderDetls.setStatus(2); if (!checkOrderDetlService.updateById(checkOrderDetls)) { throw new CoolException("保存订单明细失败"); } } @@ -618,9 +618,9 @@ } // 获取库位 LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo())); int ioType = (taskDto.isAll() ? 101 : 103); int ioType = 103; // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); int workNo = commonService.getWorkNo(4); Task task = new Task(); task.setWrkNo(workNo) @@ -690,7 +690,7 @@ locCache.setLocSts(ioType == 101 ? "R" : "P"); locCache.setModiUser(userId); locCache.setModiTime(now); if (!locCacheService.updateById(locCache)) { if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) { throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo()); } } else { @@ -1388,8 +1388,7 @@ if (wrkMast.getIoType() == 107) { List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) { if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) { for (WrkDetl wrkDetl : wrkDetls) { CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>() .eq("loc_no", wrkMast.getSourceLocNo()) @@ -1397,8 +1396,10 @@ .eq("batch", wrkDetl.getBatch()) .eq("order_no", wrkDetl.getOrderNo()) ); checkOrderDetl.setStatus(1); checkOrderDetlService.updateById(checkOrderDetl); if (!Objects.isNull(checkOrderDetl)) { checkOrderDetl.setStatus(1); checkOrderDetlService.updateById(checkOrderDetl); } } CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", wrkDetls.get(0).getOrderNo())); List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId())); @@ -1406,8 +1407,10 @@ checkOrder.setSettle(is ? 1L : 12L); checkOrderService.updateById(checkOrder); } // if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) { // // // } } // // 订单关联 src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
@@ -1,20 +1,49 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.exception.CoolException; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.WrkMastLog; import com.zy.asrs.mapper.WrkDetlLogMapper; import com.zy.asrs.entity.WrkDetlLog; import com.zy.asrs.service.WrkDetlLogService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.service.WrkDetlService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.Objects; @Slf4j @Service("wrkDetlLogService") public class WrkDetlLogServiceImpl extends ServiceImpl<WrkDetlLogMapper, WrkDetlLog> implements WrkDetlLogService { @Autowired private WrkDetlService wrkDetlService; @Override @Transactional(rollbackFor = Exception.class) public boolean save(Integer workNo) { return this.baseMapper.save(workNo) > 0; List<WrkDetl> detlLogs = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) { log.error("数据错误:任务不存在!!"); // throw new CoolException("数据错误:任务不存在!!"); } else { detlLogs.forEach(WrkDetl -> { WrkDetlLog detlLog = new WrkDetlLog(); BeanUtils.copyProperties(WrkDetl, detlLog); if (!this.insert(detlLog)) { throw new CoolException("任务日志保存失败!!"); } }); } return true; } @Override src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
@@ -14,7 +14,7 @@ /** * 将已完成order和orderDetl移动到log表 */ @Scheduled(cron = "0/30 * * * * ?") @Scheduled(cron = "0 0 04 * * ?") public void execute(){ orderMoveHistoryHandler.start(); } src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,11 +1,15 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.CheckOrder; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderPakout; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.OrderPakoutService; import com.zy.asrs.service.OrderService; import com.zy.asrs.service.impl.OrderPakoutServiceImpl; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.OrderSyncHandler; import com.zy.asrs.utils.OrderInAndOutUtil; @@ -17,6 +21,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; /** @@ -35,6 +40,8 @@ @Value("${erp.switch.ErpReportOld}") private boolean ErpReportOld; @Autowired private OrderPakoutService orderPakoutService; @Scheduled(cron = "0 0 1 * * ? ") public void clearApiLog() { @@ -53,9 +60,9 @@ try { ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]再次转执行表失败:{}", order.getOrderNo(),result.getMsg()); log.error("单据[orderNo={}]再次转执行表失败:{}", order.getOrderNo(), result.getMsg()); } } catch (Exception e){ } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]再次转执行表失败", order.getOrderNo()); } @@ -67,19 +74,19 @@ public void completeAndReportOrderIssued() { // String erpReport = Parameter.get().getErpReport(); // if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { List<Order> orderList = orderService.selectComplete1(); List<Order> orderList = orderService.selectComplete1(); // List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).eq("status", 1).orderBy("create_time", true)); for (Order order : orderList) { try { ReturnT<String> result = orderSyncHandler.startOrderIssued(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]转执行表失败", order.getOrderNo()); } } catch (Exception e){ log.error(e.getMessage()); for (Order order : orderList) { try { ReturnT<String> result = orderSyncHandler.startOrderIssued(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]转执行表失败", order.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]转执行表失败", order.getOrderNo()); } } // } } @@ -88,25 +95,46 @@ public void completeAndReportOrderInAndOutUtil() { // String erpReport = Parameter.get().getErpReport(); // if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { List<Order> orders = OrderInAndOutUtil.selectComplete(null); for (Order order : orders) { try { ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]转上报表失败", order.getOrderNo()); } } catch (Exception e){ log.error(e.getMessage()); List<Order> orders = OrderInAndOutUtil.selectComplete(null); for (Order order : orders) { try { ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]转上报表失败", order.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]转上报表失败", order.getOrderNo()); } } // } } // @Scheduled(cron = "0/5 * * * * ? ") @Async("orderThreadPool") public void completePakoutOrder() { List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>() .in("doc_type", Arrays.asList(2)) .eq("settle", 4)); if (orderPakouts != null && orderPakouts.size() > 0) { for (OrderPakout orderPakout : orderPakouts) { try { ReturnT<String> result = orderSyncHandler.startConvertOrders(orderPakout); if (!result.isSuccess()) { log.error("单据[orderNo={}]转上报表失败", orderPakout.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]转上报表失败", orderPakout.getOrderNo()); } } } } @Scheduled(cron = "0/30 * * * * ? ") @Async("orderThreadPool") public void completeAndReportOrderReport() { if (!ErpReportOld){ if (!ErpReportOld) { return; } String erpReport = Parameter.get().getErpReport(); @@ -118,7 +146,6 @@ if (!result.isSuccess()) { log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); @@ -127,11 +154,13 @@ } } /**损溢单完结上报 */ /** * 损溢单完结上报 */ @Scheduled(cron = "0/15 * * * * ?") @Async("orderThreadPool") public void completeCheckOrderReport() { if (!ErpReportOld){ if (!ErpReportOld) { return; } String erpReport = Parameter.get().getErpReport(); src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -89,7 +89,9 @@ */ @Scheduled(cron = "0/5 * * * * ? ") private void autoPubTasks() { List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L, 1L))); List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("wrk_sts", Arrays.asList(11L, 1L)) .orderDesc(Arrays.asList("io_pri"))); if (wrkMasts.isEmpty()) { return; } @@ -97,8 +99,7 @@ listMap.keySet().forEach(key -> { List<WrkMast> wrkMasts1 = listMap.get(key); Collections.shuffle(wrkMasts1); Integer crnNos = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", key)); if (crnNos < 6) { try { wrkMasts1.forEach(wrkMast -> { WorkTaskParams params = new WorkTaskParams(); if (wrkMast.getIoType().equals(11)) { @@ -117,6 +118,8 @@ wcsApiService.pubWrkToWcs(params); } }); } catch (Exception e) { log.error(e.getMessage()); } }); } @@ -173,11 +176,17 @@ Collections.shuffle(tasks); tasks.forEach(wrkMast -> { CallAgvParams param = new CallAgvParams(); if (wrkMast.getIoType() == 1) { param.setWrkNo(wrkMast.getWrkNo() + ""); param.setOrgSite(wrkMast.getSourceStaNo()); param.setTarSite(wrkMast.getLocNo()); } else if (wrkMast.getIoType() == 110 ||wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){ if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53) { if (wrkMast.getIsNewIn().equals("XM1")) { param.setWrkNo(wrkMast.getWrkNo() + ""); param.setOrgSite(wrkMast.getSourceStaNo()); param.setTarSite(wrkMast.getStaNo()); } else { param.setWrkNo(wrkMast.getWrkNo() + ""); param.setOrgSite(wrkMast.getSourceStaNo()); param.setTarSite(wrkMast.getLocNo()); } } else if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){ param.setWrkNo(wrkMast.getWrkNo() + ""); param.setOrgSite(wrkMast.getSourceLocNo()); param.setTarSite(wrkMast.getStaNo()); src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
@@ -68,7 +68,7 @@ orderDetl.setUpdateTime(now); // orderDetlService.addToLogTable(orderDetl); OrderInAndOutUtil.addToLogTableOrderDetl(order.getPakinPakoutStatus$(),orderDetl); if (order.getPakinPakoutStatus() == 1){ if (order.getPakinPakoutStatus() == 1) { orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>() .eq("id",orderDetl.getId())); } else { src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,6 +1,7 @@ package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; @@ -19,9 +20,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.TaskDetlLogServiceImpl; import com.zy.asrs.service.impl.TaskDetlServiceImpl; import com.zy.asrs.service.impl.WrkDetlLogServiceImpl; import com.zy.asrs.service.impl.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.OrderInAndOutUtil; @@ -75,7 +74,13 @@ @Autowired private TaskDetlLogService taskDetlLogService; @Autowired private WrkDetlLogServiceImpl wrkDetlLogService; private WrkDetlLogService wrkDetlLogService; @Autowired private WaitPakinService waitPakinService; @Autowired private OrderDetlPakoutService orderDetlPakoutService; @Autowired private OrderPakoutService orderPakoutService; @Transactional @@ -279,15 +284,15 @@ orderDetls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); if (Objects.isNull(material)) { throw new CoolException(material.getMatnr() + "物料不存在"); throw new CoolException(material.getMatnr() + "物料不存在"); } ReportOrderParams itemParam = new ReportOrderParams(); LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() List<WrkDetlLog> wrkDetls = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>() .eq("matnr", detl.getMatnr()) .eq("three_code", detl.getThreeCode()) .eq("supp_code", detl.getSuppCode()) .eq("order_no", detl.getOrderNo())); if (Objects.isNull(locDetl)) { if (Objects.isNull(wrkDetls) || wrkDetls.isEmpty()) { ReportOrderParams itemParam = new ReportOrderParams(); // BS Code itemParam.setTotal_serial(detl.getThreeCode()) // 上报时,默认产品类型是null @@ -307,30 +312,34 @@ .setDamage_qty(0) // 上报时,默认差异数量是0 .setDiff_qty(0); reportOrderParams.add(itemParam); } else { // BS Code itemParam.setTotal_serial(detl.getThreeCode()) // 上报时,默认产品类型是null .setPro_type(material.getProType()) // 上报时,默认产品编码 .setPro_komcode(detl.getMatnr()) // 上报时,默认产品id是供应商编码 .setPro_id(detl.getSuppCode()) .setLocation_no(locDetl.getZpallet()) .setSj_emp(locDetl.getModiUser$()) .setLocation_type(MatLocType.getMatTag(material.getTagId() + "")) // 上报时,默认上报时间是更新时间 .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")) // 上报时,默认上报数量是订单数量 .setPick_qty(locDetl.getAnfme().intValue()) // 上报时,默认损坏数量是0 .setDamage_qty(0) // 上报时,默认差异数量是0 .setDiff_qty(0); wrkDetls.forEach(wrkDetl -> { ReportOrderParams itemParam = new ReportOrderParams(); // BS Code itemParam.setTotal_serial(detl.getThreeCode()) // 上报时,默认产品类型是null .setPro_type(material.getProType()) // 上报时,默认产品编码 .setPro_komcode(detl.getMatnr()) // 上报时,默认产品id是供应商编码 .setPro_id(detl.getSuppCode()) .setLocation_no(wrkDetl.getZpallet()) .setSj_emp(wrkDetl.getModiUser$()) .setLocation_type(MatLocType.getMatTag(material.getTagId() + "")) // 上报时,默认上报时间是更新时间 .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")) // 上报时,默认上报数量是订单数量 .setPick_qty(wrkDetl.getAnfme().intValue()) // .setPick_qty(detl.getQty().intValue()) // 上报时,默认损坏数量是0 .setDamage_qty(0) // 上报时,默认差异数量是0 .setDiff_qty(0); reportOrderParams.add(itemParam); }); } reportOrderParams.add(itemParam); }); orderParam.setDetails(reportOrderParams); XSR response = null; @@ -389,41 +398,48 @@ orderDetls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); if (Objects.isNull(material)) { throw new CoolException(material.getMatnr() + "物料不存在"); throw new CoolException(material.getMatnr() + "物料不存在"); } TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>() TaskDetlLog taskDetlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getStandby1()) .eq("order_no", detl.getOrderNo())); if (Objects.isNull(detlLog)) { throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!"); if (Objects.isNull(taskDetlLog) || Objects.isNull(taskDetlLog.getAreaType())) { orderParam.setTarget_location("2"); // throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!"); } else { orderParam.setTarget_location(taskDetlLog.getAreaType()); } /* WrkDetlLog detlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>() List<WrkDetlLog> detlLog = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getStandby1()) .eq("order_no", detl.getOrderNo())); if (Objects.isNull(detlLog)) { throw new CoolException("物料编码:" + detl.getMatnr() + "数据错误 ,请检查堆垛机任务档是否已完成!!"); }*/ //目标库区 // orderParam.setTarget_location("2"); orderParam.setTarget_location(detlLog.getAreaType()); OrderItemsParam itemParam = new OrderItemsParam(); // BS Code itemParam // 上报时,默认产品类型是null .setPro_type(material.getProType()) // 上报时,默认产品编码 .setPro_komcode(detl.getMatnr()) // 上报时,默认产品id是供应商编码 .setPro_id(detl.getSuppCode()) detlLog.forEach(item -> { OrderItemsParam itemParam = new OrderItemsParam(); if (Objects.isNull(item)) { itemParam.setLocation_no("LX99999999"); } else { itemParam.setLocation_no(item.getZpallet()); } itemParam // 上报时,默认产品类型是null .setPro_type(material.getProType()) // 上报时,默认产品编码 .setPro_komcode(detl.getMatnr()) // 上报时,默认产品id是供应商编码 .setPro_id(detl.getSuppCode()) // // 上报时,默认来源位置是null .setLocation_no(detlLog.getZpallet()) // 上报时,默认上报数量是订单数量 .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue()); reportOrderParams.add(itemParam); // .setLocation_no(detlLog.getZpallet()) // 上报时,默认上报数量是订单数量 .setPick_qty(item.getAnfme().intValue()); // .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue()); reportOrderParams.add(itemParam); }); }); //目标库区 // orderParam.setTarget_location("2"); // BS Code if (orderParam.getTarget_location().equals("2")) { orderParam.setType("11"); } else if (orderParam.getTarget_location().equals("3")) { @@ -438,26 +454,29 @@ try { List<ReportOrderParam> orderParams = new ArrayList<>(); orderParams.add(orderParam); log.info("派工单入参---------->{}", JSONArray.toJSONString(orderParams)); if (order.getReportOnce() < 4) { response = kopenApiService.reportOutDetailsResult(orderParams, order); } else { return FAIL; } if (response.getSuccess()) { success = true; // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), settle, null)) { throw new CoolException("服务器内部错误,请联系管理员"); if (!Objects.isNull(response)) { if (response.getSuccess()) { success = true; // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), settle, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DETAILS_RESULT, JSON.toJSONString(orderParams), JSON.toJSONString(response)); throw new CoolException("上报KOPEN系统失败"); } } else { // return SUCCESS; } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DETAILS_RESULT, JSON.toJSONString(orderParams), JSON.toJSONString(response)); throw new CoolException("上报KOPEN系统失败"); } } catch (Exception e) { log.error("fail", e); return FAIL.setMsg(e.getMessage()); // return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 @@ -490,28 +509,30 @@ orderDetls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); if (Objects.isNull(material)) { throw new CoolException(material.getMatnr() + "物料不存在"); throw new CoolException(material.getMatnr() + "物料不存在"); } TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>() List<TaskDetlLog> detlLogs = taskDetlLogService.selectList(new EntityWrapper<TaskDetlLog>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getStandby1()) .eq("order_no", detl.getOrderNo())); if (Objects.isNull(detlLog)) { if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) { throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!"); } OrderItemsParam itemParam = new OrderItemsParam(); // 上报时,默认产品类型是null itemParam.setPro_type(material.getProType()); // 上报时,默认产品编码 itemParam.setPro_komcode(material.getMatnr()); // 上报时,默认产品id是供应商编码 itemParam.setPro_id(detl.getSuppCode()); //todo 台车编码 itemParam.setTruck_no(detlLog.getZpallet()); // 上报时,默认上报时间是更新时间 itemParam.setPick_qty(detl.getQty().intValue()); detlLogs.forEach(detlLog -> { OrderItemsParam itemParam = new OrderItemsParam(); // 上报时,默认产品类型是null itemParam.setPro_type(material.getProType()); // 上报时,默认产品编码 itemParam.setPro_komcode(material.getMatnr()); // 上报时,默认产品id是供应商编码 itemParam.setPro_id(detl.getSuppCode()); //todo 台车编码 itemParam.setTruck_no(detlLog.getZpallet()); // 上报时,默认上报时间是更新时间 itemParam.setPick_qty(detlLog.getAnfme().intValue()); reportOrderParams.add(itemParam); reportOrderParams.add(itemParam); }); }); pubOrderParams.setPartList(reportOrderParams); @@ -606,7 +627,7 @@ detls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); if (Objects.isNull(material)) { throw new CoolException(material.getMatnr() + "物料不存在"); throw new CoolException(material.getMatnr() + "物料不存在"); } OrderItemsParam itemParam = new OrderItemsParam(); itemParam.setLocation_no(detl.getZpallet()) @@ -633,4 +654,38 @@ } @Transactional(rollbackFor = Exception.class) public ReturnT<String> startConvertOrders(OrderPakout orderPakout) { if (orderPakout.getSettle() != 4) { return FAIL; } List<OrderDetlPakout> detlPakins = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_no", orderPakout.getOrderNo())); if (!Objects.isNull(detlPakins) && !detlPakins.isEmpty()) { detlPakins.forEach(detl -> { OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getSuppCode()) .eq("order_no", detl.getOrderNo())); if (!Objects.isNull(orderDetl)) { orderDetl.setQty(detl.getQty()); orderDetl.setWorkQty(detl.getWorkQty()); if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getSuppCode()) .eq("order_no", detl.getOrderNo()))) { throw new CoolException("订单信息更新失败!!"); } } }); Order orderNo = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo())); if (!Objects.isNull(orderNo)) { orderNo.setSettle(4L); if (!orderService.update(orderNo, new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo()))) { throw new CoolException("单据状态更新失败!!"); } } } return SUCCESS; } } src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -5,6 +5,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.enums.TaskStatusType; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.OrderPakinServiceImpl; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.OrderInAndOutUtil; @@ -17,6 +18,7 @@ import java.util.Iterator; import java.util.List; import java.util.Objects; /** * Created by vincent on 2020/7/6 @@ -47,6 +49,8 @@ private TaskDetlService taskDetlService; @Autowired private TaskDetlLogService taskDetlLogService; @Autowired private OrderPakinService orderPakinService; @Transactional(rollbackFor = Exception.class) public ReturnT<String> start(WrkMast wrkMast) { @@ -59,10 +63,18 @@ WrkDetl wrkDetl = iterator.next(); if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // orderService.checkComplete(wrkDetl.getOrderNo()); if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 8 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104){ OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo()); if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 8 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104) { OrderInAndOutUtil.checkComplete(Boolean.TRUE, wrkDetl.getOrderNo()); } else { OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo()); OrderInAndOutUtil.checkComplete(Boolean.FALSE, wrkDetl.getOrderNo()); OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>() .eq("order_no", wrkDetl.getOrderNo()) .in("doc_type", 7)); if (!Objects.isNull(orderPakin)) { OrderInAndOutUtil.checkComplete(Boolean.TRUE, orderPakin.getOrderNo()); } } iterator.remove(); } @@ -90,7 +102,7 @@ // exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); // } // } // 拣料再入库 // 拣料再入库 } else if (wrkMast.getIoType() == 53) { // // // if (!Cools.isEmpty(wrkDetls)) { @@ -100,7 +112,7 @@ // } } // 出库 -------------------------------------------------------------------------------- // 出库 -------------------------------------------------------------------------------- } else if (wrkMast.getWrkSts() == 15) { // if (!Cools.isEmpty(wrkDetls)) { // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { @@ -119,10 +131,13 @@ } // 保存工作明细档历史档 if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { log.error("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo()); // exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo()); } // 删除工作明细档 if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) { log.error("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo()); // exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo()); } } catch (Exception e) { @@ -145,10 +160,10 @@ TaskDetl taskDetl = iterator.next(); if (!Cools.isEmpty(taskDetl.getOrderNo())) { // orderService.checkComplete(wrkDetl.getOrderNo()); if (task.getIoType() == 1 || task.getIoType() == 8 || task.getIoType() == 54 || task.getIoType() == 104){ OrderInAndOutUtil.checkComplete(Boolean.TRUE,taskDetl.getOrderNo()); if (task.getIoType() == 1 || task.getIoType() == 8 || task.getIoType() == 54 || task.getIoType() == 104) { OrderInAndOutUtil.checkComplete(Boolean.TRUE, taskDetl.getOrderNo()); } else { OrderInAndOutUtil.checkComplete(Boolean.FALSE,taskDetl.getOrderNo()); OrderInAndOutUtil.checkComplete(Boolean.FALSE, taskDetl.getOrderNo()); } iterator.remove(); } @@ -205,22 +220,26 @@ if (!taskService.deleteById(task)) { exceptionHandle("删除工作主档[workNo={0}]失败", task.getWrkNo()); } List<TaskDetl> taskDetls2 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo())); for (TaskDetl taskDetl :taskDetls2){ for (TaskDetl taskDetl : taskDetls2) { TaskDetlLog taskDetlLog = new TaskDetlLog(); BeanUtils.copyProperties(taskDetl, taskDetlLog); taskDetlLog.setLogId(taskLog.getId()); taskDetlLog.setId(null); // 保存工作明细档历史档 if (!taskDetlLogService.insert(taskDetlLog)) { exceptionHandle("保存工作明细历史档[workNo={0}]失败", task.getWrkNo()); log.error("保存工作明细历史档[workNo={0}]失败", task.getWrkNo()); // exceptionHandle("保存工作明细历史档[workNo={0}]失败", task.getWrkNo()); } // 删除工作明细档 if (!taskDetlService.deleteById(taskDetl)) { exceptionHandle("删除工作明细档[workNo={0}]失败", task.getWrkNo()); } // 删除工作明细 } if (!taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()))) { log.error("保存工作明细历史档[workNo={0}]失败", task.getWrkNo()); // exceptionHandle("删除工作明细档[workNo={0}]失败", task.getWrkNo()); } } catch (Exception e) { log.error("fail", e); src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -68,6 +68,8 @@ private BasAreasService basAreasService; @Autowired private CommonService commonService; @Autowired private OrderPakoutService orderPakoutService; public ReturnT<String> start(WrkMast wrkMast) { // 4.入库完成 @@ -152,9 +154,13 @@ locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setAreaId(locMast.getAreaId()); locMast.setAreaName(locMast.getAreaName()); locDetl.setAreaName(locMast.getAreaName()); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setBoxType1(wrkDetl.getBoxType1()); locDetl.setSuppCode(wrkDetl.getSuppCode()); locDetl.setThreeCode(wrkDetl.getThreeCode()); locDetl.setStandby1(wrkDetl.getSuppCode()); locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); @@ -244,7 +250,11 @@ locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setAreaId(locMast.getAreaId()); locMast.setAreaName(locMast.getAreaName()); locDetl.setAreaName(locMast.getAreaName()); locDetl.setBoxType1(wrkDetl.getBoxType1()); locDetl.setSuppCode(wrkDetl.getSuppCode()); locDetl.setThreeCode(wrkDetl.getThreeCode()); locDetl.setStandby1(wrkDetl.getSuppCode()); locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); @@ -350,102 +360,83 @@ .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls54.isEmpty()) { // exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } // 修改库存明细数量,如无库存,曾新增 for (WrkDetl wrkDetl : wrkDetls54) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { // exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", // wrkMast.getWrkNo(), wrkDetl.getMatnr()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } else { locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setAreaId(locMast.getAreaId()); locMast.setAreaName(locMast.getAreaName()); locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); if (!locDetlService.insert(locDetl)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" // + wrkMast.getLocNo() + "]"); } else { // 修改库存明细数量,如无库存,曾新增 for (WrkDetl wrkDetl : wrkDetls54) { LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()) .eq("loc_no", locMast.getLocNo())); if (null != locDetl) { // 更新订单完成数量 OrderDetlPakin detlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>() // .eq("three_code", wrkDetl.getThreeCode()) //TODO 并板时需要修改BSCODE为订单bscode .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()) .eq("order_no", wrkDetl.getOrderNo())); try { if (!Cools.isEmpty(detlPakin)) { double v = Math.round((wrkDetl.getAnfme() - locDetl.getAnfme()) * 10000) / 10000.0; double v1 = Math.round((detlPakin.getQty() + v) * 10000) / 10000.0; detlPakin.setQty(v1); detlPakin.setWorkQty(v1); detlPakin.setAdjustQty(wrkDetl.getAdjustQty()); detlPakin.setSplusQty(wrkDetl.getSplusQty()); if (!orderDetlPakinService.update(detlPakin, new EntityWrapper<OrderDetlPakin>() .eq("matnr", detlPakin.getMatnr()) .eq("supp_code", detlPakin.getSuppCode()) .eq("order_no", detlPakin.getOrderNo()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } catch (Exception e) { log.error(e.getMessage()); } // OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo())); // if (Objects.isNull(orderPakin)) { // throw new CoolException("数据错误,订单信息不存在!!"); // } // // if (!orderPakin.getDocType().equals(0)) { // // 更新订单完成数量 // OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), // pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(), // pakin.getStandby2(), pakin.getStandby3(), // pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3()); // if (orderDetlPakin == null) { // orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(), // pakin.getBatch(), // pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(), // pakin.getStandby3(), // pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3()); // } // try { // if (!Cools.isEmpty(orderDetlPakin)) { // if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(), // pakin.getMatnr(), // orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(), // pakin.getStandby2(), pakin.getStandby3(), // pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(), // pakin.getAnfme())) { // throw new CoolException("AGV全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() // + "],[locNo=" + wrkMast.getLocNo() + "]"); // } // } // } catch (Exception ignore) { // // } // } LocDetl detl = new LocDetl(); detl.setAnfme(wrkDetl.getAnfme()); detl.setStandby1(wrkDetl.getSuppCode()); detl.setBoxType1(locDetl.getBoxType1()); detl.setOrderNo(wrkDetl.getOrderNo()); // 更新订单完成数量 OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), "1", wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); try { if (!Cools.isEmpty(orderDetlPakin)) { if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), "1", wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { if (!locDetlService.update(detl, new EntityWrapper<LocDetl>() .eq("loc_no", locMast.getLocNo()) .eq("matnr", wrkDetl.getMatnr()) .eq("supp_code", wrkDetl.getSuppCode()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } else { locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setAreaId(locMast.getAreaId()); locDetl.setAreaName(locMast.getAreaName()); locDetl.setBoxType1(wrkDetl.getBoxType1()); locDetl.setSuppCode(wrkDetl.getSuppCode()); locDetl.setThreeCode(wrkDetl.getThreeCode()); locDetl.setStandby1(wrkDetl.getSuppCode()); locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); if (!locDetlService.insert(locDetl)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } catch (Exception ignore) { } } // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts("F"); @@ -462,20 +453,24 @@ } String agvSta = null; if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) { if (wrkMast.getIoType().equals(TaskIOType.MERGE_IN.type)) { agvSta = wrkMast.getPauseMk(); } // . 删除缓存站点明细 if (!Objects.isNull(agvSta)) { // 修改目标站点信息 BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta)); if (Objects.isNull(station)) { throw new CoolException("站点不存在!!"); } basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo())); station.setLocSts(LocStsType.LOC_STS_TYPE_D.type); if (!basStationService.updateById(station)) { throw new CoolException("站点状态更新失败!!"); List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", agvSta)); if (Objects.isNull(basStationDetls) || basStationDetls.isEmpty()) { // . 删除缓存站点明细 if (!Objects.isNull(agvSta)) { // 修改目标站点信息 BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta)); if (Objects.isNull(station)) { throw new CoolException("站点不存在!!"); } basStationDetlService.delete(new EntityWrapper<BasStationDetl>() .eq("dev_no", station.getDevNo())); station.setLocSts(LocStsType.LOC_STS_TYPE_D.type); if (!basStationService.updateById(station)) { throw new CoolException("站点状态更新失败!!"); } } } break; @@ -484,34 +479,35 @@ // 根据工作号,查询工作明细档 List<WrkDetl> wrkDetls57 = wrkDetlService .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls57.isEmpty()) { if (!wrkDetls57.isEmpty()) { // exceptionHandle("盘点入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } for (WrkDetl wrkDetl : wrkDetls57) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // 更新订单完成数量 CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId()); LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId()); BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme()); locDetl.setAnfme(checkOrderDetl.getDiffQty() .compareTo(BigDecimal.ZERO) == 0 || checkOrderDetl.getDiffQty() .compareTo(BigDecimal.ZERO) > 0 ? oriAnfme.doubleValue() : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue()); locDetl.setBookQty(oriAnfme); locDetl.setDiffQty(checkOrderDetl.getDiffQty()); if (!locDetlService.updateById(locDetl)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("盘点入库 ===>> 修改库存差异数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); for (WrkDetl wrkDetl : wrkDetls57) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // 更新订单完成数量 CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId()); if (!Objects.isNull(checkOrderDetl)) { LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId()); if (!Objects.isNull(locDetl)) { BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme()); locDetl.setAnfme(checkOrderDetl.getDiffQty() .compareTo(BigDecimal.ZERO) == 0 || checkOrderDetl.getDiffQty() .compareTo(BigDecimal.ZERO) > 0 ? oriAnfme.doubleValue() : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue()); locDetl.setBookQty(oriAnfme); locDetl.setDiffQty(checkOrderDetl.getDiffQty()); if (!locDetlService.updateById(locDetl)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("盘点入库 ===>> 修改库存差异数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } } } } // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D"); @@ -620,6 +616,7 @@ return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } for (WrkDetl wrkDetl : wrkDetls101) { // 更新订单完成数量 OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), @@ -668,6 +665,10 @@ } } break; case 104: break; case 103: // List<WrkDetl> wrkDetls103 = wrkDetlService // .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); @@ -677,7 +678,7 @@ // return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" // + wrkMast.getSourceLocNo() + "]"); // } // // for (WrkDetl wrkDetl : wrkDetls103) { // // 更新订单完成数量 // OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), @@ -819,14 +820,13 @@ */ @Transactional(rollbackFor = Exception.class) public ReturnT<String> agvDoOut(Task task) { Date now = new Date(); LocCache locMast = locCacheService .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo())); Date now = new Date(); if (Objects.isNull(locMast)) { throw new RuntimeException("数据错误:库位信息不能为空!!"); } if (task.getIoType().equals(101)) { if (Objects.isNull(locMast)) { throw new RuntimeException("数据错误:库位信息不能为空!!"); } List<TaskDetl> wrkDetls101 = taskDetlService .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo())); if (wrkDetls101.isEmpty()) { @@ -834,6 +834,7 @@ return FAIL.setMsg( "全板出库 ===>> 工作明细档为空; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } BasStation devNo = basStationService .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo())); if (Objects.isNull(devNo)) { @@ -847,31 +848,24 @@ } for (TaskDetl wrkDetl : wrkDetls101) { // 更新订单完成数量 OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); if (orderDetlPakout == null) { orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); } try { if (!Cools.isEmpty(orderDetlPakout)) { if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); // 更新备货出库单完成数量 OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("order_no", wrkDetl.getOrderNo())); if (!Objects.isNull(orderPakout) && orderPakout.getDocType() == 5) { try { if (!Cools.isEmpty(orderPakout)) { if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), "1", wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("备货出库单 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } } } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } catch (Exception ignore) { } BasStationDetl stationDetl = new BasStationDetl(); @@ -882,6 +876,42 @@ throw new CoolException("站点明细保存失败!!"); } } // for (TaskDetl wrkDetl : wrkDetls101) { // // 更新订单完成数量 // OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), // wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), // wrkDetl.getStandby2(), wrkDetl.getStandby3(), // wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); // if (orderDetlPakout == null) { // orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), // wrkDetl.getStandby3(), // wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); // } // try { // if (!Cools.isEmpty(orderDetlPakout)) { // if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), // wrkDetl.getStandby2(), wrkDetl.getStandby3(), // wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), // wrkDetl.getAnfme())) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" // + task.getSourceLocNo() + "]"); // } // } // } catch (Exception ignore) { // // } // // BasStationDetl stationDetl = new BasStationDetl(); // BeanUtils.copyProperties(wrkDetl, stationDetl); // stationDetl.setDevNo(devNo.getDevNo()) // .setOrderNo(wrkDetl.getOrderNo()); // if (!basStationDetlService.insert(stationDetl)) { // throw new CoolException("站点明细保存失败!!"); // } // } // 删除工作档源库位的库存明细 if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -889,12 +919,12 @@ "全板出库 ===>> 删除库存明细失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } // 修改源库位状态 R ===>> O if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) { if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) { locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type); locMast.setBarcode(""); locMast.setModiTime(now); locMast.setIoTime(now); if (!locCacheService.updateById(locMast)) { if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); @@ -908,24 +938,19 @@ throw new CoolException("任务状态修改失败!!"); } } else if (task.getIoType().equals(110)) { if (Objects.isNull(locMast)) { throw new RuntimeException("数据错误:库位信息不能为空!!"); } // 修改源库位状态 R ===>> O if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) { locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type); locMast.setBarcode(""); locMast.setModiTime(now); locMast.setIoTime(now); if (!locCacheService.updateById(locMast)) { if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } } else { throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!"); } BasStation devNo = basStationService .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo())); if (Objects.isNull(devNo)) { @@ -948,75 +973,122 @@ return FAIL.setMsg("拣料出库 ===>> 工作明细档为空; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } for (TaskDetl wrkDetl : wrkDetls103) { // 更新订单完成数量 OrderDetlPakout orderDetlPakout = orderDetlPakoutService. selectOne(new EntityWrapper<OrderDetlPakout>() .eq("matnr", wrkDetl.getMatnr()) .eq("supp_code", wrkDetl.getSuppCode()) .eq("order_no", wrkDetl.getOrderNo())); try { if (!Cools.isEmpty(orderDetlPakout)) { if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } } //TODO 修改站点状态预约目标库位,以及站点库位信息 LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("matnr", wrkDetl.getMatnr()) .eq("supp_code", wrkDetl.getSuppCode()) .eq("loc_no", task.getSourceLocNo())); if (Objects.isNull(locDetl) ) { throw new CoolException("库存数据错误,请联系管理员!!"); } Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0; locDetl.setAnfme(sulp); if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo()) .eq("matnr", locDetl.getMatnr()) .eq("supp_code", locDetl.getSuppCode()))) { return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } } catch (Exception ignore) { log.error(ignore.getMessage()); } } // for (TaskDetl wrkDetl : wrkDetls103) { // // 更新订单完成数量 // OrderDetlPakout orderDetlPakout = orderDetlPakoutService. // selectOne(new EntityWrapper<OrderDetlPakout>() // .eq("matnr", wrkDetl.getMatnr()) // .eq("supp_code", wrkDetl.getSuppCode()) // .eq("order_no", wrkDetl.getOrderNo())); // try { // if (!Cools.isEmpty(orderDetlPakout)) { // if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), // wrkDetl.getMatnr(), // orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), // wrkDetl.getStandby2(), wrkDetl.getStandby3(), // wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), // wrkDetl.getAnfme())) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() // + "],[locNo=" + task.getSourceLocNo() + "]"); // } // } // //TODO 修改站点状态预约目标库位,以及站点库位信息 // LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() // .eq("matnr", wrkDetl.getMatnr()) // .eq("supp_code", wrkDetl.getSuppCode()) // .eq("loc_no", task.getSourceLocNo())); // if (Objects.isNull(locDetl) ) { // throw new CoolException("库存数据错误,请联系管理员!!"); // } // Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0; // locDetl.setAnfme(sulp); // if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo()) // .eq("matnr", locDetl.getMatnr()) // .eq("supp_code", locDetl.getSuppCode()))) { // return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() // + "],[locNo=" + task.getSourceLocNo() + "]"); // } // } catch (Exception ignore) { // log.error(ignore.getMessage()); // } // } // if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) { // locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // locMast.setBarcode(""); // locMast.setModiTime(now); // locMast.setIoTime(now); // if (!locCacheService.updateById(locMast)) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" // + task.getSourceLocNo() + "]"); // } // } else { // throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!"); // } // // BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo())); // // 修改源库位状态 R ===>> O // if (basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type) || basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) { // basStation.setLocSts(LocStsType.LOC_STS_TYPE_R.type); // basStation.setBarcode(""); // basStation.setModiTime(now); // basStation.setIoTime(now); // if (!basStationService.updateById(basStation)) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" // + task.getSourceLocNo() + "]"); // } // } else { // throw new CoolException("当前库位状态" + basStation.getLocSts() + ", 无法执行出库操作!!"); // } // Task task1 = new Task(); // int workNo = commonService.getWorkNo(0); task.setIoType(task.getIoType() - 50); task.setLocNo(task.getSourceLocNo()); task.setWrkSts(TaskStatusType.AGV_IN_START.type); if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) { throw new CoolException("任务拣货完成状态更新失败!!"); } // 修改源库位状态 R ===>> O if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) { locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type); locMast.setBarcode(""); locMast.setModiTime(now); locMast.setIoTime(now); if (!locCacheService.updateById(locMast)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); } } else { throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!"); } // task1.setWrkNo(workNo); // task1.setIoType(task.getIoType() - 50); // task1.setLocNo(task.getSourceLocNo()); // task1.setIsNewIn("M1"); // task1.setSourceStaNo(task.getStaNo()); // task1.setWrkSts(TaskStatusType.AGV_IN_START.type); // // if (!taskService.insert(task1)) { // throw new CoolException("拣货入库任务生成失败!!"); // } // // List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo())); // taskDetls.forEach(detl -> { // detl.setWrkNo(task1.getWrkNo()); // if (!taskDetlService.update(detl, new EntityWrapper<TaskDetl>().eq("wrk_no", detl.getWrkNo()))) { // throw new CoolException("任务明细修改失败!!"); // } // }); // task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type); // if (!taskService.updateById(task)) { // throw new CoolException("任务状态修改失败!!"); // } } return SUCCESS; } @Transactional(rollbackFor = Exception.class) public ReturnT<String> agvDoIn(Task wrkMast) { if (wrkMast.getIsNewIn().equals("XM1")) { wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); wrkMast.setModiTime(new Date()); if (!taskService.updateById(wrkMast)) { throw new CoolException("任务状态修改失败!!"); } return SUCCESS; } if (wrkMast.getTaskType().equals("agv_back")) { wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); wrkMast.setModiTime(new Date()); if (!taskService.updateById(wrkMast)) { throw new CoolException("任务状态修改失败!!"); } return SUCCESS; } LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); if (!Objects.isNull(wrkMast.getSourceStaNo())) { BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>() @@ -1028,8 +1100,10 @@ } station.setBarcode(""); if (!basStationService.updateById(station)) { basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo())); throw new CoolException("站点状态修改失败!!"); } basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo())); } } @@ -1110,7 +1184,8 @@ locCache.setBarcode(wrkMast.getBarcode()); locCache.setModiTime(new Date()); locCache.setIoTime(new Date()); if (!locCacheService.updateById(locCache)) { if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) { throw new CoolException("库位状态修改失败!"); } wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); @@ -1137,81 +1212,89 @@ // 根据工作号,查询工作明细档 List<TaskDetl> wrkDetls53 = taskDetlService .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls53.isEmpty()) { // exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } for (TaskDetl wrkDetl : wrkDetls53) { LocDetl locDetl = locDetlService.selectItem(locCache.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()) .eq("loc_no", wrkMast.getLocNo())); if (null != locDetl) { if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locCache.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); Double v = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0; locDetl.setBoxType1(wrkDetl.getBoxType1()); locDetl.setOrderNo(wrkDetl.getOrderNo()); locDetl.setStandby1(wrkDetl.getSuppCode()); locDetl.setAnfme(v); if (v.compareTo(0.0) == 0) { if (!locDetlService.delete(new EntityWrapper<LocDetl>() .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()) .eq("loc_no", wrkMast.getLocNo()))) { return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } else { if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>() .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()) .eq("loc_no", wrkMast.getLocNo()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } // 更新订单完成数量 OrderDetlPakout orderDetlPakout = orderDetlPakoutService .selectOne(new EntityWrapper<OrderDetlPakout>() .eq("order_no", wrkDetl.getOrderNo()) .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr())); if (!Cools.isEmpty(orderDetlPakout)) { double v = Math.round((orderDetlPakout.getQty() + wrkDetl.getAnfme()) * 10000) / 10000.0; orderDetlPakout.setQty(v); if (!orderDetlPakoutService.update(orderDetlPakout, new EntityWrapper<OrderDetlPakout>() .eq("order_no", wrkDetl.getOrderNo()) .eq("supp_code", wrkDetl.getSuppCode()) .eq("matnr", wrkDetl.getMatnr()))) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 更新订单完成数量 OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); if (orderDetlPakout == null) { orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); } try { if (!Cools.isEmpty(orderDetlPakout)) { if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { // exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } catch (Exception ignore) { } } Date now = new Date(); // 修改库位状态 Q ====>> F if (locCache.getLocSts().equals("Q")) { locCache.setLocSts("F"); locCache.setBarcode(wrkMast.getBarcode()); locCache.setIoTime(now); locCache.setModiTime(now); if (!locCacheService.updateById(locCache)) { // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() .eq("loc_no", locCache.getLocNo())); if (Objects.isNull(locDetls) || locDetls.isEmpty()) { locCache.setLocSts("D"); } else { Double sum = locDetls.stream().mapToDouble(LocDetl::getAnfme).sum(); if (sum.compareTo(0.0) == 0) { locCache.setLocSts("D"); } else { // 修改库位状态 Q ====>> F locCache.setLocSts("F"); } } locCache.setBarcode(wrkMast.getBarcode()); locCache.setIoTime(now); locCache.setModiTime(now); if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) { // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } // 修改工作主档状态 wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); wrkMast.setModiTime(now); if (!taskService.updateById(wrkMast)) { // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL .setMsg("更新入库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); src/main/java/com/zy/common/constant/MesConstant.java
@@ -7,16 +7,16 @@ //小系统接口地址 // public static final String URL = "http://webservice.kopen.com.cn:1482/kc-api/api/wms/ "; public static final String URL = "http://10.143.23.26:1482/kc-api/api/wms/ "; public static final String URL = "http://10.143.23.25:1483/kc-api/api/wms/ "; //AGV拉口地址 public static final String AGV_URL = "http://192.168.238.202/rcs/rtas/api/robot/controller"; //WCS系统接口地址 public static final String WCS_URL = "http://192.168.238.32:9090/wcs"; // public static final String WCS_URL = "http://192.168.238.31:9090/wcs"; public static final String WCS_URL = "http://192.168.238.31:9090/wcs"; //上架派工单反馈 public static final String IN_DISPATCH_RESULT = "getInDispatchResult"; //备货指示派工单反馈 src/main/java/com/zy/common/model/LocDto.java
@@ -28,6 +28,8 @@ private String boxType2 = "1"; private String boxType3 = "1"; private String suppCode; private String orderNo; private Double anfme; src/main/java/com/zy/common/model/TaskDto.java
@@ -65,6 +65,31 @@ return false; } public static boolean hasAgv(List<TaskDto> list, TaskDto dto) { if (Cools.isEmpty(list)) { return false; } for (TaskDto taskDto : list) { if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) { return true; } } return false; } public static TaskDto findAgv(List<TaskDto> list, TaskDto dto) { if (Cools.isEmpty(list)) { return null; } for (TaskDto taskDto : list) { if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) { return taskDto; } } return null; } public static TaskDto find(List<TaskDto> list, TaskDto dto) { if (Cools.isEmpty(list)) { return null; src/main/java/com/zy/common/service/CommonService.java
@@ -202,13 +202,27 @@ } StartupDto startupDto = new StartupDto(); locMast = locMastService.selectOne(new EntityWrapper<LocMast>() // new EntityWrapper<LocMast>(new EntityWrapper<LocMast>() // .ge("row1", rowLastno.getsRow()) // .le("row1", rowLastno.geteRow()) // .eq("crn_no", crnNo) // .eq("loc_type1", locTypeDto.getLocType1()) // .eq("loc_sts", "O") // .orderAsc(Arrays.asList("lev1", "row1", "bay1"))) Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>() .ge("row1", rowLastno.getsRow()) .le("row1", rowLastno.geteRow()) .eq("crn_no", crnNo) .eq("loc_type1", locTypeDto.getLocType1()) .eq("loc_sts", "O") .orderAsc(Arrays.asList("lev1", "row1", "bay1"))); .orderAsc(Arrays.asList( "row1", "lev1", "bay1")); if (locTypeDto.getLocType1() != 2) { wrapper.eq("crn_no", crnNo); } locMast = locMastService.selectOne(wrapper); // int crnCountO = wrkMastService.selectCount(new // EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100)); // 生成工作号 src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -56,13 +56,7 @@ </resultMap> <sql id="standbyAll"> and batch = #{batch} and brand = #{brand} and standby1 = #{standby1} and standby2 = #{standby2} and standby3 = #{standby3} and box_type2 = #{boxType2} and box_type3 = #{boxType3} </sql> <sql id="standbyAllMemo"> -- and line_number = #{lineNumber} src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@ </resultMap> <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task"> select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no </select>