Browse Source

凯和扣货功能,同时修改了订单修改接口 收付费审核通过接口 收付费撤销收付费接口

lazhaoqian 3 years ago
parent
commit
3592584d6f

+ 16 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shipping/controller/KHUpdateOrderMessage.java

@@ -167,6 +167,22 @@ public class KHUpdateOrderMessage extends BaseController {
         tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
         return tWarehousebillsService.exportInventory(tWarehouseBills);
     }
+    /**
+     * 扣货 3 取消扣货 2
+     * @param tWarehouseBills
+     * @return
+     */
+    @PostMapping("/detention")
+    public AjaxResult detention(@RequestBody TWarehouseBills tWarehouseBills){
+        if (StringUtils.isEmpty(tWarehouseBills.getfCaregoStatus())){
+            return AjaxResult.error("请选择扣货或者取消扣货");
+        }
+        if (CollectionUtils.isEmpty(tWarehouseBills.getOrderList())){
+            return AjaxResult.error("请选择要操作的提单号");
+        }
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return tWarehousebillsService.detention(tWarehouseBills,loginUser);
+    }
 
 }
 

+ 8 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -475,6 +475,10 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         } else if ("F".equals(at.getIffinalItem())) {
                             fettle = 5L;
                         }
+                        //修改主订单费用信息
+                        if (auditItems.getActId() >= 440 && auditItems.getActId() <= 450) {
+                            tWarehouseBillsService.updateMessage(auditItems.getBillId());
+                        }
                         // 变更财务状态
                         AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
                         String code = ajaxResult.get("code").toString();
@@ -1009,6 +1013,10 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.error("审批撤销失败: 更新审批状态失败");
             }
