Переглянути джерело

1、4.2单证编辑接口;

zk 1 рік тому
батько
коміт
692e140f7f

+ 15 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -167,6 +167,21 @@ public enum CarWaybillEnum {
                 || code == CarWaybillEnum.COMPLETION_UNLOADING.getCode();
     }
 
+    /**
+     * @param code 状态码
+     * @desc 是否可以变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public static boolean arriveLoading(int code) {
+        return code == CarWaybillEnum.WAIT_LOADING.getCode()
+                || code == CarWaybillEnum.COMPLETION_LOADING.getCode()
+                || code == CarWaybillEnum.WAIT_UNLOADING.getCode()
+                || code == CarWaybillEnum.COMPLETION_UNLOADING.getCode()
+                || code == CarWaybillEnum.APPROVAL_TREAT.getCode()
+                || code == CarWaybillEnum.APPROVAL_NO_PASS.getCode();
+    }
+
     /**
      * @param code 状态码
      * @desc 是否可以变更司机/车辆

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -406,12 +406,12 @@ public class KwtWaybillOrderController {
 
     /**
      * @param params {}
-     * @desc 修改单证-装卸货一起修改
+     * @desc 修改单证
      * @author zk
      * @date 2024/3/6
      **/
     @PostMapping("/editTicketV3")
-    public HttpResult editTicketV3(@RequestBody @Valid WaybillOrderTicketV3Dto params){
+    public HttpResult editTicketV3(@RequestBody @Valid WaybillOrderTicketV4Dto params){
         return waybillOrderV1Service.editTicketV1(params);
     }
 

+ 14 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTicketMapper.java

@@ -19,15 +19,13 @@ public interface KwtWaybillOrderTicketMapper extends BaseMapper<KwtWaybillOrderT
      * 查询车辆运单榜单信息
      * @param wOrderId 车辆订单id
      * @param wSubtaskId 运单子单ID
-     * @param wAddressId 运单地址ID
      * @param type 磅单类型(1装货单/2卸货单)
      * @desc 查询车辆运单榜单信息
      * @author zk
      * @date 2023/7/27
      * @return 榜单信息
      **/
-    List<KwtWaybillOrderTicket> findWaybillOrderTicket(@Param("wOrderId") Long wOrderId, @Param("wSubtaskId") Long wSubtaskId,
-                                                       @Param("wAddressId") Long wAddressId, @Param("type") Integer type);
+    List<KwtWaybillOrderTicket> findWaybillOrderTicket(@Param("wOrderId") Long wOrderId, @Param("wSubtaskId") Long wSubtaskId, @Param("type") Integer type);
 
     /**
      * 查询车辆运单榜单信息
@@ -39,7 +37,19 @@ public interface KwtWaybillOrderTicketMapper extends BaseMapper<KwtWaybillOrderT
      * @date 2023/7/27
      * @return 榜单信息
      **/
-    KwtWaybillOrderTicket findWaybillOrderTicketV1(@Param("wOrderId") Long wOrderId, @Param("type") Integer type, @Param("unit") String unit);
+    List<KwtWaybillOrderTicket> findWaybillOrderTicketV1(@Param("wOrderId") Long wOrderId, @Param("wSubtaskId") Long wSubtaskId,
+                                                   @Param("type") Integer type, @Param("unit") String unit);
+
+    /**
+     * 查询车辆运单榜单信息
+     * @param wAddressId 车辆订单地址id
+     * @param unit 单位
+     * @desc 查询车辆运单榜单信息
+     * @author zk
+     * @date 2023/7/27
+     * @return 榜单信息
+     **/
+    KwtWaybillOrderTicket findWaybillOrderTicketV2(@Param("wAddressId") Long wAddressId, @Param("unit") String unit);
 
     /**
      * 修改榜单删除标识

+ 0 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTicket.java

@@ -104,8 +104,6 @@ public class KwtWaybillOrderTicket implements Serializable {
     /**
      * 是否删除(0未删除,1删除)
      */
-    @TableLogic("0")
-//    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer delFlag;
 
     private static final long serialVersionUID = 1L;

+ 4 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -2424,11 +2424,11 @@ public class KwtWaybillOrderService {
         }
 
         //装货榜单
-        List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.ONE);
+        List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, NumberConstant.ONE);
         KwtWaybillOrderTicket loadTicket = CollectionUtils.isNotEmpty(loadTickets) ? loadTickets.get(NumberConstant.ZERO) : null;
         List<WaybillOrderLoadingVO> loadLoading = waybillOrderTicketService.agreement(waybillOrder, NumberConstant.ONE);
         //卸货榜单
