Explorar o código

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU2/DAI_DAZHOU-OMS

luobang %!s(int64=2) %!d(string=hai) anos
pai
achega
a81654124f

+ 144 - 0
src/main/java/com/steerinfo/dil/controller/OmstruckOrderSeparateController.java

@@ -1,6 +1,7 @@
 package com.steerinfo.dil.controller;
 
 import com.steerinfo.dil.feign.TmsTruckFeign;
+import com.steerinfo.dil.mapper.OmstruckOrderMapper;
 import com.steerinfo.dil.mapper.OmstruckOrderSeparateMapper;
 import com.steerinfo.dil.model.OmstruckOrder;
 import com.steerinfo.dil.service.impl.OmstruckOrderSeparateServiceImpl;
@@ -35,6 +36,9 @@ public class OmstruckOrderSeparateController extends BaseRESTfulController {
     @Autowired
     OmstruckOrderSeparateMapper omstruckOrderSeparateMapper;
 
+    @Autowired
+    private OmstruckOrderMapper omstruckOrderMapper;
+
     @Autowired
     OmstruckOrderSeparateServiceImpl omstruckOrderSeparateService;
 
@@ -251,6 +255,146 @@ public class OmstruckOrderSeparateController extends BaseRESTfulController {
         return success(capacityAllOrderList);
     }
 
+    @ApiOperation(value = "该车牌号下的该月账期的物资数量")
+    @PostMapping("/getMatrialWeight")
+    public RESTfulResult getMatrialWeight(String capacityNumber,String date){
+        Map<String, Object> map = new HashMap<>();
+        date += "-01 00:00:00";
+        map.put("capacityNumber",capacityNumber);
+        DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime ldt = LocalDateTime.parse(date,sdf);
+        try {
+            if(date != null){
+                int month = ldt.getMonth().getValue();
+                int year = ldt.getYear();
+                // 判断是否是一月,一月则减一年,月份回到12
+                if (month == 1) {
+                    map.put("startDate", (year - 1) + "-" + 12 + "-" + 26);
+                }
+                // 非一月只需减少一个月份
+                if (month != 1){
+                    if (month > 10) {
+                        map.put("startDate", year + "-" + (month - 1) + "-" + 26);
+                    }
+                    else {
+                        map.put("startDate", year + "-0" + (month - 1) + "-" + 26);
+                    }
+                }
+                if (month >= 10) {
+                    // 结束时间为当月25号
+                    map.put("endDate", year + "-" + month + "-" + 25);
+                }
+                if (month < 10) {
+                    // 结束时间为当月25号
+                    map.put("endDate", year + "-0" + month + "-" + 25);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        List<Map<String, Object>> capacityAllOrderList = omstruckOrderSeparateService.getCapacityAllOrderTwo(map);
+        List<Map<String,Object>> matrialList=new LinkedList<>();
+        //第二种解决思路
+        for (Map<String, Object> stringObjectMap : capacityAllOrderList) {
+            String materialName = (String) stringObjectMap.get("materialName");
+            //因为netWeight有String类型的
+            if (stringObjectMap.get("netWeight")==null){
+                continue;
+            }
+            String netWeight1 = (String) stringObjectMap.get("netWeight");
+            String[] split = netWeight1.split("、");
+            if (split.length<=1){
+                if (contains(matrialList,materialName)){
+                    //把值给存入进去
+                    addSomeThing(matrialList,materialName,DataChange.dataToBigDecimal(split[0]));
+                }else {
+                    if (split==null){
+                        continue;
+                    }
+                    Map<String,Object> map1=new HashMap<>();
+                    map1.put("materialName",materialName);
+                    map1.put("netWeight",DataChange.dataToBigDecimal(split[0]));
+                    matrialList.add(map1);
+                }
+            }else{
+                for (String s : split) {
+                    if (contains(matrialList,materialName)){
+                        //把值给存入进去
+                        addSomeThing(matrialList,materialName,DataChange.dataToBigDecimal(s));
+                    }else {
+                        if (s==null){
+                            continue;
+                        }
+                        Map<String,Object> map1=new HashMap<>();
+                        map1.put("materialName",materialName);
+                        map1.put("netWeight",DataChange.dataToBigDecimal(s));
+                        matrialList.add(map1);
+                    }
+                }
+            }
+
+        }
+        //把物资的值都给求出来并放到数据中去
+        //第一种想法
+        /*for (Map<String, Object> stringObjectMap : capacityAllOrderList) {
+            BigDecimal orderId = DataChange.dataToBigDecimal(stringObjectMap.get("orderId"));
+            Integer orderType = omstruckOrderMapper.getOrderTypeByOrderNumber(orderId);
+            String steelJudge = "steel";
+                List<Map<String, Object>> materialMes = omstruckOrderMapper.getMaterialMesForGrossWeight(orderId,steelJudge);
+                for (Map<String, Object> materialMe : materialMes) {
+                    String materialName = (String) materialMe.get("materialName");
+                    BigDecimal netWeight = DataChange.dataToBigDecimal(materialMe.get("netWeight"));
+                    if (contains(matrialList,materialName)){
+                        //把值给存入进去
+                        addSomeThing(matrialList,materialName,netWeight);
+                    }else {
+                        if (netWeight.compareTo(BigDecimal.ZERO)==0){
+                            continue;
+                        }
+                        Map<String,Object> map1=new HashMap<>();
+                        map1.put("materialName",materialName);
+                        map1.put("netWeight",netWeight);
+                        matrialList.add(map1);
+                    }
+                    }*/
+        return success(addChinese(matrialList));
+    }
+
+    //给每个值的后面加个吨字
+    private List<Map<String,Object>> addChinese(List<Map<String, Object>> matrialList) {
+        for (Map<String, Object> map : matrialList) {
+            map.put("netWeight",map.get("netWeight")+"吨");
+        }
+        return matrialList;
+    }
+
+    private boolean contains(List<Map<String,Object>> matrialList,String materialName){
+        if (matrialList.isEmpty()){
+            return false;
+        }
+        for (Map<String, Object> map : matrialList) {
+            if (map.get("materialName").equals(materialName)){
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void addSomeThing(List<Map<String,Object>> matrialList,String materialName,BigDecimal netWeight){
+        if (netWeight.compareTo(BigDecimal.ZERO)==0){
+            return;
+        }
+        for (Map<String, Object> map : matrialList) {
+            if (map.get("materialName").equals(materialName)){
+                BigDecimal weight= DataChange.dataToBigDecimal(map.get("netWeight"));
+                map.put("materialName",materialName);
+                map.put("netWeight",weight.add(netWeight));
+                return;
+            }
+        }
+        return;
+    }
+
     @ApiOperation(value = "根据运单id关闭运输订单")
     @PostMapping("/closeOrder")
     public RESTfulResult closeOrder(@RequestParam Integer orderId){

+ 9 - 0
src/main/java/com/steerinfo/dil/mapper/OmstruckOrderMapper.java

@@ -202,6 +202,9 @@ public interface OmstruckOrderMapper extends IBaseMapper<OmstruckOrder, BigDecim
     //通过订单Id查询该订单下所有的物资
     List<Map<String,Object>> getMaterialMes(@Param("orderId") BigDecimal orderId, @Param("steelJudge") String steelJudge);
 
+    //通过订单Id查询该订单下所有的物资
+    List<Map<String,Object>> getMaterialMesForGrossWeight(BigDecimal orderId, String steelJudge);
+
     //通过订单Id查询该订单下所有的物资
     List<Map<String,Object>> getMaterialMesNew(@Param("orderId") BigDecimal orderId, @Param("steelJudge") String steelJudge);
 
@@ -281,6 +284,12 @@ public interface OmstruckOrderMapper extends IBaseMapper<OmstruckOrder, BigDecim
     //查看当前订单最大路段顺序号 与当前订单路段顺序号
     Map<String, Object> getMaxLineSeqByOrderId(BigDecimal orderId);
 
+    //查看配置表的相关信息
+    String getDilVersion();
+
+    //查询运输订单的送货单打印信息
+    BigDecimal getPrintNumber(BigDecimal orderId);
+
     //通过订单id查询零星订单id,运力id
     Map<String, Object> getSporadicOrdermapAddOrder(BigDecimal orderId);
 

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

@@ -77,6 +77,9 @@ public interface OmstruckOrderSeparateMapper {
     //查询当前车辆之前所有已完成的订单
     List<Map<String, Object>> getCapacityAllOrder(Map<String,Object> map);
 
+    //查询当前车辆之前所有已完成的订单
+    List<Map<String, Object>> getCapacityAllOrderTwo(Map<String,Object> map);
+
     //查询订单发货日期(订单类型为2)
     Integer getDeliveryDate(Object orderId);
 

+ 12 - 0
src/main/java/com/steerinfo/dil/service/impl/OmstruckOrderSeparateServiceImpl.java

@@ -526,6 +526,18 @@ public class OmstruckOrderSeparateServiceImpl implements IOmstruckOrderSeparateS
         return omstruckOrderSeparateMapper.getCapacityAllOrder(map);
     }
 
+    /**
+     *@Date:2023/1/10
+     *@DETAILEDTIME:15:37
+     *@Author:zyf
+     *@description:隶属于第二种思想(一条sql直接查出来)
+     *@version:1.0
+     *@return:
+     */
+    public List<Map<String, Object>> getCapacityAllOrderTwo(Map<String,Object>map){
+        return omstruckOrderSeparateMapper.getCapacityAllOrderTwo(map);
+    }
+
 
 //    @Override
 //    public int updateTimes(BigDecimal orderPlanId, int times) {

+ 45 - 0
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderMapper.xml

@@ -2933,6 +2933,7 @@
         "materialName",
         RM.MATERIAL_ID   "materialId",
         OOM.MATERIAL_PRIORITY "materialPriority",
+        OOM.ORDER_MATERIAL_NUMBER "materialNumber",
         CONCAT(CONCAT(RM.MATERIAL_MODEL, '('), CONCAT(MATERIAL_SPECIFICATION, ')')) "materialMC",
         (case
         when OOM.ORDER_MATERIAL_NUMBER is not null
@@ -2963,6 +2964,50 @@
         ORDER BY RM.MATERIAL_NAME
     </select>
 
+
+    <!-- 物资信息(特供给已完成物资总数)-->
+    <select id="getMaterialMesForGrossWeight"  resultType="java.util.LinkedHashMap">
+        SELECT
+        RM.MATERIAL_NAME || (
+        case
+        when OOM.MATERIAL_LUNO is not null
+        then '-' || oom.MATERIAL_LUNO
+        end
+        )
+        "materialName",
+        RM.MATERIAL_ID   "materialId",
+        OOM.MATERIAL_PRIORITY "materialPriority",
+        OOM.ORDER_MATERIAL_NUMBER "materialNumber",
+        CONCAT(CONCAT(RM.MATERIAL_MODEL, '('), CONCAT(MATERIAL_SPECIFICATION, ')')) "materialMC",
+        (case
+        when OOM.ORDER_MATERIAL_NUMBER is not null
+        then OOM.ORDER_MATERIAL_NUMBER || '件/支'
+        end
+        ) || (
+        case
+        when OOM.ORDER_MATERIAL_WEIGHT is not null
+        then '-'||OOM.ORDER_MATERIAL_WEIGHT  || '吨'
+        end
+        )
+        AS                                                                   "weightNum",
+        (   SELECT
+        LISTAGG ( TWR.RESULT_NET_WEIGHT, '、' ) within GROUP ( ORDER BY TWR.GROSS_SEGMENT_SQE )
+        FROM TMSTRUCK_WEIGHT_RESULT TWR
+        JOIN TMSTRUCK_TOTAL_RESULT TTR
+        ON TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+        WHERE TTR.ORDER_ID = #{orderId} and TWR.MATERIAL_ID = OOM.MATERIAL_ID
+        )                                                                    "netWeight"
+        FROM OMSTRUCK_ORDER_MATERIAL OOM
+        LEFT JOIN RMS_MATERIAL RM
+        ON RM.MATERIAL_ID = OOM.MATERIAL_ID
+        <if test="steelJudge != null">
+            LEFT JOIN RMS_WAREHOUSE RW
+            ON OOM.MATERIAL_PRIORITY = RW.WAREHOUSE_ID
+        </if>
+        WHERE ORDER_ID = #{orderId}
+        ORDER BY RM.MATERIAL_NAME
+    </select>
+
     <!-- 物资信息(NEW) -->
     <select id="getMaterialMesNew" parameterType="DECIMAL" resultType="java.util.LinkedHashMap">
         SELECT

+ 48 - 0
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderSeparateMapper.xml

@@ -466,6 +466,54 @@
         </if>
     </select>
 
+
+    <select id="getCapacityAllOrderTwo" parameterType="java.util.Map" resultType="java.util.Map">
+        SELECT
+        RM.MATERIAL_NAME || (
+        case
+        when OOM.MATERIAL_LUNO is not null
+        then '-' || oom.MATERIAL_LUNO
+        end
+        )
+        "materialName",
+        RM.MATERIAL_ID   "materialId",
+        OOM.MATERIAL_PRIORITY "materialPriority",
+        OOM.ORDER_MATERIAL_NUMBER "materialNumber",
+        CONCAT(CONCAT(RM.MATERIAL_MODEL, '('), CONCAT(MATERIAL_SPECIFICATION, ')')) "materialMC",
+        (case
+        when OOM.ORDER_MATERIAL_NUMBER is not null
+        then OOM.ORDER_MATERIAL_NUMBER || '件/支'
+        end
+        ) || (
+        case
+        when OOM.ORDER_MATERIAL_WEIGHT is not null
+        then '-'||OOM.ORDER_MATERIAL_WEIGHT  || '吨'
+        end
+        )
+        AS                                                                   "weightNum",
+        (   SELECT
+        LISTAGG ( TWR.RESULT_NET_WEIGHT, '、' ) within GROUP ( ORDER BY TWR.GROSS_SEGMENT_SQE )
+        FROM TMSTRUCK_WEIGHT_RESULT TWR
+        JOIN TMSTRUCK_TOTAL_RESULT TTR
+        ON TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+        WHERE TTR.ORDER_ID = OO.ORDER_ID and TWR.MATERIAL_ID = OOM.MATERIAL_ID
+        )                                                                    "netWeight"
+        FROM OMSTRUCK_ORDER OO
+        left join RMS_CAPACITY RC
+        on RC.CAPACITY_ID = OO.CAPACITY_ID
+        LEFT JOIN OMSTRUCK_ORDER_MATERIAL OOM
+        ON OOM.ORDER_ID=OO.ORDER_ID
+        LEFT JOIN RMS_MATERIAL RM
+        ON RM.MATERIAL_ID = OOM.MATERIAL_ID
+        LEFT JOIN RMS_WAREHOUSE RW
+        ON OOM.MATERIAL_PRIORITY = RW.WAREHOUSE_ID
+        WHERE CAPACITY_NUMBER = #{capacityNumber}
+        AND OO.ORDER_STATUS = 2
+        and to_char(OO.ORDER_RECEIVE_REFUSE_TIME,'YYYY-MM-DD') &gt;= #{startDate}
+        AND to_char(OO.ORDER_RECEIVE_REFUSE_TIME,'YYYY-MM-DD') &lt;= #{endDate}
+        ORDER BY RM.MATERIAL_NAME
+    </select>
+
 <!--  查询订单发货日期 (订单类型为2) -->
     <select id="getDeliveryDate" parameterType="object" resultType="int">
         select OO.ORDER_ID