+            /*//修改主订单费用信息
+            if (auditItems.getActId() >= 440 && auditItems.getActId() <= 450) {
+                tWarehouseBillsService.updateMessage(auditItems.getBillId());
+            }*/
         } else if (auditItems.getActId() == 460) {
             fettle = 2L;
             TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();

+ 36 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java

@@ -77,6 +77,8 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static java.util.stream.Collectors.toList;
+
 /**
  * 财务数据主Service业务层处理
  *
@@ -1185,9 +1187,42 @@ public class TFeeServiceImpl implements ITFeeService {
                 }
             }
         }
+        //修改主订单费用信息
+        if (fBilltype.equals("DCRevoke")) {
+            this.updateMessage(tFee.getfId());
+        }
         return AjaxResult.success();
     }
-
+    public void updateMessage(Long fid) {
+        List<TFeeDo> list = tFeeDoMapper.selectTFeeDoByfPid(fid);
+        if (CollectionUtils.isNotEmpty(list)){
+            List<Long> collect = list.stream().map(TFeeDo::getfSrcpid).collect(toList());
+            collect.stream().forEach(item ->{
+                TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(item);
+                //获取订舱单位
+                TCorps tCorps = tCorpsMapper.selectTCorpsById(warehouseBills.getfCorpid());
+                //实收费用
+                List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectFeesByPId(item, "D");
+                //实付费用
+                List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectFeesByPId(item, "C");
+                TWarehouseBills tWarehouseBills = new TWarehouseBills();
+                tWarehouseBills.setfId(item);
+                tWarehouseBills.setfRecycle(warehousebillsfees.stream().filter(ei->ei.getfStlamount()!=null && ei.getfBillstatus().longValue() == 6L).map(TWarehousebillsfees::getfStlamount).reduce(BigDecimal.ZERO,BigDecimal::add));
+                tWarehouseBills.setfPay(tWarehousebillsfees.stream().filter(ei->ei.getfStlamount()!=null && ei.getfBillstatus().longValue() == 6L).map(TWarehousebillsfees::getfStlamount).reduce(BigDecimal.ZERO,BigDecimal::add));
+                //如果订舱单位是凯和 应收尾0 也是放货状态
+                //1:  未放货   应收>0  应收>实收
+                //2:放货      应收>0  应收=实收
+                if (tCorps.getfCname().equals("青岛凯和志诚物流有限公司") && warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) == 0 ){
+                    tWarehouseBills.setfCaregoStatus("2");
+                }else if (warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) > 0 && warehouseBills.getfReceivable().compareTo(tWarehouseBills.getfRecycle()) > 0){
+                    tWarehouseBills.setfCaregoStatus("1");
+                }else if (warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) > 0 && warehouseBills.getfReceivable().compareTo(tWarehouseBills.getfRecycle()) == 0){
+                    tWarehouseBills.setfCaregoStatus("2");
+                }
+                tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
+            });
+        }
+    }
     @Override
     public AjaxResult queryRemove(Long fId) {
         TFee tFee = tFeeMapper.selectTFeeById(fId);

+ 82 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehouseBills.java

@@ -760,6 +760,43 @@ public class TWarehouseBills extends BaseEntity {
     //凯和订单ID
     @TableField(exist = false)
     private Long[] orderId;
+    /** 应收 */
+    @Excel(name = "应收")
+    private BigDecimal fReceivable;
+
+    /** 实收 */
+    @Excel(name = "实收")
+    private BigDecimal fRecycle;
+
+    /** 应付 */
+    @Excel(name = "应付")
+    private BigDecimal fDue;
+
+    /** 实付 */
+    @Excel(name = "实付")
+    private BigDecimal fPay;
+    /**
+     * 货物状态
+     * 0 :应收=0 默认为  录入  订舱单位 为凯和志成  如果应收=0状态也为放货
+     * 1:  未放货   应收>0  应收>实收
+     * 2:放货      应收>0  应收=实收
+     */
+    /** 货物状态 */
+    @Excel(name = "货物状态")
+    private String fCaregoStatus;
+    /**
+     * 操作扣货的订单
+     */
+    @TableField(exist = false)
+    private List<Long> orderList;
+
+    public List<Long> getOrderList() {
+        return orderList;
+    }
+
+    public void setOrderList(List<Long> orderList) {
+        this.orderList = orderList;
+    }
 
     public List<String> getItemBsDateList() {
         return itemBsDateList;
@@ -1915,6 +1952,46 @@ public class TWarehouseBills extends BaseEntity {
         this.fDismountStatus = fDismountStatus;
     }
 
+    public BigDecimal getfReceivable() {
+        return fReceivable;
+    }
+
+    public void setfReceivable(BigDecimal fReceivable) {
+        this.fReceivable = fReceivable;
+    }
+
+    public BigDecimal getfRecycle() {
+        return fRecycle;
+    }
+
+    public void setfRecycle(BigDecimal fRecycle) {
+        this.fRecycle = fRecycle;
+    }
+
+    public BigDecimal getfDue() {
+        return fDue;
+    }
+
+    public void setfDue(BigDecimal fDue) {
+        this.fDue = fDue;
+    }
+
+    public BigDecimal getfPay() {
+        return fPay;
+    }
+
+    public void setfPay(BigDecimal fPay) {
+        this.fPay = fPay;
+    }
+
+    public String getfCaregoStatus() {
+        return fCaregoStatus;
+    }
+
+    public void setfCaregoStatus(String fCaregoStatus) {
+        this.fCaregoStatus = fCaregoStatus;
+    }
+
     @Override
     public String toString() {
         return "TWarehouseBills{" +
@@ -2058,6 +2135,11 @@ public class TWarehouseBills extends BaseEntity {
                 ", fDismountStatus=" + fDismountStatus +
                 ", billList=" + billList +
                 ", fServiceitemsNew=" + fServiceitemsNew +
+                ", fReceivable=" + fReceivable +
+                ", fRecycle=" + fRecycle +
+                ", fDue=" + fDue +
+                ", fPay=" + fPay +
+                ", fCaregoStatus=" + fCaregoStatus +
                 '}';
     }
 }

+ 13 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -828,4 +828,17 @@ public interface ITWarehouseBillsService {
      */
     public List<Map<String, Object>> inAndOutStockList();
 
+    /**
+     * 扣货 3 取消扣货 2
+     * @param tWarehouseBills
+     * @return
+     */
+    public AjaxResult detention(TWarehouseBills tWarehouseBills,LoginUser loginUser);
+
+    /**
+     * 修改订单实收实付费用
+     * @param fid
+     */
+    public void updateMessage(Long fid);
+
 }

+ 76 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -65,6 +65,7 @@ import com.ruoyi.warehouseBusiness.mapper.*;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import lombok.AllArgsConstructor;
 import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.formula.functions.T;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
@@ -2942,6 +2943,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
             map.put("tWarehousebillsCntrList", tWarehousebillsCntrList);
         }
+        //应收费用
+        List<TWarehousebillsfees> fd =  tWarehousebillsfeesMapper.selectFeesByPId(warehouseBills.getfId(), "D");
+        //应付费用
+        List<TWarehousebillsfees> fc = tWarehousebillsfeesMapper.selectFeesByPId(warehouseBills.getfId(), "C");
+        warehouseBills.setfReceivable(fd.stream().filter(ei->ei.getfAmount()!=null).map(TWarehousebillsfees::getfAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
+        warehouseBills.setfDue(fc.stream().filter(ei->ei.getfAmount()!=null).map(TWarehousebillsfees::getfAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
         return AjaxResult.success("success", map);
     }
 
@@ -8195,4 +8203,72 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 
         return tWarehouseBillsMapper.inAndOutStockList(external);
     }
+
+    /**
+     * 扣货  fCaregoStatus 传 3 为要改为状态扣货
+     * 取消扣货  fCaregoStatus 传 2 为要改为状态放货
+     * @param tWarehouseBills
+     * @param loginUser
+     * @return
+     */
+    @Override
+    public AjaxResult detention(TWarehouseBills tWarehouseBills, LoginUser loginUser) {
+        List<String> stringList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(tWarehouseBills.getOrderList())){
+            tWarehouseBills.getOrderList().stream().forEach(item ->{
+                TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(item);
+                TWarehouseBills bills = new TWarehouseBills();
+                bills.setfId(item);
+                bills.setfCaregoStatus(tWarehouseBills.getfCaregoStatus());
+                //2 取消扣货 3 扣货
+                if (tWarehouseBills.getfCaregoStatus().equals("2") && warehouseBills.getfCaregoStatus().equals("3")){
+                   tWarehouseBillsMapper.updateTWarehousebills(bills);
+                }else if (tWarehouseBills.getfCaregoStatus().equals("3") && warehouseBills.getfCaregoStatus().equals("2")){
+                    tWarehouseBillsMapper.updateTWarehousebills(bills);
+                }else {
+                    stringList.add(warehouseBills.getfMblno());
+                }
+            });
+        }
+        if (CollectionUtils.isNotEmpty(stringList) && tWarehouseBills.getfCaregoStatus().equals("2")){
+            return AjaxResult.error("部分取消扣货失败,订单状态不为扣货的有:"+ org.apache.commons.lang.StringUtils.join(stringList.toArray(), ","));
+        }else if (CollectionUtils.isNotEmpty(stringList) && tWarehouseBills.getfCaregoStatus().equals("3")){
+            return AjaxResult.error("部分扣货失败,订单状态不为放货的有:"+ org.apache.commons.lang.StringUtils.join(stringList.toArray(), ","));
+        }
+        else {
+            return AjaxResult.success("操作成功");
+        }
+    }
+
+    @Override
+    public void updateMessage(Long fid) {
+        List<TFeeDo> list = tFeeDoMapper.selectTFeeDoByfPid(fid);
+        if (CollectionUtils.isNotEmpty(list)){
+            List<Long> collect = list.stream().map(TFeeDo::getfSrcpid).collect(toList());
+            collect.stream().forEach(item ->{
+                TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(item);
+                //获取订舱单位
+                TCorps tCorps = tCorpsMapper.selectTCorpsById(warehouseBills.getfCorpid());
+                //实收费用
+                List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectFeesByPId(item, "D");
+                //实付费用
+                List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectFeesByPId(item, "C");
+                TWarehouseBills tWarehouseBills = new TWarehouseBills();
+                tWarehouseBills.setfId(item);
+                tWarehouseBills.setfRecycle(warehousebillsfees.stream().filter(ei->ei.getfStlamount()!=null && ei.getfBillstatus().longValue() == 6L).map(TWarehousebillsfees::getfStlamount).reduce(BigDecimal.ZERO,BigDecimal::add));
+                tWarehouseBills.setfPay(tWarehousebillsfees.stream().filter(ei->ei.getfStlamount()!=null && ei.getfBillstatus().longValue() == 6L).map(TWarehousebillsfees::getfStlamount).reduce(BigDecimal.ZERO,BigDecimal::add));
+                //如果订舱单位是凯和 应收尾0 也是放货状态
+                //1:  未放货   应收>0  应收>实收
+                //2:放货      应收>0  应收=实收
+                if (tCorps.getfCname().equals("青岛凯和志诚物流有限公司") && warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) == 0 ){
+                    tWarehouseBills.setfCaregoStatus("2");
+                }else if (warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) > 0 && warehouseBills.getfReceivable().compareTo(tWarehouseBills.getfRecycle()) > 0){
+                    tWarehouseBills.setfCaregoStatus("1");
+                }else if (warehouseBills.getfReceivable().compareTo(BigDecimal.ZERO) > 0 && warehouseBills.getfReceivable().compareTo(tWarehouseBills.getfRecycle()) == 0){
+                    tWarehouseBills.setfCaregoStatus("2");
+                }
+                tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
+            });
+        }
+    }
 }

