From df11218af96a29e69221078ad981737068acc435 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 10 九月 2025 13:18:25 +0800
Subject: [PATCH] #自动下发分拣线单据, 自动分配余料至同一站口,同一标记
---
src/main/resources/mapper/OrderMapper.xml | 13 ++
src/main/java/com/zy/asrs/service/OrderService.java | 4
src/main/java/com/zy/asrs/mapper/BasArmRulesMapper.java | 2
src/main/java/com/zy/asrs/entity/OrderDetl.java | 20 +++
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 1
src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java | 77 +++++++++++++++
src/main/java/com/zy/asrs/service/BasArmRulesService.java | 2
src/main/java/com/zy/asrs/entity/param/OrderToLine.java | 4
src/main/java/com/zy/asrs/task/handler/OrderToLineHandler.java | 78 +++++++++++++++
src/main/resources/mapper/BasArmRulesMapper.xml | 11 ++
src/main/resources/mapper/OrderDetlMapper.xml | 5 +
src/main/java/com/zy/asrs/service/impl/BasArmRulesServiceImpl.java | 5 +
src/main/java/com/zy/asrs/service/OrderDetlService.java | 2
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 11 ++
src/main/java/com/zy/asrs/mapper/OrderMapper.java | 4
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | 5 +
src/main/resources/application.yml | 6 +
17 files changed, 246 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index aa96844..33ced76 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -353,9 +353,23 @@
@TableField("box_type3")
private String boxType3 = "1";
+ /**
+ * 瀹藉害
+ */
+ @ApiModelProperty(value= "瀹藉害")
+ @TableField("width")
+ private Double width;
+
+ /**
+ * 楂樺害
+ */
+ @ApiModelProperty(value= "楂樺害")
+ @TableField("height")
+ private Double height;
+
public OrderDetl() {}
- public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double manLength, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+ public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double manLength, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo,Double width,Double height) {
this.orderId = orderId;
this.orderNo = orderNo;
this.anfme = anfme;
@@ -395,6 +409,8 @@
this.updateBy = updateBy;
this.updateTime = updateTime;
this.memo = memo;
+ this.width = width;
+ this.height = height;
}
public OrderDetl(OrderDetl orderDetl) {
@@ -442,6 +458,8 @@
this.standby1 = orderDetl.getStandby1();
this.standby2 = orderDetl.getStandby2();
this.standby3 = orderDetl.getStandby3();
+ this.width = orderDetl.getWidth();
+ this.height = orderDetl.getHeight();
}
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderToLine.java b/src/main/java/com/zy/asrs/entity/param/OrderToLine.java
index 7f8ab49..d41273b 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderToLine.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderToLine.java
@@ -33,7 +33,7 @@
private String po;
//绠辨暟
- private Float ctns;
+ private Double ctns;
//鏉$爜鍊糪闈炲垎鎷e睘鎬э紙鍙汉宸ュ紑鍏筹級\涓嶅彲涓虹┖\鎵爜鍙幏鍙�
private String upc;
@@ -55,7 +55,7 @@
this.sku = sku;
this.po = po;
}
- public MatList(String sku, String po, Float ctns, String upc, Integer sign, String supplier, Long binding_tags) {
+ public MatList(String sku, String po, Double ctns, String upc, Integer sign, String supplier, Long binding_tags) {
this.sku = sku;
this.po = po;
this.ctns = ctns;
diff --git a/src/main/java/com/zy/asrs/mapper/BasArmRulesMapper.java b/src/main/java/com/zy/asrs/mapper/BasArmRulesMapper.java
index 2fdcfe1..74341d4 100644
--- a/src/main/java/com/zy/asrs/mapper/BasArmRulesMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasArmRulesMapper.java
@@ -23,5 +23,7 @@
@Param("materialNumber") Double materialNumber,
@Param("status") int status);
+ Integer getNumber(@Param("weight")Double weight,@Param("volume")Double volume,@Param("length")Double length,@Param("width")Double width,@Param("height")Double height);
+
}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 2325909..d3f865d 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -62,4 +62,5 @@
int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("brand")String brand, @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3, @Param("workQty")Double workQty);
+ List<OrderDetl> selectByOrderNo(@Param("orderNo") String orderNo);
}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index 69f50ce..a9d9865 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -25,4 +25,8 @@
Order selectOrderMoveStatus();
Order selectOrderMoveStatusInitial();
+
+ List<String> AllStatusSatisfyOrder(@Param("moveStatus") Integer moveStatus);
+
+ boolean updateOrderStatus(@Param("orderNo")String orderNo);
}
diff --git a/src/main/java/com/zy/asrs/service/BasArmRulesService.java b/src/main/java/com/zy/asrs/service/BasArmRulesService.java
index 9a2a0d3..87ba06c 100644
--- a/src/main/java/com/zy/asrs/service/BasArmRulesService.java
+++ b/src/main/java/com/zy/asrs/service/BasArmRulesService.java
@@ -12,4 +12,6 @@
boolean updateStatus(Double materialLength,Double materialWidth,Double materialHeight,Double materialWeight,Double materialNumber,int status);
boolean updateStatus(ArmPrecomputeParam.CombMat combMat);
+
+ Integer getNumber(Double weight,Double volume,Double length,Double width,Double height);
}
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index f8e50b0..4c701b7 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -37,4 +37,6 @@
* @return
*/
boolean increaseWorkQty(Long orderId, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double workQty);
+
+ List<OrderDetl> selectByOrderNo(String orderNo);
}
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 878002f..e5d9d87 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -36,4 +36,8 @@
Order selectOrderMoveStatus();
Order selectOrderMoveStatusInitial();
+ List<String> AllStatusSatisfyOrder(Integer moveStatus);
+
+ boolean updateOrderStatus(String orderNo);
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasArmRulesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasArmRulesServiceImpl.java
index 5370593..700d2eb 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasArmRulesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasArmRulesServiceImpl.java
@@ -33,4 +33,9 @@
public boolean updateStatus(Double materialLength,Double materialWidth,Double materialHeight,Double materialWeight,Double materialNumber,int status){
return this.baseMapper.updateStatus(materialLength,materialWidth,materialHeight,materialWeight,materialNumber,status);
}
+
+ @Override
+ public Integer getNumber(Double weight,Double volume,Double length,Double width,Double height){
+ return this.baseMapper.getNumber(weight,volume,length,width,height);
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 79f959c..bee5018 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -94,4 +94,9 @@
public boolean increaseWorkQty(Long orderId, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double workQty) {
return this.baseMapper.increaseWorkQty(orderId, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3, workQty) > 0;
}
+
+ @Override
+ public List<OrderDetl> selectByOrderNo(String orderNo) {
+ return this.baseMapper.selectByOrderNo(orderNo);
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index ba05f58..cfe5c34 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -209,4 +209,15 @@
return this.baseMapper.selectOrderMoveStatusInitial();
}
+ @Override
+ public List<String> AllStatusSatisfyOrder(Integer moveSatus){
+ return this.baseMapper.AllStatusSatisfyOrder(moveSatus);
+ }
+
+ @Override
+ public boolean updateOrderStatus(String orderNo){
+ return this.baseMapper.updateOrderStatus(orderNo);
+ }
+
+
}
diff --git a/src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java b/src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java
index f47d516..d062204 100644
--- a/src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java
@@ -1,16 +1,91 @@
package com.zy.asrs.task;
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.entity.BasArmRules;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.param.OrderToLine;
+import com.zy.asrs.service.BasArmRulesService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.impl.OrderDetlServiceImpl;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.OrderToLineHandler;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
@Slf4j
@Component
//璁㈠崟涓嬪彂鑷冲垎鎷g嚎
public class OrderToSortLineScheduler {
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private BasArmRulesService basArmRulesService;
+ @Autowired
+ private OrderToLineHandler orderToLineHandler;
-// @Scheduled(cron = "0/3 * * * * ? ")
+
+ // @Scheduled(cron = "0/3 * * * * ? ")
private void orderToSortLine() {
+ //鑾峰彇鏈笅鍙戝崟鎹�
+ List<String> orderNos = orderService.AllStatusSatisfyOrder(0);
+ for (String orderNo : orderNos) {
+ List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(orderNo);
+ OrderToLine orderToLine = new OrderToLine();
+ orderToLine.setOrderNo(orderNo);
+ orderToLine.setCreateTime(System.currentTimeMillis());
+
+ Long bindingTag = System.currentTimeMillis();//娣锋惌鏍囪
+
+ List<OrderToLine.MatList> matLists = new ArrayList<>();
+ for (OrderDetl orderDetl : orderDetls) {
+ Integer number = basArmRulesService.getNumber(orderDetl.getWeight(),orderDetl.getVolume(),orderDetl.getManLength(),orderDetl.getWidth(),orderDetl.getHeight());
+ Double anfme = orderDetl.getAnfme();
+ Double remainder = anfme % number; //鍙栦綑 浣欐暟娣锋惌
+ if(remainder != 0){
+ // 缁勮鐗╂枡淇℃伅
+ OrderToLine.MatList matMix = new OrderToLine.MatList(
+ orderDetl.getMatnr(), // matnr -> sku
+ orderDetl.getSupp(), // supp -> po
+ remainder, //浣欐枡
+ orderDetl.getBarcode(), //barcode -> upc
+ 1,
+ orderDetl.getOrigin(), //origin -> supplier 璐ф簮
+ bindingTag //浣欐枡鏍囪鐩稿悓
+ );
+ matLists.add(matMix);
+ }
+ Double ctns = anfme - remainder;
+ // 缁勮鐗╂枡淇℃伅
+ OrderToLine.MatList mat = new OrderToLine.MatList(
+ orderDetl.getMatnr(), // matnr -> sku
+ orderDetl.getSupp(), // supp -> po
+ ctns, //鏁存枡
+ orderDetl.getBarcode(), //barcode -> upc
+ 1,
+ orderDetl.getOrigin(), //origin -> supplier 璐ф簮
+ System.currentTimeMillis()
+ );
+ matLists.add(mat);
+ }
+ orderToLine.setMatList(matLists);
+ try{
+ ReturnT<String> returnT = orderToLineHandler.start(orderToLine);
+ if (!returnT.isSuccess()) {
+ log.error("涓嬪彂鍗曟嵁澶辫触===>"+ JSON.toJSON(orderToLine));
+ }
+ } catch (Exception e){
+ log.error("涓嬪彂鍗曟嵁寮傚父===>"+e.getMessage());
+ }
+
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderToLineHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderToLineHandler.java
new file mode 100644
index 0000000..2305e09
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/OrderToLineHandler.java
@@ -0,0 +1,78 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.param.ArmPrecomputeParam;
+import com.zy.asrs.entity.param.OrderToLine;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.BasArmRulesService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Slf4j
+@Service
+@Transactional
+public class OrderToLineHandler extends AbstractHandler<String> {
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private OrderService orderService;
+
+ @Value("${line.address.URL}")
+ //绔彛
+ private String URL;
+
+ @Value("${line.address.PATH}")
+ //瀹℃牳鍦板潃
+ private String Path;
+
+ public ReturnT<String> start(OrderToLine orderToline) {
+ try{
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(URL)
+ .setPath(Path)
+ .setJson(JSON.toJSONString(orderToline))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ success = true;
+ orderService.updateOrderStatus(orderToline.getOrderNo()); //鏇存柊璁㈠崟鐘舵�� 0 -> 1
+ } else {
+ log.error("涓嬪彂鍗曟嵁锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+Path, JSON.toJSONString(orderToline), response);
+ throw new CoolException("涓嬪彂鍗曟嵁澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ return FAIL.setMsg(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "涓嬪彂鍗曟嵁鑷冲垎鎷g嚎",
+ URL + Path,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(orderToline),
+ response,
+ success
+ );
+ } catch (Exception e) { log.error("", e); }
+ }
+ }catch (Exception e){
+
+ }
+ return SUCCESS;
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 37415cc..564c250 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -80,6 +80,12 @@
URL: http://58.210.10.90:28090
#鏍规嵁鍙傛暟鑾峰彇鐮佸灈鏁伴噺
QuantityOfPalletizing: api
+#鍒嗘嫞绾垮鎺�
+line:
+ # 鍦板潃
+ address:
+ URL: http://58.210.10.90:28090
+ PATH: API
#erp瀵规帴
erp:
diff --git a/src/main/resources/mapper/BasArmRulesMapper.xml b/src/main/resources/mapper/BasArmRulesMapper.xml
index c3d5725..3f1ee0f 100644
--- a/src/main/resources/mapper/BasArmRulesMapper.xml
+++ b/src/main/resources/mapper/BasArmRulesMapper.xml
@@ -31,4 +31,15 @@
and material_weight = #{materialWeight}
</update>
+ <select id="getNumber" resultType="Integer">
+ select material_number
+ from asr_bas_arm_rules
+ where 1=1
+ and material_volume = #{volume}
+ and material_length = #{length}
+ and material_width = #{width}
+ and material_height = #{height}
+ and material_weight = #{weight}
+ </select>
+
</mapper>
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index f18898e..0e8827a 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -201,5 +201,10 @@
</otherwise>
</choose>
</update>
+ <select id="selectByOrderNo" resultMap="BaseResultMap">
+ select *
+ from man_order_detl
+ where order_no = #{orderNo}
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index f8c5070..3b77b20 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -118,5 +118,18 @@
and move_status = 1
order by update_time
</select>
+
+ <select id="AllStatusSatisfyOrder" resultType="String">
+ select order_no
+ from man_order
+ where move_status = #{moveStatus}
+ </select>
+
+ <update id="updateOrderStatus">
+ update man_order
+ set move_status = 1
+ where 1=1
+ and order_no = #{orderNo}
+ </update>
</mapper>
--
Gitblit v1.9.1