liyg 2 سال پیش
والد
کامیت
4c16a35253

+ 1 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java

@@ -28,6 +28,7 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
     BigDecimal getShipperId(String shipperUnit);
     // 关闭未进厂的订单
     int closeOrderNotIn(BigDecimal saleOrderId);
+    List<Map<String,Object>> getCloseOrderNotIn(BigDecimal saleOrderId);
     // 得到仓库集合
     List<Map<String,Object>> getWareHouse(BigDecimal saleOrderId);
     // 将不可作业的运输订单改为已接收状态

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/SaleLogMapper.java

@@ -23,4 +23,7 @@ public interface SaleLogMapper extends IBaseMapper<SaleLog, BigDecimal> {
 
     //查询所有订单Id
     List<BigDecimal> getOrderIds(@Param("orderNumber") String orderNumber);
+
+    //根据总实绩查询订单ID
+    BigDecimal getOrderIdByTotal(Map<String,Object> map);
 }

+ 25 - 0
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.druid.support.json.JSONUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.steerinfo.dil.feign.SSOFeign;
+import com.steerinfo.dil.util.SaleLogUtil;
 import com.steerinfo.dil.util.newFileTool;
 import com.google.gson.JsonObject;
 import com.steerinfo.dil.feign.AmsFeign;
@@ -78,6 +79,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 
     Logger logger = LoggerFactory.getLogger(getClass());
 
+    @Autowired
+    SaleLogUtil saleLogUtil;
     /**
      * 查询销售订单
      * @param saleOrderId
@@ -207,11 +210,23 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             if (warehouseList != null && warehouseList.size() != 0 && warehouseList.get(0) != null) {
                 Object warehouse = warehouseList.get(0).get("warehouse");
                 if (warehouse != null && "副产品库".equals(warehouse)) {
+                    try{
+                        //记录日志
+                        saleLogUtil.logOrderBatch(amsSaleOrderMapper.getCloseOrderNotIn(amsSaleOrder.getSaleOrderId()),"金蝶关闭整单,运单同步关闭",SaleLogUtil.CLOSE);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
                 }
             }
             //如果是钢材订单
             if(amsSaleOrder.getSaleType() != null && amsSaleOrder.getSaleType().intValue() == 1){
+                try{
+                    //记录日志
+                    saleLogUtil.logOrderBatch(amsSaleOrderMapper.getCloseOrderNotIn(amsSaleOrder.getSaleOrderId()),"金蝶关闭整单,运单同步关闭",SaleLogUtil.CLOSE);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
                 //获取该钢材销售订单下所有的运输订单ID,状态
                 result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
             }
@@ -257,6 +272,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             //反关闭这个销售订单下面被关闭的运单
             try {
                 List<Map<String,Object>> orderMapList = amsSaleOrderMapper.selectOrderList(saleOrderId);
+                //记录日志
+                saleLogUtil.logOrderBatch(orderMapList,"金蝶反关闭整单,物流同步反关闭销售订单下的整单",SaleLogUtil.OPEN);
                 for (Map<String,Object> orderMap :orderMapList) {
                     OmstruckOrder omstruckOrder = new OmstruckOrder();
                     if(orderMap.get("factoryResultId") != null) {
@@ -311,6 +328,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
             //反审的订单需将下面的运输订单关闭
             try {
+                try{
+                    //记录日志
+                    saleLogUtil.logOrderBatch(amsSaleOrderMapper.getCloseOrderNotIn(amsSaleOrder.getSaleOrderId()),"金蝶反审批销售订单,物流同步关闭",SaleLogUtil.CLOSE);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
                 amsSaleOrderMapper.reverseApprovalOrder(amsSaleOrder.getSaleOrderId());
             } catch (Exception e) {
                 e.printStackTrace();
@@ -355,6 +378,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             //反关闭这个销售订单下面被关闭的运单
             try {
                 List<Map<String,Object>> orderMapList = amsSaleOrderMapper.selectOrderList(saleOrderId);
+                //记录日志
+                saleLogUtil.logOrderBatch(orderMapList,"金蝶反关闭整单,物流同步反关闭销售订单下的整单",SaleLogUtil.OPEN);
                 for (Map<String,Object> orderMap :orderMapList) {
                     OmstruckOrder omstruckOrder = new OmstruckOrder();
                     if(orderMap.get("factoryResultId") != null) {

+ 104 - 0
src/main/java/com/steerinfo/dil/util/SaleLogUtil.java

@@ -144,6 +144,95 @@ public class SaleLogUtil {
         }
     }
 
+
+    /**
+     * 插入运输订单的操作日志
+     * @param descriptoin
+     * @param oprationType 操作类型
+     * @param map 必传
+     * @return
+     */
+    public int logOrder(Map<String,Object> map,String descriptoin,int oprationType){
+        try{
+            SaleLog saleLog=new SaleLog();
+            saleLog.setResultId(saleLogMapper.selectMaxId());
+            saleLog.setOrderId(getOrderId(map));
+            saleLog.setDescription(descriptoin);
+            saleLog.setInsertTime(new Date());
+            saleLog.setInsertUsername(getUserName(map));
+            switch (oprationType){
+                case INSERT:
+                    saleLog.setOprationType("新增");
+                    break;
+                case UPDATE:
+                    saleLog.setOprationType("修改");
+                    break;
+                case DELETE:
+                    saleLog.setOprationType("删除");
+                    break;
+                case OPEN:
+                    saleLog.setOprationType("启用");
+                    break;
+                case CLOSE:
+                    saleLog.setOprationType("关闭");
+                    break;
+                default:
+                    saleLog.setOprationType("未知操作");
+            }
+            return saleLogMapper.insertSelective(saleLog);
+        }catch (Exception e){
+            e.printStackTrace();
+            return -1;
+        }
+    }
+
+    /**
+     * 批量插入
+     * @param list
+     * @param descriptoin
+     * @param oprationType
+     * @return
+     */
+    public int logOrderBatch(List<Map<String,Object>> list,String descriptoin,int oprationType){
+        try{
+            List<SaleLog> saleLogs=new ArrayList<>();
+            String oprationTypeStr;
+            switch (oprationType){
+                case INSERT:
+                    oprationTypeStr="新增";
+                    break;
+                case UPDATE:
+                    oprationTypeStr="修改";
+                    break;
+                case DELETE:
+                    oprationTypeStr="删除";
+                    break;
+                case OPEN:
+                    oprationTypeStr="启用";
+                    break;
+                case CLOSE:
+                    oprationTypeStr="关闭";
+                    break;
+                default:
+                    oprationTypeStr="未知操作";
+            }
+            for(Map<String,Object> map:list){
+                SaleLog saleLog=new SaleLog();
+                saleLog.setResultId(saleLogMapper.selectMaxId());
+                saleLog.setOrderId(getOrderId(map));
+                saleLog.setDescription(descriptoin);
+                saleLog.setInsertTime(new Date());
+                saleLog.setInsertUsername(getUserName(map));
+                saleLog.setOprationType(oprationTypeStr);
+                saleLogs.add(saleLog);
+            }
+            return saleLogMapper.batchInsert(saleLogs);
+        }catch (Exception e){
+            e.printStackTrace();
+            return -1;
+        }
+    }
+
     /**
      * 处理插入用户名
      * @param map
@@ -165,4 +254,19 @@ public class SaleLogUtil {
             return "未知用户";
         }
     }
+
+    /**
+     * 获取OrderId
+     * @param map
+     * @return
+     */
+    private BigDecimal getOrderId(Map<String,Object> map) throws Exception {
+        if(map.get("orderId")!=null){
+            return DataChange.dataToBigDecimal(map.get("orderId"));
+        }else if(map.get("resultTotalId")!=null){
+            return saleLogMapper.getOrderIdByTotal(map);
+        }else{
+            throw new Exception("没有订单Id,保存日志失败");
+        }
+    }
 }