+ 50 - 3
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsMapper.xml

@@ -123,6 +123,11 @@
         <result property="fDismountStatus"    column="f_dismount_status"    />
         <result property="fFeeStatus"    column="f_fee_status"    />
         <result property="fServiceitemsNew"    column="f_serviceitems_new"    />
+        <result property="fReceivable"    column="f_receivable"    />
+        <result property="fRecycle"    column="f_recycle"    />
+        <result property="fDue"    column="f_due"    />
+        <result property="fPay"    column="f_pay"    />
+        <result property="fCaregoStatus"    column="f_carego_status"    />
     </resultMap>
 
     <resultMap type="WarehouseBillsVO" id="WarehousebillsVOResult">
@@ -147,7 +152,7 @@
         free_container_date, f_business_attribution, f_fee_status, f_supervision_unit, f_declaration_elements, f_part_number, f_ifinspection, f_value, f_weighing_date,
         f_ifsampling, send_sample_date, f_ifweight_recovery, weight_recovery_date, warehouse_status, f_times ,f_date_changed, f_chargetype,f_weigh_weight,
         f_predict_branch,f_grade,f_delivery_details,f_salesman_id,f_itemstatus,f_updete_status, f_submit_update, f_delete_status,f_remarks_fees,f_cargo_planning,
