| src/main/java/com/zy/api/controller/KopenApiController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/entity/OrderParams.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/KopenApiService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/CheckOrderDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/mapper/OrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/OrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/OrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/api/controller/KopenApiController.java
@@ -172,14 +172,15 @@ */ @ApiOperation("零件损溢单下发") @PostMapping("/sendBSBYDetails") public XSR sendStockAdjust(@RequestBody StockAdjustParams params) { if (Objects.isNull(params)) { public XSR sendStockAdjust(@RequestBody List<StockAdjustParams> params) { if (Objects.isNull(params) || params.isEmpty()) { return XSR.error("参数不能为空!!"); } if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) { return XSR.error("上报订单列表不能为空!!"); } return kopenApiService.sendStockAdjust(params, 1L); } } src/main/java/com/zy/api/entity/OrderParams.java
@@ -1,7 +1,6 @@ package com.zy.api.entity; import java.io.Serializable; import java.util.List; import org.springframework.format.annotation.DateTimeFormat; src/main/java/com/zy/api/service/KopenApiService.java
@@ -3,7 +3,6 @@ import java.util.List; import com.zy.api.controller.params.PageRequestParams; import com.zy.api.entity.OrderItemsParam; import com.zy.api.entity.PubOrderParams; import com.zy.api.entity.ReportOrderParam; import com.zy.api.entity.StockAdjustParams; @@ -79,5 +78,5 @@ * @param params * @return com.core.common.R */ XSR sendStockAdjust(StockAdjustParams params, Long userId); XSR sendStockAdjust(List<StockAdjustParams> params, Long userId); } src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -472,10 +472,15 @@ */ @Override public XSR getStockInfo(PageRequestParams params) { Page<LocDetl> locDetls = locDetlService.selectPage(new Page<>(params.getCurr(), params.getLimit()), new EntityWrapper<LocDetl>() .eq(!Objects.isNull(params.getPro_komcode()), "matnr", params.getPro_komcode()) .eq(Objects.isNull(params.getPro_id()), "supp_code", params.getPro_id())); EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); if (!Objects.isNull(params.getPro_id())) { wrapper.eq("supp_code", params.getPro_id()); } if (!Objects.isNull(params.getPro_komcode())) { wrapper.eq("matnr", params.getPro_komcode()); } Page<LocDetl> locDetls = locDetlService.selectPage(new Page<>(params.getCurr(), params.getLimit()), wrapper); return XSR.ok(locDetls.getRecords()); } @@ -490,25 +495,13 @@ */ @Override @Transactional(rollbackFor = Exception.class) public XSR sendStockAdjust(StockAdjustParams params, Long userId) { public XSR sendStockAdjust(List<StockAdjustParams> params, Long userId) { if (Objects.isNull(params)) { return XSR.error("参数不能为空!!"); } if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) { return XSR.error("订单明细不能为空!!"); } // 校验参数 if (Objects.isNull(params.getBsby_no())) { return XSR.error("损溢单编号不能为空!!"); } CheckOrder checkOrder = checkOrderService .selectOne(new EntityWrapper<CheckOrder>().eq("order_no", params.getBsby_no())); if (!Objects.isNull(checkOrder)) { return XSR.error("损溢单已存在!!"); } gentCheckOrders(params, userId); params.forEach(param -> { gentCheckOrders(param, userId); }); return XSR.ok("零件损溢单下发成功!!"); } @@ -516,18 +509,32 @@ /** 生成新的零件损溢单 * @param userId */ @Transactional(rollbackFor = Exception.class) public void gentCheckOrders(StockAdjustParams checkOrder, Long userId) { public void gentCheckOrders(StockAdjustParams params, Long userId) { if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) { throw new CoolException("订单明细不能为空!!"); } // 校验参数 if (Objects.isNull(params.getBsby_no())) { throw new CoolException("损溢单编号不能为空!!"); } CheckOrder checkOrder = checkOrderService .selectOne(new EntityWrapper<CheckOrder>().eq("order_no", params.getBsby_no())); if (!Objects.isNull(checkOrder)) { throw new CoolException("损溢单已存在!!"); } CheckOrder order = new CheckOrder(); order.setOrderNo(checkOrder.getBsby_no()); order.setCstmrName(checkOrder.getCompany_id()); order.setDefNumber(checkOrder.getKopen_id()); order.setOrderNo(params.getBsby_no()); order.setCstmrName(params.getCompany_id()); order.setDefNumber(params.getKopen_id()); order.setDocType(4L); order.setUuid(String.valueOf(snowflakeIdWorker.nextId())); order.setSettle(Long.valueOf(CommonEnum.COMMON_ENUM_Y.type + "")); order.setStatus(CommonEnum.COMMON_ENUM_Y.type); order.setOrderTime(checkOrder.getUpdate_time()); order.setMemo(checkOrder.getResason()); order.setShipName(checkOrder.getReason_name()); order.setOrderTime(params.getUpdate_time()); order.setMemo(params.getResason()); order.setShipName(params.getReason_name()); order.setCreateTime(new Date()); order.setUpdateTime(new Date()); @@ -535,11 +542,11 @@ throw new CoolException("损溢单新增失败!!"); } if (Objects.isNull(checkOrder.getDetails()) || checkOrder.getDetails().isEmpty()) { if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) { throw new CoolException("订单明细不能为空!!"); } checkOrder.getDetails().forEach(item -> { params.getDetails().forEach(item -> { CheckOrderDetl checkOrderDetl = new CheckOrderDetl(); //通过托盘, 物料编码, 供应商编码查询库存明细 LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -5,9 +5,7 @@ import com.core.common.SpringUtils; import com.zy.asrs.enums.CheckStatusEnum; import com.zy.asrs.service.OrderService; import com.zy.asrs.entity.Order; import com.baomidou.mybatisplus.annotations.TableField; import com.core.common.SpringUtils; import com.zy.common.utils.Synchro; import com.zy.system.service.UserService; import com.zy.system.entity.User; @@ -16,15 +14,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; import com.core.common.SpringUtils; import com.zy.system.service.UserService; import com.zy.system.entity.User; import java.text.SimpleDateFormat; import java.util.Date; import java.text.SimpleDateFormat; import java.util.Date; import java.text.SimpleDateFormat; import java.util.Date; import io.swagger.annotations.ApiModelProperty; import lombok.Data; src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -1,6 +1,7 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.CheckOrder; import com.zy.asrs.entity.Order; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,9 @@ Order selectOrderMoveStatus(); Order selectOrderMoveStatusInitial(); /** * 查询损溢单完结的订单 * @return */ List<CheckOrder> selectCompleteCheck(); } src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,10 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.*; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import java.util.List; @@ -35,5 +32,11 @@ Order selectOrderMoveStatus(); Order selectOrderMoveStatusInitial(); /** * 查询损溢单完结的订单 * @return */ List<CheckOrder> selectCompleteCheck(); } src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -209,4 +209,13 @@ return this.baseMapper.selectOrderMoveStatusInitial(); } /** * 查询损溢单完结的订单 * @return */ @Override public List<CheckOrder> selectCompleteCheck() { return this.baseMapper.selectCompleteCheck(); } } src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,6 +1,7 @@ package com.zy.asrs.task; import com.core.common.Cools; import com.zy.asrs.entity.CheckOrder; import com.zy.asrs.entity.Order; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.ApiLogService; @@ -124,4 +125,37 @@ } } } /**损溢单完结上报 */ @Scheduled(cron = "0/30 * * * * ?") @Async("checkOrderThreadPool") public void completeCheckOrderReport() { if (!ErpReportOld){ return; } String erpReport = Parameter.get().getErpReport(); if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { List<CheckOrder> orders = orderService.selectCompleteCheck(); for (CheckOrder order : orders) { try { ReturnT<String> result = orderSyncHandler.startCheckOrderReport(order); if (!result.isSuccess()) { log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); } try { Thread.sleep(300); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; @@ -10,12 +11,14 @@ import com.zy.api.entity.PubOrderParams; import com.zy.api.entity.ReportOrderParam; import com.zy.api.entity.ReportOrderParams; import com.zy.api.entity.StockAdjustParams; import com.zy.api.entity.StockUpOrderParams; import com.zy.api.entity.dto.XSR; import com.zy.api.service.KopenApiService; import com.zy.asrs.entity.*; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.CheckOrderDetlServiceImpl; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.OrderInAndOutUtil; @@ -44,6 +47,8 @@ @Service public class OrderSyncHandler extends AbstractHandler<String> { private final CheckOrderDetlServiceImpl checkOrderDetlService; @Autowired private JdbcTemplate jdbcTemplate; @Autowired @@ -62,6 +67,10 @@ private KopenApiService kopenApiService; @Autowired private MatService matService; OrderSyncHandler(CheckOrderDetlServiceImpl checkOrderDetlService) { this.checkOrderDetlService = checkOrderDetlService; } @Transactional public ReturnT<String> startOrderIssuedOnceMore(Order order) { @@ -389,7 +398,8 @@ throw new CoolException("服务器内部错误,请联系管理员"); } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT, log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT, JSON.toJSONString(orderParam), JSON.toJSONString(response)); throw new CoolException("上报KOPEN系统失败"); } @@ -424,7 +434,6 @@ .setCus_id(order.getCstmrName()) .setCus_address(order.getTel()); List<OrderItemsParam> reportOrderParams = new ArrayList<>(); orderDetls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); @@ -447,11 +456,10 @@ List<OutOrderParams> pubOrderParamsList = new ArrayList<>(); pubOrderParamsList.add(pubOrderParams); //设置派工单明细 // 设置派工单明细 stockUpOrderParams.setDetails(pubOrderParamsList); stockUpOrderParams.setUpdate_time(order.getUpdateBy$()); XSR response = null; boolean success = false; try { @@ -470,7 +478,8 @@ throw new CoolException("服务器内部错误,请联系管理员"); } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DETAILS_RESULT, log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.OUT_DETAILS_RESULT, JSON.toJSONString(stockUpOrderParams), JSON.toJSONString(response)); throw new CoolException("上报KOPEN系统失败"); } @@ -497,4 +506,51 @@ return SUCCESS; } /** * 损溢单完结上报 * * @param order * @return */ @Transactional(rollbackFor = Exception.class) public ReturnT<String> startCheckOrderReport(CheckOrder order) { List<StockAdjustParams> adjustParams = new ArrayList<>(); StockAdjustParams adjustParam = new StockAdjustParams(); adjustParam.setCompany_id(order.getCstmrName()) .setWms_id(order.getId() + "") .setType(0 + "") .setCompany_id(order.getCstmrName()); adjustParam.setBsby_no(order.getNumber()) .setResason("") .setReason_name(""); List<CheckOrderDetl> detls = checkOrderDetlService .selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", order.getId())); if (Objects.isNull(detls) || detls.isEmpty()) { throw new CoolException("损溢单详情不存在"); } List<OrderItemsParam> items = new ArrayList<>(); detls.forEach(detl -> { Mat material = matService.selectByMatnr(detl.getMatnr()); if (Objects.isNull(material)) { throw new CoolException("物料不存在"); } OrderItemsParam itemParam = new OrderItemsParam(); itemParam.setLocation_no(detl.getZpallet()) .setPro_komcode(material.getMatnr()) .setPro_id(detl.getSuppCode()) .setBsby_qty(detl.getDiffQty().intValue()); items.add(itemParam); }); adjustParam.setDetails(items); adjustParams.add(adjustParam); return SUCCESS; // TODO Auto-generated method stub } } src/main/resources/mapper/OrderMapper.xml
@@ -118,5 +118,15 @@ and move_status = 1 order by update_time </select> <select id="selectCompleteCheck" resultType="com.zy.asrs.entity.Order"> SELECT TOP 20 * FROM man_check_order WHERE settle = 4 AND status = 1 AND doc_type = 4 </select> </mapper>