Selaa lähdekoodia

Merge branch 'master' of http://47.100.3.209:3000/gdc/yiliangyiyun

zxz 3 vuotta sitten
vanhempi
commit
35fa2caa33

+ 236 - 21
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/TranCarInfoServiceImpl.java

@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
 import com.winsea.svc.base.base.entity.CommonStaff;
 import com.winsea.svc.base.base.service.ICommonStaffService;
 import com.winsea.svc.base.security.util.AuthSecurityUtils;
+import com.winsea.svc.base.workflow.entity.Workflow;
 import com.winsea.svc.notice.entity.NoticeTaskInfo;
 import com.winsea.svc.notice.entity.base.BaseNotice;
 import com.winsea.svc.notice.service.INoticeService;
@@ -23,6 +24,7 @@ import com.yh.saas.plugin.yiliangyiyun.util.GeTuiUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 
@@ -54,6 +56,16 @@ public class TranCarInfoServiceImpl extends ServiceImpl<TranCarInfoMapper, TranC
     @Autowired
     private ISalesDeliveryReportService salesDeliveryReportService;
     @Autowired
+    private ITranSettlementReportService tranSettlementReportService;
+    @Autowired
+    private IDriverPayeeInfoService driverPayeeInfoService;
+    @Autowired
+    private ITranProcessInfoService tranProcessInfoService;
+    @Autowired
+    private ITranTaskInfoService tranTaskInfoService;
+    @Autowired
+    private INewWorkflowService workflowService;
+    @Autowired
     private GeTuiUtils geTuiUtils;
     @Autowired
     private INoticeService noticeService;