-        f_arrival_status,f_dismount_status,f_serviceitems_new from t_warehousebills
+        f_arrival_status,f_dismount_status,f_serviceitems_new,f_receivable,f_recycle,f_due,f_pay,f_carego_status from t_warehousebills
     </sql>
 
     <select id="selectTWarehousebillsList" parameterType="TWarehousebills" resultMap="TWarehousebillsResult">
@@ -1076,6 +1081,11 @@
             <if test="fArrivalStatus != null">f_arrival_status,</if>
             <if test="fDismountStatus != null">f_dismount_status,</if>
             <if test="fServiceitemsNew != null">f_serviceitems_new,</if>
+            <if test="fReceivable != null">f_receivable,</if>
+            <if test="fRecycle != null">f_recycle,</if>
+            <if test="fDue != null">f_due,</if>
+            <if test="fPay != null">f_pay,</if>
+            <if test="fCaregoStatus != null">f_carego_status,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="fBillno != null">#{fBillno},</if>
@@ -1195,6 +1205,11 @@
             <if test="fArrivalStatus != null">#{fArrivalStatus},</if>
             <if test="fDismountStatus != null">#{fDismountStatus},</if>
             <if test="fServiceitemsNew != null">#{fServiceitemsNew},</if>
+            <if test="fReceivable != null">#{fReceivable},</if>
+            <if test="fRecycle != null">#{fRecycle},</if>
+            <if test="fDue != null">#{fDue},</if>
+            <if test="fPay != null">#{fPay},</if>
+            <if test="fCaregoStatus != null">#{fCaregoStatus},</if>
         </trim>
     </insert>
 
