src/main/java/com/zy/api/controller/KopenApiController.java
@@ -1,11 +1,12 @@ package com.zy.api.controller; import com.alibaba.fastjson.JSON; import com.core.common.R; import com.zy.api.entity.OrderParams; import com.zy.api.entity.PubOrderParams; import com.zy.api.entity.ReportOrderParam; import com.zy.api.entity.SyncMatParmas; import com.zy.api.service.KopenApiService; import com.zy.asrs.entity.Mat; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -13,8 +14,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; import java.util.Objects; @RestController @@ -33,8 +32,8 @@ * @return com.core.common.R */ @ApiOperation("上架派工单") @PostMapping("/order/add") public R receiveOrders(@RequestBody OrderParams params) { @PostMapping("/sendInDispatch") public R receiveOrders(@RequestBody PubOrderParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } @@ -43,6 +42,7 @@ } return kopenApiService.receiveOrders(params); } /** * 上游下发零件数据变更 @@ -53,7 +53,7 @@ * @return com.core.common.R */ @ApiOperation("零件信息数据更新") @PostMapping("/sync/mat") @PostMapping("/sendPartsMaster") public R basMatUpdate(@RequestBody SyncMatParmas params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); @@ -66,5 +66,42 @@ } /** * 上架派工单反馈 * @author Ryan * @date 2025/11/24 15:20 * @param params * @return com.core.common.R */ @ApiOperation("上架派工单反馈") @PostMapping("/getInDispatchResult") public R getInDispatchResult(@RequestBody ReportOrderParam params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) { return R.error("取消条件不能为空!!"); } return kopenApiService.getInDispatchResult(params); } /** * 备货指示派工单下发 * @author Ryan * @date 2025/11/24 15:21 * @param params * @return com.core.common.R */ @ApiOperation("备货指示派工单下发") @PostMapping("/sendOutDispatch") public R sendStockPrepareDispatch(@RequestBody PubOrderParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) { return R.error("上报订单列表不能为空!!"); } return kopenApiService.sendOutDispatch(params); } } src/main/java/com/zy/api/entity/OrderItemsParam.java
@@ -30,5 +30,13 @@ @ApiModelProperty("入库通知数量") private Double inv_qty; @ApiModelProperty("指示拣货订单数量") private Integer order_qty; @ApiModelProperty("原上架派工数量") private Integer old_qty; @ApiModelProperty("变更数量") private Integer new_qty; } src/main/java/com/zy/api/entity/OrderParams.java
@@ -26,7 +26,7 @@ @ApiModelProperty("公司ID") private String company_id; @ApiModelProperty("入库类型 1: 采购入库,2: 调拨入库,3: 销售退货入库,4: 套包入库") @ApiModelProperty("入库类型 1: 采购入库,2: 调拨入库,3: 销售退货入库,4: 套包入库, 5:SO, 6:EO") private String type; @ApiModelProperty("箱号") @@ -35,8 +35,12 @@ @ApiModelProperty("入库通知单号") private String inv_no; @ApiModelProperty("入库物料列表") List<OrderItemsParam> details; @ApiModelProperty("目标库区") private String target_location; @ApiModelProperty("源库区") private String source_location; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") src/main/java/com/zy/api/entity/PubOrderParams.java
New file @@ -0,0 +1,17 @@ package com.zy.api.entity; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) @ApiModel(value = "PubOrderParams", description = "发布订单信息") public class PubOrderParams extends OrderParams{ @ApiModelProperty("入库物料列表") List<OrderItemsParam> details; } src/main/java/com/zy/api/entity/ReportOrderParam.java
New file @@ -0,0 +1,18 @@ package com.zy.api.entity; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) @ApiModel(value = "ReportOrderParam", description = "上报订单信息") public class ReportOrderParam extends OrderParams{ @ApiModelProperty("上报订单列表") List<ReportOrderParams> details; } src/main/java/com/zy/api/entity/ReportOrderParams.java
New file @@ -0,0 +1,48 @@ package com.zy.api.entity; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) @ApiModel("上报订单参数") public class ReportOrderParams implements Serializable { @ApiModelProperty("BS Code") private String total_serial; @ApiModelProperty("产品类型") private String pro_type; @ApiModelProperty("零件代码") private String pro_komcode; @ApiModelProperty("供应商ID") private String pro_id; @ApiModelProperty("容器编码") private String location_no; @ApiModelProperty("货位类型") private String location_type; @ApiModelProperty("上架日期") private String sj_date; @ApiModelProperty("上架人") private String sj_emp; @ApiModelProperty("上架数量") private Integer pick_qty; @ApiModelProperty("破损数量") private Integer damage_qty; @ApiModelProperty("差异数量") private Integer diff_qty; } src/main/java/com/zy/api/enums/OrderWkType.java
@@ -7,6 +7,8 @@ ORDER_WK_TRANSFER_IN("2", "调拔入库"), ORDER_WK_SALE_IN("3", "销售退货入库"), ORDER_WK_BAG_IN("4", "套包入库"), ORDER_WK_ORDER_OUT_EO("EO", "备货指示派工单(EO)"), ORDER_WK_ORDER_OUT_SO("SO", "备货指示派工单(SO)"), ORDER_WK_ORDER_OUT("29", "备货单"); OrderWkType(String val, String desc) { @@ -26,7 +28,7 @@ return OrderType.ORDER_IN.type; } else if (val.equals(OrderWkType.ORDER_WK_BAG_IN.val)) { return OrderType.ORDER_IN.type; } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) { } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) { return OrderType.ORDER_OUT.type; } else { return OrderType.ORDER_OUT.type; src/main/java/com/zy/api/service/KopenApiService.java
@@ -1,7 +1,8 @@ package com.zy.api.service; import com.core.common.R; import com.zy.api.entity.OrderParams; import com.zy.api.entity.PubOrderParams; import com.zy.api.entity.ReportOrderParam; import com.zy.api.entity.SyncMatParmas; public interface KopenApiService { @@ -14,7 +15,7 @@ * @param params * @return com.core.common.R */ R receiveOrders(OrderParams params); R receiveOrders(PubOrderParams params); /** * 基础零件变更 @@ -31,5 +32,19 @@ * @author Ryan * @date 2025/11/24 15:33 */ void addOrUpdateOrders(OrderParams params, String type) ; void addOrUpdateOrders(PubOrderParams params, String type) ; /** * 上架派工单反馈 * @param params * @return */ R getInDispatchResult(ReportOrderParam params); /** * 备货指示派工单下发 * @param params * @return */ R sendOutDispatch(PubOrderParams params); } src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -6,6 +6,8 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.api.entity.OrderParams; import com.zy.api.entity.PubOrderParams; import com.zy.api.entity.ReportOrderParam; import com.zy.api.entity.SyncMatParmas; import com.zy.api.enums.MatLocType; import com.zy.api.enums.MatType; @@ -22,14 +24,12 @@ import com.zy.asrs.service.OrderService; import com.zy.asrs.utils.Utils; import com.zy.common.utils.HttpHandler; 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.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Objects; @@ -52,12 +52,114 @@ * @return com.core.common.R */ @Override public R receiveOrders(OrderParams params) { public R receiveOrders(PubOrderParams params) { if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) { return R.error("当前类型不是上架派工单!!"); } addOrUpdateOrders(params, "add"); return R.ok("单据下发成功!!"); } /** * 上架派工单反馈 * @author Ryan * @date 2025/11/24 15:33 */ @Override @Transactional(rollbackFor = Exception.class) public R getInDispatchResult(ReportOrderParam params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } String response = null; try { response = new HttpHandler.Builder() .setUri("127.0.0.1:8081") .setPath("/wms/order/getInDispatchResult") .setJson(JSONObject.toJSONString(params)) .build() .doPost(); if (Objects.isNull(response) || response.trim().isEmpty()) { return R.error("外网接口无响应!!"); } JSONObject jsonObject = JSONObject.parseObject(response); Integer code = jsonObject.getInteger("code"); if (!Objects.isNull(code) && code.equals(1)) { return R.ok("入库单上报完成!!"); } else { String msg = jsonObject.getString("message"); return R.error(Objects.isNull(msg) ? "上报失败!!" : msg); } } catch (Exception e) { return R.error(e.getMessage()); } } /* */ /** * 备货指示派工单下发 * @author Ryan * @date 2025/11/24 15:21 * @param params * @return com.core.common.R */ @Override @Transactional(rollbackFor = Exception.class) public R sendOutDispatch(PubOrderParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } // 校验参数 if (Objects.isNull(params.getDispatch_no())) { return R.error("派工单编号不能为空!!"); } if (Objects.isNull(params.getKopen_id())) { return R.error("流水号不能为空!!"); } if (Objects.isNull(params.getCompany_id())) { return R.error("公司ID不能为空!!"); } addOrUpdateOrders(params, "add"); return R.ok("备货指示派工单下发成功!!"); } /** * 备货指示派工单 * @author Ryan * @date 2025/12/16 9:15 * @param params */ private void outOrderAddAndUpdate(PubOrderParams params, String type) { if (Objects.isNull(params)) { throw new CoolException("参数不能为空!!"); } if (Objects.isNull(params.getType())) { throw new CoolException("订单类型不能为空!!"); } OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class); Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no())); if (type.equals("add") && !Objects.isNull(order)) { throw new CoolException("单据已存在, 不可重复添加!!"); } // 判断订单是否存在 if (Objects.isNull(order)) { /** 不存在,新增订单 */ generateOrders(params); } else { /** 存在,删除老订单,更新插入新订单 */ // 删除旧订单明细 if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { throw new CoolException("订单明细删除失败!!"); }; if (!orderService.deleteById(order.getId())) { throw new CoolException("原单据删除失败!!"); } generateOrders(params); } } /** @@ -121,14 +223,13 @@ */ @Override @Transactional(rollbackFor = Exception.class) public void addOrUpdateOrders(OrderParams params, String type) { public void addOrUpdateOrders(PubOrderParams params, String type) { if (Objects.isNull(params)) { throw new CoolException("参数不能为空!!"); } if (Objects.isNull(params.getType())) { throw new CoolException("订单类型不能为空!!"); } OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class); Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no())); if (type.equals("add") && !Objects.isNull(order)) { @@ -143,7 +244,8 @@ // 删除旧订单明细 if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { throw new CoolException("订单明细删除失败!!"); }; } if (!orderService.deleteById(order.getId())) { throw new CoolException("原单据删除失败!!"); } @@ -161,18 +263,20 @@ * @param params */ @Transactional(rollbackFor = Exception.class) public void generateOrders(OrderParams params) { public void generateOrders(PubOrderParams params) { // 将数据当新订单插入 Order newOrder = new Order(); if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 入库 newOrder.setPakinPakoutStatus(1); newOrder.setDocType(Long.parseLong(params.getType())); newOrder.setOrderNo(params.getInv_no()); } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 出库 newOrder.setPakinPakoutStatus(2); newOrder.setDocType(5L); newOrder.setOrderNo(params.getDispatch_no()); } newOrder.setDocType(Long.parseLong(params.getType())); newOrder.setOrderNo(params.getInv_no()); newOrder.setUuid(generateUUID(params)); // 流水号(唯一) newOrder.setDefNumber(params.getKopen_id()); @@ -203,7 +307,15 @@ BeanUtils.copyProperties(matnr, orderItem); orderItem.setOrderId(newOrder.getId()); orderItem.setOrderNo(newOrder.getOrderNo()); orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0); if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 入库 orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0); } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 出库 newOrder.setPakinPakoutStatus(2); orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0); } orderItem.setMatnr(matnr.getMatnr()); orderItem.setMaktx(matnr.getMaktx()); orderItem.setBrand(matnr.getBrand()); src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -256,6 +256,12 @@ LocMast locMast = service.selectById(this.locNo); if (!Cools.isEmpty(locMast)){ return String.valueOf(locMast.getLocNo()); }else { LocCacheService service2 = SpringUtils.getBean(LocCacheService.class); LocCache locCache = service2.selectOne(new EntityWrapper<LocCache>().eq("loc_no", this.locNo)); if (!Cools.isEmpty(locCache)){ return String.valueOf(locCache.getLocNo()); } } return null; } src/main/java/com/zy/asrs/entity/result/CrnTaskDetlDTO.java
New file @@ -0,0 +1,18 @@ package com.zy.asrs.entity.result; import com.zy.asrs.entity.LocDetl; import lombok.Data; import lombok.experimental.Accessors; import java.util.List; @Data @Accessors(chain = true) public class CrnTaskDetlDTO { private String locNo; private List<LocDetl> locDetlList; } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,10 +8,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.FindLocNoAttributeVo; import com.zy.asrs.entity.result.ForwardAGVTaskDTO; import com.zy.asrs.entity.result.HIKApiDTO; import com.zy.asrs.entity.result.HIKResultDTO; import com.zy.asrs.entity.result.*; import com.zy.asrs.enums.*; import com.zy.asrs.enums.LocAreaType; import com.zy.asrs.enums.LocStsType; @@ -2118,7 +2115,7 @@ } Collections.shuffle(devps); BasDevp basDevp = devps.stream().findFirst().get(); List<LocMast> locMasts = new ArrayList<>(); List<CrnTaskDetlDTO> locMasts = new ArrayList<>(); Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMatnr)); //获取查库存总数量 AtomicReference<Double> totalOut = new AtomicReference<>(0.0); @@ -2162,7 +2159,8 @@ if (sum.compareTo(v) <= 0 && sum.compareTo(itemed.get()) > 0) { itemed.set(Math.round((itemed.get() + v) * 10000) / 10000.0); // 可放下 locMasts.add(locMast); CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(adetls); locMasts.add(crnTaskDetlDTO); totalOut.set(Math.round((totalOut.get() + itemed.get()) * 10000) / 10000.0); } } @@ -2181,9 +2179,10 @@ .eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type) .orderAsc(Arrays.asList("row1", "bay1", "lev1")) .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); locMasts.add(locMast); CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls); locMasts.add(crnTaskDetlDTO); // 空板出库 generateTask(locMasts, TaskIOType.EMPTY_OUT.type, basDevp, userId); generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId); } } @@ -2195,47 +2194,51 @@ * @date 2025/12/6 14:44 */ @Transactional(rollbackFor = Exception.class) public void generateTask(List<LocMast> locMasts, Integer ioType, BasDevp devp, Long userId) { public void generateTask(List<CrnTaskDetlDTO> locMasts, Integer ioType, BasDevp devp, Long userId) { Date now = new Date(); for (LocMast locMast : locMasts) { for (CrnTaskDetlDTO crnTaskDetlDTO : locMasts) { LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", crnTaskDetlDTO.getLocNo())); if (Objects.isNull(ioType)) { continue; } Integer outSta = devp.getDevNo(); // 获取路径 StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo())); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库类型 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 源站 wrkMast.setStaNo(staDesc.getStnNo() + ""); // 目标站 wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeUser(userId); // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败,出库库位号:" + locMast.getLocNo()); if (Cools.isEmpty(wrkMast1)){ Integer outSta = devp.getDevNo(); // 获取路径 StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库类型 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 源站 wrkMast.setStaNo(staDesc.getStnNo() + ""); // 目标站 wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeUser(userId); // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败,出库库位号:" + locMast.getLocNo()); } }else { workNo = wrkMast1.getWrkNo(); } List<LocDetl> locDetls = locDetlService .selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); // 生成工作档明细 for (LocDetl detlDto : locDetls) { for (LocDetl detlDto : crnTaskDetlDTO.getLocDetlList()) { WrkDetl wrkDetl = new WrkDetl(); BeanUtils.copyProperties(detlDto, wrkDetl); wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -245,6 +245,9 @@ if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) { List<TaskDetl> wrkDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo())); for (TaskDetl wrkDetl : wrkDetls) { if (Cools.isEmpty(wrkDetl.getOrderNo())){ continue; } if (!Cools.isEmpty(wrkDetl.getOrderNo())) { OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), @@ -254,7 +257,7 @@ boolean flag = true; OrderPakin order = orderService.selectByNo(wrkDetl.getOrderNo()); //OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo()); if (Objects.isNull(order)) { throw new CoolException("单据信息不存在!!"); continue; } List<OrderDetlPakin> orderDetls = orderDetlService.selectByOrderId(order.getId()); //OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId()); for (OrderDetlPakin orderDetl : orderDetls) { src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -5,6 +5,8 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.api.entity.ReportOrderParam; import com.zy.api.service.KopenApiService; import com.zy.asrs.entity.*; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.*; @@ -47,6 +49,8 @@ private OrderPakinService orderPakinService; @Autowired private OrderDetlPakinService orderDetlPakinService; @Autowired private KopenApiService kopenApiService; @Transactional public ReturnT<String> startOrderIssuedOnceMore(Order order) { @@ -208,6 +212,16 @@ OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null); return SUCCESS; } /** * 单据上报 * @author Ryan * @date 2025/12/15 16:14 * @param order * @return com.zy.asrs.task.core.ReturnT<java.lang.String> */ @Transactional public ReturnT<String> startOrderReport(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); @@ -233,6 +247,9 @@ String response = ""; boolean success = false; try { ReportOrderParam orderParam = new ReportOrderParam(); kopenApiService.getInDispatchResult(orderParam); // response = new HttpHandler.Builder() // .setUri(MesConstant.URL) // .setPath(MesConstant.PAKIN_URL) src/main/resources/mapper/LocDetlMapper.xml
@@ -531,14 +531,6 @@ where 1=1 and b.loc_sts = 'F' and a.matnr = #{matnr} <!-- <choose>--> <!-- <when test="batch != null and batch != ''">--> <!-- and a.batch = #{batch}--> <!-- </when>--> <!-- <otherwise>--> <!-- and (a.batch IS NULL OR a.batch = '')--> <!-- </otherwise>--> <!-- </choose>--> <if test="orderNo != null and orderNo != ''"> and a.order_no = #{orderNo} </if> @@ -625,14 +617,6 @@ where 1=1 and b.loc_sts = 'F' and a.matnr = #{matnr} <!-- <choose>--> <!-- <when test="batch != null and batch != ''">--> <!-- and a.batch = #{batch}--> <!-- </when>--> <!-- <otherwise>--> <!-- and (a.batch IS NULL OR a.batch = '')--> <!-- </otherwise>--> <!-- </choose>--> <if test="orderNo != null and orderNo != ''"> and a.order_no = #{orderNo} </if> src/main/webapp/static/js/locDetl/locDetl.js
@@ -7,7 +7,8 @@ ,{field: 'matnr', align: 'center',title: '商品编号', sort:true} ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true} ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true} ,{field: 'threeCode', align: 'center',title: 'BS Code', sort:true} ,{field: 'standby1', align: 'center',title: '供应商代码', sort:true} ,{field: 'anfme', align: 'center',title: '可用数量'} ,{field: 'diffQty', align: 'center',title: '差异数量', templet: function(d) { src/main/webapp/views/wrkMast/wrkMast.html
@@ -129,6 +129,9 @@ {{#if (d.ioType === 107) { }} <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">盘</a> {{# } }} {{#if (d.ioType === 104) { }} <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">并</a> {{# } }} </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>