@@ -211,35 +223,238 @@ public class TranCarInfoServiceImpl extends ServiceImpl<TranCarInfoMapper, TranC
      */
     @Override
     public String feedbackTranCar(TranCarInfo tranCarInfo) {
-        //新增
-        if (StringUtils.isEmpty(tranCarInfo.getId())) {
-            tranCarInfo.setId(IdGenerator.generateUUID());
-            //保存
-            if ("0".equals(tranCarInfo.getFlag())){
-                tranCarInfo.setStatusFlag(StatusEnum.NOT_LOADED.getFlag());
-                tranCarInfo.setStatus(StatusEnum.NOT_LOADED.getName());
+        //提交
+        if ("1".equals(tranCarInfo.getFlag())){
+            //卸车反馈时状态改为已送达
+            if (tranCarInfo.getUnloadNetWeight() > 0) {
+                tranCarInfo.setStatusFlag(StatusEnum.DELIVERED.getFlag());
+                tranCarInfo.setStatus(StatusEnum.DELIVERED.getName());
             }
-            //提交
+            //装车反馈
             else {
                 tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
                 tranCarInfo.setStatus(StatusEnum.LOADED.getName());
-            }
-            this.insert(tranCarInfo);
-        }
-        else {
-            if ("1".equals(tranCarInfo.getFlag())){
-                //卸车反馈时状态改为已送达
-                if (tranCarInfo.getUnloadNetWeight() > 0) {
-                    tranCarInfo.setStatusFlag(StatusEnum.DELIVERED.getFlag());
-                    tranCarInfo.setStatus(StatusEnum.DELIVERED.getName());
+                TranProcessInfo tranProcessInfo=tranProcessInfoService.selectById(tranCarInfo.getProcessId());
+                TranTaskInfo tranTaskInfo=tranTaskInfoService.selectById(tranCarInfo.getInfoId());
+                //汽运类型
+                if (tranCarInfo.getTranType().equals(NumberConstant.CONSTANT1)) {
+                    List<TranSettlementReport> tranSettlementReportList = tranSettlementReportService.selectList(new EntityWrapper<TranSettlementReport>()
+                            .eq("car_id", tranCarInfo.getId()));
+                    if (!CollectionUtils.isEmpty(tranSettlementReportList)) {
+                        if (tranCarInfo.getUnloadNetWeight() > 0) {
+                            for (TranSettlementReport tranSettlementReport : tranSettlementReportList) {
+                                tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                                tranSettlementReport.setUnloadingWeight(tranCarInfo.getUnloadNetWeight());
+                                tranSettlementReport.setUnloadingImg(tranCarInfo.getUnloadPoundImg());
+                                //损耗
+                                tranSettlementReport.setLossWeight(tranCarInfo.getLoadNetWeight() - tranCarInfo.getUnloadNetWeight());
+                                //结算重量
+                                if ("0".equals(tranSettlementReport.getManualFlag())) {
+                                    //卸车不为空时,结算重量=装卸取小
+                                    tranSettlementReport.setSettlementWeight(tranCarInfo.getLoadNetWeight() > tranCarInfo.getUnloadNetWeight() ? tranCarInfo.getUnloadNetWeight() : tranCarInfo.getLoadNetWeight());
+                                }
+                                //扣款
+                                if (tranSettlementReport.getLossWeight() <= (tranCarInfo.getLoadNetWeight() / 1000)) {
+                                    tranSettlementReport.setDeductionAmount("0");
+                                    //应付=单价x结算重量-扣款
+                                    tranSettlementReport.setAmountIngPayable(tranSettlementReport.getTransportPrice() * tranSettlementReport.getSettlementWeight());
+                                } else {
+                                    tranSettlementReport.setDeductionAmount(String.format("%.2f", (Float.valueOf(tranCarInfo.getLoadNetWeight() - tranCarInfo.getUnloadNetWeight()) - (tranCarInfo.getLoadNetWeight() / 1000)) * Float.valueOf(tranCarInfo.getTranPrice())));
+                                    //应付=单价x结算重量-扣款
+                                    tranSettlementReport.setAmountIngPayable(tranSettlementReport.getTransportPrice() * tranSettlementReport.getSettlementWeight() - Float.valueOf(tranSettlementReport.getDeductionAmount()));
+                                }
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                            }
+                        }
+                    } else {
+                        //生成汽运报表
+                        TranSettlementReport tranSettlementReport = new TranSettlementReport();
+                        tranSettlementReport.setCompId(tranTaskInfo.getCompId());
+                        tranSettlementReport.setCarId(tranCarInfo.getId());
+                        tranSettlementReport.setId(IdGenerator.generateUUID());
+                        tranSettlementReport.setTranType("汽运");
+                        tranSettlementReport.setTranTypeKey("1");
+                        tranSettlementReport.setContractNo(tranTaskInfo.getContractNo());
+                        tranSettlementReport.setProcessNo(tranProcessInfo.getProcessNo());
+                        tranSettlementReport.setName(tranCarInfo.getDriver());
+                        tranSettlementReport.setPhone(tranCarInfo.getDriverPhone());
+                        tranSettlementReport.setCarNo(tranCarInfo.getCarNo());
+                        //查询账户信息
+                        List<DriverViewInfo> driverViewInfoList = driverViewInfoService.selectList(new EntityWrapper<DriverViewInfo>()
+                                .eq("driver_name", tranCarInfo.getDriver())
+                                .eq("delete_flag", "0"));
+                        if (!CollectionUtils.isEmpty(driverViewInfoList)) {
+                            for (DriverViewInfo driverViewInfo : driverViewInfoList) {
+                                List<DriverPayeeInfo> driverPayeeInfoList = driverPayeeInfoService.selectList(new EntityWrapper<DriverPayeeInfo>()
+                                        .eq("driver_id", driverViewInfo.getId())
+                                        .eq("delete_flag", "0"));
+                                if (!CollectionUtils.isEmpty(driverPayeeInfoList)) {
+                                    //本次收款账户
+                                    tranSettlementReport.setCardNo(driverPayeeInfoList.get(0).getBankCard());
+                                }
+                            }
+                        }
+                        tranSettlementReport.setSettlementWeight(tranCarInfo.getLoadNetWeight());
+                        //应付
+                        tranSettlementReport.setAmountIngPayable(tranProcessInfo.getTranPrice() * tranSettlementReport.getSettlementWeight());
+                        //未付
+                        tranSettlementReport.setAmountNotPayable(tranProcessInfo.getTranPrice() * tranSettlementReport.getSettlementWeight());
+                        tranSettlementReport.setTranCarNo(tranCarInfo.getTranCarNo());
+                        tranSettlementReport.setLoadingWeight(tranCarInfo.getLoadNetWeight());
+                        tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                        tranSettlementReport.setTransportPrice(tranProcessInfo.getTranPrice());
+                        tranSettlementReportService.insert(tranSettlementReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(tranSettlementReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(tranSettlementReport.getCompId(), "TRANSPORTATION-SETTLEMENT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+
+                                // 设置状态 已提交审核
+                                tranSettlementReport.setWorkflowId(workflow.getId());
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                                workflowService.startInstance(workflow.getId(), tranSettlementReport.getId());
+                            }
+                        }
+                        // 退回的单子 再启用
+                        else {
+
+                            tranSettlementReportService.updateById(tranSettlementReport);
+                            workflowService.activateInstance(tranSettlementReport.getWorkflowId(), tranSettlementReport.getId());
+                        }
+                    }
                 }
-                else {
-                    tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
-                    tranCarInfo.setStatus(StatusEnum.LOADED.getName());
+                //火运类型
+                else if (tranCarInfo.getTranType().equals(NumberConstant.CONSTANT2)) {
+                    List<TranSettlementReport> tranSettlementReportList = tranSettlementReportService.selectList(new EntityWrapper<TranSettlementReport>()
+                            .eq("car_id", tranCarInfo.getId()));
+                    if (!CollectionUtils.isEmpty(tranSettlementReportList)) {
+                        if (tranCarInfo.getUnloadNetWeight() > 0) {
+                            for (TranSettlementReport tranSettlementReport : tranSettlementReportList) {
+                                tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                                tranSettlementReport.setUnloadingWeight(tranCarInfo.getUnloadNetWeight());
+                                tranSettlementReport.setUnloadingImg(tranCarInfo.getUnloadPoundImg());
+                                //损耗
+                                tranSettlementReport.setLossWeight(tranCarInfo.getLoadNetWeight() - tranCarInfo.getUnloadNetWeight());
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                            }
+                        }
+                    } else {
+                        //生成火运报表
+                        TranSettlementReport tranSettlementReport = new TranSettlementReport();
+                        tranSettlementReport.setCompId(tranTaskInfo.getCompId());
+                        tranSettlementReport.setCarId(tranCarInfo.getId());
+                        tranSettlementReport.setId(IdGenerator.generateUUID());
+                        tranSettlementReport.setTranType("火运");
+                        tranSettlementReport.setTranTypeKey("2");
+                        tranSettlementReport.setContractNo(tranTaskInfo.getContractNo());
+                        tranSettlementReport.setTaskNo(tranTaskInfo.getTaskNo());
+                        tranSettlementReport.setProcessNo(tranProcessInfo.getProcessNo());
+                        tranSettlementReport.setBoxNo(tranCarInfo.getBoxNo());
+                        tranSettlementReport.setSettlementWeight(tranCarInfo.getLoadNetWeight());
+                        tranSettlementReport.setLoadingWeight(tranCarInfo.getLoadNetWeight());
+                        tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                        tranSettlementReportService.insert(tranSettlementReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(tranSettlementReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(tranSettlementReport.getCompId(), "TRANSPORTATION-SETTLEMENT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+
+                                // 设置状态 已提交审核
+                                tranSettlementReport.setWorkflowId(workflow.getId());
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                                workflowService.startInstance(workflow.getId(), tranSettlementReport.getId());
+                            }
+                        }
+                        // 退回的单子 再启用
+                        else {
+
+                            tranSettlementReportService.updateById(tranSettlementReport);
+                            workflowService.activateInstance(tranSettlementReport.getWorkflowId(), tranSettlementReport.getId());
+                        }
+                    }
+                }
+                //船运类型
+                else if (tranCarInfo.getTranType().equals(NumberConstant.CONSTANT3)) {
+                    List<TranSettlementReport> tranSettlementReportList = tranSettlementReportService.selectList(new EntityWrapper<TranSettlementReport>()
+                            .eq("car_id", tranCarInfo.getId()));
+                    if (!CollectionUtils.isEmpty(tranSettlementReportList)) {
+                        if (tranCarInfo.getUnloadNetWeight() > 0) {
+                            for (TranSettlementReport tranSettlementReport : tranSettlementReportList) {
+                                tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                                tranSettlementReport.setUnloadingWeight(tranCarInfo.getUnloadNetWeight());
+                                tranSettlementReport.setUnloadingImg(tranCarInfo.getUnloadPoundImg());
+                                //损耗
+                                tranSettlementReport.setLossWeight(tranCarInfo.getLoadNetWeight() - tranCarInfo.getUnloadNetWeight());
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                            }
+                        }
+                    } else {
+                        //生成船运报表
+                        TranSettlementReport tranSettlementReport = new TranSettlementReport();
+                        tranSettlementReport.setCompId(tranTaskInfo.getCompId());
+                        tranSettlementReport.setCarId(tranCarInfo.getId());
+                        tranSettlementReport.setId(IdGenerator.generateUUID());
+                        tranSettlementReport.setTranType("船运");
+                        tranSettlementReport.setTranTypeKey("3");
+                        tranSettlementReport.setTaskNo(tranTaskInfo.getTaskNo());
+                        tranSettlementReport.setProcessNo(tranProcessInfo.getProcessNo());
+                        if ("集装箱".equals(tranCarInfo.getShipType())){
+                            tranSettlementReport.setBoxNo(tranCarInfo.getCaseNo());
+                        }
+                        else{
+                            tranSettlementReport.setBoxNo(tranCarInfo.getBinNumber());
+                        }
+                        tranSettlementReport.setShipType(tranCarInfo.getShipType());
+                        tranSettlementReport.setContractNo(tranTaskInfo.getContractNo());
+                        tranSettlementReport.setSettlementWeight(tranCarInfo.getLoadNetWeight());
+                        tranSettlementReport.setTranCarNo(tranCarInfo.getTranCarNo());
+                        tranSettlementReport.setLoadingWeight(tranCarInfo.getLoadNetWeight());
+                        tranSettlementReport.setLoadingImg(tranCarInfo.getLoadPoundImg());
+                        tranSettlementReport.setTransportPrice(tranProcessInfo.getTranPrice());
+                        tranSettlementReportService.insert(tranSettlementReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(tranSettlementReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(tranSettlementReport.getCompId(), "TRANSPORTATION-SETTLEMENT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+
+                                // 设置状态 已提交审核
+                                tranSettlementReport.setWorkflowId(workflow.getId());
+                                tranSettlementReportService.updateById(tranSettlementReport);
+                                workflowService.startInstance(workflow.getId(), tranSettlementReport.getId());
+                            }
+                        }
+                        // 退回的单子 再启用
+                        else {
+
+                            tranSettlementReportService.updateById(tranSettlementReport);
+                            workflowService.activateInstance(tranSettlementReport.getWorkflowId(), tranSettlementReport.getId());
+                        }
+                    }
                 }
             }
-            this.updateById(tranCarInfo);
         }
+        this.updateById(tranCarInfo);
         return tranCarInfo.getId();
     }