@@ -1318,6 +1333,11 @@
             <if test="fArrivalStatus != null">f_arrival_status = #{fArrivalStatus},</if>
             <if test="fDismountStatus != null">f_dismount_status = #{fDismountStatus},</if>
             <if test="fServiceitemsNew != null">f_serviceitems_new = #{fServiceitemsNew},</if>
+            <if test="fReceivable != null">f_receivable = #{fReceivable},</if>
+            <if test="fRecycle != null">f_recycle = #{fRecycle},</if>
+            <if test="fDue != null">f_due = #{fDue},</if>
+            <if test="fPay != null">f_pay = #{fPay},</if>
+            <if test="fCaregoStatus != null">f_carego_status = #{fCaregoStatus},</if>
         </trim>
         where f_id = #{fId}
     </update>
@@ -1443,6 +1463,11 @@
             <if test="fArrivalStatus != null">f_arrival_status = #{fArrivalStatus},</if>
             <if test="fDismountStatus != null">f_dismount_status = #{fDismountStatus},</if>
             <if test="fServiceitemsNew != null">f_serviceitems_new = #{fServiceitemsNew},</if>
+            <if test="fReceivable != null">f_receivable = #{fReceivable},</if>
+            <if test="fRecycle != null">f_recycle = #{fRecycle},</if>
+            <if test="fDue != null">f_due = #{fDue},</if>
+            <if test="fPay != null">f_pay = #{fPay},</if>
+            <if test="fCaregoStatus != null">f_carego_status = #{fCaregoStatus},</if>
         </trim>
         where f_id = #{fId}
     </update>
@@ -1950,7 +1975,18 @@
         tw.f_voyid fVoyid,
         tw.remark remark,
         IFNULL(tcntr.loadCntr,0) AS loadCntr,
-        tw.f_serviceitems_new AS fServiceitemsNew
+        tw.f_serviceitems_new AS fServiceitemsNew,
+        tw.f_receivable AS fReceivable,
+        tw.f_recycle AS fRecycle,
+        tw.f_due AS fDue,
+        tw.f_pay AS fPay,
+        CASE
+        WHEN tp.f_name = '青岛凯和志诚物流有限公司' AND tw.f_receivable = '0' AND tw.f_carego_status != '3' THEN '放货'
+        WHEN tw.f_receivable = '0' THEN '录入'
+        WHEN tw.f_receivable > '0' AND tw.f_receivable > tw.f_recycle  THEN '未放货'
+        WHEN tw.f_receivable > '0' AND tw.f_receivable = tw.f_recycle AND tw.f_carego_status != '3' THEN '放货'
+        WHEN tw.f_carego_status = '3' THEN '扣货'
+        END AS fCaregoStatus
         FROM
         t_warehousebills tw
         LEFT JOIN t_address ta ON ta.f_id = tw.f_laneid
@@ -2501,7 +2537,18 @@
                tw.f_cargo_planning,
                tw.f_arrival_status,
                tw.f_dismount_status,
-               tw.f_serviceitems_new
+               tw.f_serviceitems_new,
+               tw.f_receivable,
+               tw.f_recycle,
+               tw.f_due,
+               tw.f_pay,
+               CASE
+               WHEN tc.f_name = '青岛凯和志诚物流有限公司' AND tw.f_receivable = '0' AND tw.f_carego_status != '3' THEN '放货'
+               WHEN tw.f_receivable = '0' THEN '录入'
+               WHEN tw.f_receivable > '0' AND tw.f_receivable > tw.f_recycle  THEN '未放货'
+               WHEN tw.f_receivable > '0' AND tw.f_receivable = tw.f_recycle AND tw.f_carego_status != '3' THEN '放货'
+               WHEN tw.f_carego_status = '3' THEN '扣货'
+               END AS fCaregoStatus
         FROM t_warehousebills tw
                  LEFT JOIN t_address address ON address.f_id = tw.f_loadportid
                  LEFT JOIN t_address ta ON ta.f_id = tw.f_loadportid