-        List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.TWO);
+        List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, NumberConstant.TWO);
         KwtWaybillOrderTicket unloadTicket = CollectionUtils.isNotEmpty(unloadTickets) ? unloadTickets.get(NumberConstant.ZERO) : null;
         List<WaybillOrderLoadingVO> unloadLoading = waybillOrderTicketService.agreement(waybillOrder, NumberConstant.TWO);
 
@@ -2501,10 +2501,10 @@ public class KwtWaybillOrderService {
             return HttpResult.error("车辆运单信息不存在!");
         }
         //装货榜单
-        List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.ONE);
+        List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, NumberConstant.ONE);
         KwtWaybillOrderTicket loadTicket = CollectionUtils.isNotEmpty(loadTickets) ? loadTickets.get(NumberConstant.ZERO) : null;
         //卸货榜单
-        List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.TWO);
+        List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, NumberConstant.TWO);
         KwtWaybillOrderTicket unloadTicket = CollectionUtils.isNotEmpty(unloadTickets) ? unloadTickets.get(NumberConstant.ZERO) : null;
 
         //装货地址

+ 41 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderTicketService.java

@@ -36,7 +36,7 @@ import java.util.Map;
  */
 @Slf4j
 @Service
-@SuppressWarnings("all")
+//@SuppressWarnings("all")
 public class KwtWaybillOrderTicketService {
     @Autowired
     KwtWaybillOrderMapper waybillOrderMapper;
@@ -132,7 +132,7 @@ public class KwtWaybillOrderTicketService {
         urls = FileUtils.replaceAllBatch(urls);
         if (CollectionUtils.isNotEmpty(loading)) {
             for (WaybillOrderTicketLoadingDto ticket : loading) {
-                KwtWaybillOrderTicket oldTicket = waybillOrderTicketMapper.findWaybillOrderTicketV1(wOrderId, type, ticket.getUnit());
+                KwtWaybillOrderTicket oldTicket = waybillOrderTicketMapper.findWaybillOrderTicketV1(wOrderId, null, type, ticket.getUnit()).get(0);
 //                Boolean bool1 = oldTicket.getAmount().doubleValue() == ticket.getAmount().doubleValue();
 //                Boolean bool2 = oldTicket.getUrls().equals(urls);
 
@@ -163,6 +163,42 @@ public class KwtWaybillOrderTicketService {
         }
     }
 
+    /**
+     * @param loading     装载信息
+     * @param wAddressId    车辆运单地址ID
+     * @param urls        榜单地址
+     * @param operateTime 操作时间
+     * @desc 更新办单
+     * @author zk
+     * @date 2023/12/6
+     */
+    public void editTicketV1(List<WaybillOrderTicketLoadingDto> loading, Long wAddressId, String urls, Date operateTime) {
+        urls = FileUtils.replaceAllBatch(urls);
+        if (CollectionUtils.isNotEmpty(loading)) {
+            for (WaybillOrderTicketLoadingDto ticket : loading) {
+                KwtWaybillOrderTicket oldTicket = waybillOrderTicketMapper.findWaybillOrderTicketV2(wAddressId, ticket.getUnit());
+                if (oldTicket == null) {
+                    continue;
+                }
+                //删除
+                oldTicket.setDelFlag(Global.YES);
+                waybillOrderTicketMapper.updateById(oldTicket);
+
+                //新增
+                KwtWaybillOrderTicket orderTicket = new KwtWaybillOrderTicket();
+                orderTicket.setWOrderId(oldTicket.getWOrderId());
+                orderTicket.setWSubtaskId(oldTicket.getWSubtaskId());
+                orderTicket.setWAddressId(oldTicket.getWAddressId());
+                orderTicket.setType(oldTicket.getType());
+                orderTicket.setUnit(oldTicket.getUnit());
+                orderTicket.setAmount(ticket.getAmount());
+                orderTicket.setUrls(urls);
+                orderTicket.setOperateTime(operateTime);
+                waybillOrderTicketMapper.insert(orderTicket);
+            }
+        }
+    }
+
     /**
      * 运单详情单证信息
      *
@@ -179,9 +215,9 @@ public class KwtWaybillOrderTicketService {
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装货
-        List<KwtWaybillOrderTicket> load = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.ONE);
+        List<KwtWaybillOrderTicket> load = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.ONE);
         //卸货
-        List<KwtWaybillOrderTicket> unload = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null, null, NumberConstant.TWO);
+        List<KwtWaybillOrderTicket> unload = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.TWO);
         if (CollectionUtils.isNotEmpty(load)) {
             List<WaybillOrderLoadingVO> loadLoading = new ArrayList<>();
             load.forEach(e -> {
@@ -222,7 +258,7 @@ public class KwtWaybillOrderTicketService {
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装载信息
-        List<KwtWaybillOrderTicket> loading = waybillOrderTicketMapper.findWaybillOrderTicket(waybillOrder.getId(), null, null, type);
+        List<KwtWaybillOrderTicket> loading = waybillOrderTicketMapper.findWaybillOrderTicket(waybillOrder.getId(), null, type);
         if (CollectionUtils.isNotEmpty(loading)) {
             loading.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;

+ 47 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -788,7 +788,7 @@ public class KwtWaybillOrderV1Service {
         if (waybillOrder == null) {
             return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
         }
-        //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能装货
+        //到达装货地的车辆运单才能装货
         if (!waybillOrder.getStatus().equals(CarWaybillEnum.WAIT_LOADING.getCode())) {
             return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能装货!");
         }
@@ -859,7 +859,7 @@ public class KwtWaybillOrderV1Service {
         if (waybillOrder == null) {
             return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
         }
-        //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能卸货
+        //到达卸货地的车辆运单才能卸货
         if (!waybillOrder.getStatus().equals(CarWaybillEnum.WAIT_UNLOADING.getCode())) {
             return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能卸货!");
         }
@@ -888,13 +888,13 @@ public class KwtWaybillOrderV1Service {
         setWaybillOrderTrack(waybillOrder.getId(), params.getWSubtaskId(), params.getOperateTime(), waybillOrder.getStatus(), params.getRemark());
 
         /*4、新增装卸货榜单信息*/
-        waybillOrderTicketService.addTicketV1(loading, waybillOrder.getId(), params.getWSubtaskId(), params.getWAddressId(), params.getUrls(), params.getOperateTime(), Global.NUMERICAL_ONE);
+        waybillOrderTicketService.addTicketV1(loading, waybillOrder.getId(), params.getWSubtaskId(), params.getWAddressId(), params.getUrls(), params.getOperateTime(), Global.NUMERICAL_TWO);
 
         /*5、校验运单-子单是否全部运输完毕*/
         //运单地址信息
         List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findBySubtaskId(params.getWSubtaskId(), null);
         //运单地址榜单信息
-        List<KwtWaybillOrderTicket> tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, params.getWSubtaskId(), null, null);
+        List<KwtWaybillOrderTicket> tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, params.getWSubtaskId(), null);
         //运单子单是否已经运输完成
         boolean bool = addresses.size() == tickets.size();
         if (!bool) {
@@ -909,7 +909,7 @@ public class KwtWaybillOrderV1Service {
         //运单地址信息
         addresses = waybillOrderAddressDao.findByAddresses(params.getWOrderId(), null);
         //运单地址榜单信息
-        tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, null);
+        tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null);
         //运单是否已经运输完成
         bool = addresses.size() == tickets.size();
         if (!bool) {
@@ -995,8 +995,49 @@ public class KwtWaybillOrderV1Service {
      * @date 2024/3/6
      **/
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult editTicketV1(WaybillOrderTicketV3Dto params) {
+    public HttpResult editTicketV1(WaybillOrderTicketV4Dto params) {
+        /*1、校验*/
+        Long wOrderId = params.getWOrderId();
+        //运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(wOrderId);
+        if (waybillOrder == null) {
+            return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
+        }
+        //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能卸货
+        if (!CarWaybillEnum.arriveLoading(waybillOrder.getStatus())) {
+            return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能修改榜单!");
+        }
+        //地址信息
+        KwtWaybillOrderAddress address = waybillOrderAddressDao.selectById(params.getWAddressId());
+        if (address == null) {
+            return HttpResult.error("运单该地址已不存在!");
+        }
 
+        /*2、更新装卸货榜单信息*/
+        //榜单信息
+        List<WaybillOrderTicketLoadingDto> loading = params.getLoading();
+        waybillOrderTicketService.editTicketV1(loading, params.getWAddressId(), params.getUrls(), params.getOperateTime());
+
+        /*3、更新车辆运单-子单*/
+        //运单子单信息
+        KwtWaybillOrderSubtask orderSubtask = waybillOrderSubtaskDao.selectById(params.getWSubtaskId());
+        //物流运单信息
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(orderSubtask.getLOrderId());
+        //运单-子单装货榜单信息
+        List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicketV1(wOrderId, params.getWSubtaskId(), AddressDefaultTypeEnum.SHIPMENT.getCode(), orderSubtask.getUnit());
+        //运单-子单卸货榜单信息
+        List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicketV1(wOrderId, params.getWSubtaskId(), AddressDefaultTypeEnum.TAKE.getCode(), orderSubtask.getUnit());
+        //装货-总量
+        BigDecimal loadAmount = loadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
+        //卸货-总量
+        BigDecimal unloadAmount = unloadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
+        orderSubtask.setLoadAmount(loadAmount.doubleValue());
+        orderSubtask.setUnloadAmount(unloadAmount.doubleValue());
+        orderSubtask.setDeficitAmount(BigDecimal.valueOf(orderSubtask.getLoadAmount()).subtract(BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
+        BigDecimal deficitPrice = deficitPrice(BigDecimal.valueOf(orderSubtask.getLoadAmount()), BigDecimal.valueOf(orderSubtask.getDeficitAmount()),
+                logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
+        orderSubtask.setDeficitPrice(deficitPrice.doubleValue());
+        waybillOrderSubtaskDao.updateById(orderSubtask);
         return HttpResult.ok();
     }
 

+ 21 - 6
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml

@@ -37,9 +37,6 @@
         <if test="wSubtaskId != null and wSubtaskId != ''">
             and w_subtask_id = #{wSubtaskId, jdbcType=BIGINT}
         </if>
-        <if test="wAddressId != null and wAddressId != ''">
-            and w_address_id = #{wAddressId, jdbcType=BIGINT}
-        </if>
         <if test="type != null and type != ''">
             and type = #{type, jdbcType=INTEGER}
         </if>
@@ -47,14 +44,17 @@
 
     <select id="findWaybillOrderTicketV1" resultType="com.sckw.transport.model.KwtWaybillOrderTicket" >
         select
-        id, w_order_id wOrderId, `type`, unit, amount, gross_amount grossAmount, tare_amount tareAmount,
-        urls, operate_time, remark, `status`, create_by createBy, create_time createTime, update_by updateBy,
-        update_time updateTime,del_flag as delFlag
+        id, w_order_id wOrderId, w_subtask_id wSubtaskId, w_address_id wAddressId, `type`, unit, amount,
+        gross_amount grossAmount, tare_amount tareAmount, urls, operate_time, remark, `status`, create_by createBy,
+        create_time createTime, update_by updateBy, update_time updateTime
         from kwt_waybill_order_ticket
         where del_flag = 0
         <if test="wOrderId != null and wOrderId != ''">
             and w_order_id = #{wOrderId, jdbcType=BIGINT}
         </if>
+        <if test="wSubtaskId != null and wSubtaskId != ''">
+            and w_subtask_id = #{wSubtaskId, jdbcType=BIGINT}
+        </if>
         <if test="type != null and type != ''">
             and type = #{type, jdbcType=INTEGER}
         </if>
@@ -63,6 +63,21 @@
         </if>
     </select>
 
+    <select id="findWaybillOrderTicketV2" resultType="com.sckw.transport.model.KwtWaybillOrderTicket" >
+        select
+        id, w_order_id wOrderId, w_subtask_id wSubtaskId, w_address_id wAddressId, `type`, unit, amount,
+        gross_amount grossAmount, tare_amount tareAmount, urls, operate_time, remark, `status`, create_by createBy,
+        create_time createTime, update_by updateBy, update_time updateTime
+        from kwt_waybill_order_ticket
+        where del_flag = 0
+        <if test="wAddressId != null and wAddressId != ''">
+            and w_address_id = #{wAddressId, jdbcType=BIGINT}
+        </if>
+        <if test="unit != null and unit != ''">
+            and unit = #{unit, jdbcType=VARCHAR}
+        </if>
+    </select>
+
     <update id="deleteTicket">
         UPDATE kwt_waybill_order_ticket set del_flag = 1
         WHERE del_flag = 0