|
@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
|
|
import com.winsea.svc.base.base.entity.CommonStaff;
|
|
import com.winsea.svc.base.base.entity.CommonStaff;
|
|
import com.winsea.svc.base.base.service.ICommonStaffService;
|
|
import com.winsea.svc.base.base.service.ICommonStaffService;
|
|
import com.winsea.svc.base.security.util.AuthSecurityUtils;
|
|
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.NoticeTaskInfo;
|
|
import com.winsea.svc.notice.entity.base.BaseNotice;
|
|
import com.winsea.svc.notice.entity.base.BaseNotice;
|
|
import com.winsea.svc.notice.service.INoticeService;
|
|
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.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
@@ -54,6 +56,16 @@ public class TranCarInfoServiceImpl extends ServiceImpl<TranCarInfoMapper, TranC
|
|
@Autowired
|
|
@Autowired
|
|
private ISalesDeliveryReportService salesDeliveryReportService;
|
|
private ISalesDeliveryReportService salesDeliveryReportService;
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private ITranSettlementReportService tranSettlementReportService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IDriverPayeeInfoService driverPayeeInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITranProcessInfoService tranProcessInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITranTaskInfoService tranTaskInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private INewWorkflowService workflowService;
|
|
|
|
+ @Autowired
|
|
private GeTuiUtils geTuiUtils;
|
|
private GeTuiUtils geTuiUtils;
|
|
@Autowired
|
|
@Autowired
|
|
private INoticeService noticeService;
|
|
private INoticeService noticeService;
|
|
@@ -211,35 +223,238 @@ public class TranCarInfoServiceImpl extends ServiceImpl<TranCarInfoMapper, TranC
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public String feedbackTranCar(TranCarInfo tranCarInfo) {
|
|
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 {
|
|
else {
|
|
tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
|
|
tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
|
|
tranCarInfo.setStatus(StatusEnum.LOADED.getName());
|
|
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();
|
|
return tranCarInfo.getId();
|
|
}
|
|
}
|
|
|
|
|