+ 17 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -941,6 +941,23 @@
         AND TWR.RESULT_NET_WEIGHT IS NULL
     )
   </update>
+  <select id="getCloseOrderNotIn" resultType="java.util.Map" parameterType="DECIMAL">
+    SELECT OO.ORDER_ID "orderId"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+           LEFT JOIN OMSTRUCK_ORDER OO
+                     ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                     ON TTR.ORDER_ID = OO.ORDER_ID
+           LEFT JOIN TMSTRUCK_ENFACTORY_RESULT TER
+                     ON TER.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+           LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
+                     ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+    WHERE ASOM.SALE_ORDER_ID = #{saleOrderId}
+      AND OO.ORDER_ID IS NOT NULL
+      AND OO.ORDER_STATUS BETWEEN 4 AND 5
+      AND OO.ORDER_TYPE BETWEEN 1 AND 2
+      AND TWR.RESULT_NET_WEIGHT IS NULL
+  </select>
 
   <select id="getWareHouse" parameterType="DECIMAL" resultType="java.util.Map">
     SELECT ASM.SALE_WAREHOUSE AS "warehouse"

+ 5 - 0
src/main/resources/com/steerinfo/dil/mapper/SaleLogMapper.xml

@@ -332,4 +332,9 @@
   <select id="getOrderIds" resultType="java.math.BigDecimal">
     SELECT DISTINCT ORDER_ID FROM OMSTRUCK_ORDER WHERE ORDER_NUMBER = #{orderNumber}
   </select>
+  <select id="getOrderIdByTotal" resultType="java.math.BigDecimal">
+    SELECT ORDER_ID FROM TMSTRUCK_TOTAL_RESULT
+    WHERE RESULT_TOTAL_ID = #{totalResultId}
+      FETCH NEXT 1 ROWS ONLY
+  </select>
 </mapper>