Browse Source

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU/DAL-DAZHOU-AMS-API

luobang 2 years ago
parent
commit
5491bb7b2d

+ 84 - 1
src/main/java/com/steerinfo/dil/controller/AmsContractTruckPriceController.java

@@ -44,7 +44,6 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
     @Autowired
     IAmsContractTruckPriceService amsContractTruckPriceService;
 
-
     @Autowired
     ColumnDataFeign columnDataFeign;
 
@@ -57,6 +56,17 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
     @Autowired
     AmsContractTruckPriceMapper amsContractTruckPriceMapper;
 
+    /*@ApiOperation(value="导入单价的数据写入数据库")
+    @PostMapping("/importDataForAmsContractTransportPrice")
+    public RESTfulResult importDataForAmsContractTransportPrice(@RequestBody(required = false) List<Map<String,Object>> mapList){
+        //mapList为导入的数据,遍历导入进来的数据,如果数据存在在单价当中则将旧单价改为1,新增单价为0
+        //如果数据查找不到就在收货地址表新增地址,在新增单价
+        //1.查询所有单价数据
+        amsContractTruckPriceMapper
+        for (Map<String, Object> stringObjectMap : mapList) {
+        }
+    }*/
+
     @ApiOperation(value="查询汽运单价信息")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "apiId(109)", value = "表头", required = false, dataType = "Interger")
@@ -257,6 +267,79 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
         return success(salePriceList);
     }
 
+    @ApiOperation(value="查询汽运单价信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(519)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/updatenewdata")
+    public RESTfulResult updatenewdata(@RequestBody(required=false) Map<String,Object> mapValue,
+                                                               Integer apiId,
+                                                               Integer pageNum,
+                                                               Integer pageSize,
+                                                               String con,String userId) throws ParseException {
+        if (con != null && !con.equals("undefined")) {
+            mapValue.put("con","%" + con + "%");
+        }else {
+            mapValue.put("con","%" +"%");
+        }
+//        if (userId != null && !userId.equals("undefined")) {
+//            //查询承运商ID
+//           String carrierName1 = amsContractTruckPriceService.getCarrierNameForDetail(userId);
+//           mapValue.put("carrierName1","%" + carrierName1 + "%");
+//        }
+        //1.先查询出收货地址的所有收货ID
+        List<Map<String, Object>> receiveAddress = amsContractTruckPriceService.getReceiveAddressId(mapValue);
+        //2.查询出该收货所有的单价信息
+        List<Map<String, Object>> saleOrderList = amsContractTruckPriceService.getAmsContractTransportPriceForDetail(mapValue);
+        //3.遍历查询出最近的单价信息
+        List<Map<String,Object>> salePriceList=new LinkedList<>();
+        //格式化
+        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+        //获取数据的订单时间
+        Date orderTime = simpleDateFormat.parse((String) mapValue.get("orderTime"));
+        //最近的留下
+        for (Map<String, Object> address : receiveAddress) {
+            String address1 = (String) address.get("address");
+            //BigDecimal placeId = bigDecimal;
+            Map<String,Object> map1=new HashMap<>();
+            int flag=0;
+            for (Map<String, Object> stringObjectMap : saleOrderList) {
+                String address2 = (String) stringObjectMap.get("address");
+                //单价的执行日期
+                Date priceDate = (Date) stringObjectMap.get("priceDate");
+                if (address2 ==null||priceDate==null){
+                    continue;
+                }
+                String format = simpleDateFormat.format(priceDate);
+                Date parse = simpleDateFormat.parse(format);
+                //Date parse1 = simpleDateFormat.parse("2022-12-10")
+                if (parse.before(orderTime)||parse.equals(orderTime)){
+                    if (address2.equals(address1)){
+                        flag=1;
+                        if (map1.size()==0){
+                            map1.putAll(stringObjectMap);
+                        }else{
+                            //比较日期(如果日期在存入的日期之后,则存入该日期)
+                            Date priceDate1 = (Date) map1.get("priceDate");
+                            String format1 = simpleDateFormat.format(priceDate1);
+                            Date parse1 = simpleDateFormat.parse(format1);
+                            if (parse.after(parse1)){
+                                map1.clear();
+                                map1.putAll(stringObjectMap);
+                            }
+                        }
+                    }
+                }
+            }
+            if (flag==1){
+                BigDecimal priceid = (BigDecimal) map1.get("priceid");
+                amsContractTruckPriceMapper.updateDeletedTemplate(priceid);
+                salePriceList.add(map1);
+            }
+        }
+        return success(salePriceList);
+    }
+
     @ApiOperation(value="查询内转汽运单价信息")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "apiId(109)", value = "表头", required = false, dataType = "Interger")

+ 7 - 0
src/main/java/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.java

@@ -46,6 +46,8 @@ public interface AmsContractTruckPriceMapper extends IBaseMapper<AmsContractTran
     String getCarrierNameForDetail(String userId);
     //获取收货地址的信息
     List<Map<String,Object>> getReceiveAddressId(Map<String,Object> map);
+    //改deleted为1
+    int updateDeletedTemplate(BigDecimal priceId);
     //获取已经计算出的单价值
     AmsContractTransportPrice getOnePriceMap(Map<String,Object> map);
     //获取汽运单价信息
@@ -123,4 +125,9 @@ public interface AmsContractTruckPriceMapper extends IBaseMapper<AmsContractTran
 
     List<Map<String, Object>> getPriceValueListInward(BigDecimal oilTypeId);
 
+    //子表信息复制新增、
+    int insertIntoAmsContractForMaterial(Map<String,Object> map);
+
+    //getAmsContractMaterialData
+    List<Map<String, Object>> getAmsContractMaterialData(BigDecimal priceId);
 }

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

@@ -207,4 +207,7 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
 
     BigDecimal getPriceIdByPlaceId(BigDecimal placeId);
 
+    //查询车牌号是否是黑名单
+    int isBlackList(String capacityNumber);
+
 }

+ 24 - 16
src/main/java/com/steerinfo/dil/service/impl/AmsContractTruckPriceServiceImpl.java

@@ -363,7 +363,6 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         }else if(type.compareTo(new BigDecimal(2)) == 0) {
             PriceValueList = amsContractTruckPriceMapper.getPriceValueListInward(oilTypeId);
         }
-
         for (Map<String, Object> stringObjectMap : PriceValueList) {
             //有距离则是销售钢材
             if (stringObjectMap.get("haulDistance")!=null) {
@@ -381,17 +380,17 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
                     BigDecimal distance = DataChange.dataToBigDecimal(stringObjectMap.get("haulDistance"));
                     if (zbDistance != null && distance != null && zbDistance.intValue()!=0 && distance.intValue()!=0){
                         BigDecimal subtract = zbDistance.subtract(distance);
-                        if (subtract.intValue()>10 || subtract.intValue()<-10){
-                            //大于正负10km重新计算价格
-                            //跳过
-                            continue;
-                        }else{
-                            //小于10km取中标价格
-                            Map<String,Object> updatePrice=new HashMap<>();
-                            updatePrice.put("priceId",DataChange.dataToBigDecimal(stringObjectMap.get("priceId")));
-                            updatePrice.put("priceValue",DataChange.dataToBigDecimal(zb.get("priceValue")));
-                            return amsContractTruckPriceMapper.updateByPriceId(updatePrice);
-                        }
+//                        if (subtract.intValue()>10 || subtract.intValue()<-10){
+//                            //大于正负10km重新计算价格
+//                            //跳过
+//                            continue;
+//                        }else{
+//                            //小于10km取中标价格
+//                            /*Map<String,Object> updatePrice=new HashMap<>();
+//                            updatePrice.put("priceId",DataChange.dataToBigDecimal(stringObjectMap.get("priceId")));
+//                            updatePrice.put("priceValue",DataChange.dataToBigDecimal(zb.get("priceValue")));
+//                            return amsContractTruckPriceMapper.updateByPriceId(updatePrice);*/
+//                        }
                     }
                 }
             }
@@ -410,10 +409,10 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
                 try{
                     if(newOilPrice.compareTo(oilpriceBase)==-1){
                         //直接降低油价
-                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
+                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice,type);
                     }else if (newOilPrice.compareTo(oilpriceBase)==1 && "1".equals(flag)){
                         //加上两个判断之后
-                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
+                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice,type);
                     }
                 }catch (Exception e){
                     e.printStackTrace();
@@ -456,7 +455,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
      * @throws Exception
      */
     @Transactional
-    public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice) throws ParseException {
+    public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice,BigDecimal type) throws ParseException {
         //定义将要改变的执行价
         BigDecimal nowPriceValue;
         //存储原运输单价实绩对象
@@ -473,6 +472,15 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
         //生成主键
         BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
+        //内转的话复制子表信息并新增
+        if(type.compareTo(new BigDecimal(2)) == 0){
+            List<Map<String, Object>> amsContractMaterialData = amsContractTruckPriceMapper.getAmsContractMaterialData(priceId);
+            for (Map<String, Object> amsContractMaterialDatum : amsContractMaterialData) {
+                amsContractMaterialDatum.put("i",i);
+                amsContractMaterialDatum.put("priceMaterialId",amsContractTruckPriceMapper.selectPriceMaterialMaxId());
+                amsContractTruckPriceMapper.insertIntoAmsContractForMaterial(amsContractMaterialDatum);
+            }
+        }
         //如果是钢材的单价那么就需要改变吨公里
         amsContractTransportPrice.setPriceId(i);
         //生成执行日期
@@ -525,7 +533,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         try {
             nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue(),formulaId);
             //保留两位小数
-            nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,0);
+            nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP);
             //调整纯苯运价
             amsContractTransportPrice.setPriceValue(nowPriceValue);
             //修改基准油价

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

@@ -888,6 +888,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             //    }
             //    throw new Exception(capacityNumber+"有未完成的运输订单任务,无法派单");
             //}
+            //查询车牌号是否是黑名单
+            if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
+                throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
+            }
             //非自提订单 && 本次校验GPS && 全局GPS校验打开
             if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0)){
                 Map<String,Object> locationResult = null;
@@ -2004,6 +2008,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         }catch (Exception e){
             //取值失败不处理,取默认值
         }
+        //查询车牌号是否是黑名单
+        if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
+            throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
+        }
         //非自提,单次校验且全局校验
         if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0)){
             Map<String,Object> data = (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();

+ 21 - 2
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -992,6 +992,12 @@
                            WHERE  ACTP.DELETED=0)
   </select>
 
+  <update id="updateDeletedTemplate">
+    update AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    set ACTP.DELETED=0
+    WHERE ACTP.PRICE_ID=#{priceId}
+</update>
+
   <!--获取全部承运商的信息-->
   <select id="getCarrierListByPrice" resultType="java.util.LinkedHashMap">
     select p0.*,(SELECT COUNT(*) "total" FROM RMS_CARRIER RC) "total" from (select RC.CARRIER_NAME "carrierName",RC.CARRIER_ID "carrierId",ROWNUM r
@@ -1336,7 +1342,7 @@
            a_t_price.place_id "placeId"
     from AMS_CONTRACT_TRANSPORT_PRICE a_t_price
     where a_t_price.OIL_TYPE_ID = #{oilTypeId} and a_t_price.DELETED = 0
-    and a_t_price.type = 1
+    and a_t_price.type=1
     order by reference_ht desc
   </select>
 
@@ -1534,7 +1540,8 @@
         price_value "priceValue"
         from  AMS_CONTRACT_TRANSPORT_PRICE
        where place_id in (select place_id from RMS_RECEIVE_PLACE t where address_id =
-       (select address_id from RMS_RECEIVE_PLACE t where place_id=#{placeId} )) and reference_ht is not null
+       (select address_id from RMS_RECEIVE_PLACE t where place_id=#{placeId} ))
+       --and reference_ht is not null
        AND DELETED = 0
        ORDER BY PRICE_DATE DESC
        FETCH FIRST 1 ROW ONLY
@@ -1613,6 +1620,18 @@
       and a_t_price.type in (2,5,6)
     order by a_t_price.PRICE_ID desc
   </select>
+
+  <select id="getAmsContractMaterialData" resultType="java.util.LinkedHashMap">
+    select ACPM.MATERIAL_ID "materialId" FROM AMS_CONTAACT_PRICE_MATERIAL ACPM
+    WHERE ACPM.PRICE_ID=#{priceId} AND ACPM.DELETED=0
+  </select>
+
+  <insert id="insertIntoAmsContractForMaterial">
+    insert into AMS_CONTAACT_PRICE_MATERIAL
+      (PRICE_MATERIAL_ID,MATERIAL_ID,PRICE_ID,DELETED)
+    VALUES(#{priceMaterialId},#{materialId},#{i},1)
+  </insert>
+
   <insert id="insertshdz" parameterType="map">
     insert into RMS_RECEIVE_ADDRESS (ADDRESS_ID, ADDRESS_PROVINCE, ADDRESS_DISTRICT
     <if test="addressTown!=null">

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

@@ -4714,5 +4714,10 @@
     AND ACTP.PLACE_ID = #{placeId}
     fetch first 1 row only
   </select>
+  <select id="isBlackList" resultType="java.lang.Integer">
+    SELECT count(CAPACITY_ID)
+    FROM RMS_CAPACITY
+    WHERE CAPACITY_NUMBER=#{capacityNumber} AND CAPACITY_BLACKLIST='是'
+  </select>
 
 </mapper>

+ 3 - 2
src/main/resources/com/steerinfo/dil/mapper/DilNoticeMapper.xml

@@ -462,8 +462,9 @@
       </if>
       <if test="insertTime!= null">
         and
-        <foreach collection="insertTime" item="item" open="(" separator="," close=")">
-          "insertTime" in #{item}
+        <foreach collection="insertTime" item="item" open="(" separator="or" close=")">
+          to_date(to_char("insertTime",'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
+          in to_date(#{item},'yyyy-mm-dd hh24:mi:ss')
         </foreach>
       </if>