|
@@ -1,17 +1,18 @@
|
|
|
package com.yh.saas.plugin.yiliangyiyun.workflow;
|
|
|
|
|
|
-import com.winsea.svc.base.base.service.IAuditHistoryService;
|
|
|
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
+import com.yh.saas.common.support.util.IdGenerator;
|
|
|
import com.yh.saas.common.support.workflow.AbstractWorkflowTaskListener;
|
|
|
import com.yh.saas.common.support.workflow.annotation.WorkflowTaskListener;
|
|
|
import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.entity.PurchasePrice;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.entity.SalesTransferInfo;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.entity.StatusRecord;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.mapper.CommonUserMapper;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.entity.*;
|
|
|
import com.yh.saas.plugin.yiliangyiyun.mapper.StatusRecordMapper;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.service.IPurchasePriceService;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.service.ISalesTransferInfoService;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.service.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
|
|
|
@WorkflowTaskListener(name = "仓库管理", group = "销售转移")
|
|
|
public class SalesTransferInfoListener extends AbstractWorkflowTaskListener {
|
|
@@ -22,8 +23,29 @@ public class SalesTransferInfoListener extends AbstractWorkflowTaskListener {
|
|
|
private ISalesTransferInfoService salesTransferInfoService;
|
|
|
@Autowired
|
|
|
private StatusRecordMapper statusRecordMapper;
|
|
|
+ @Autowired
|
|
|
+ private IWarehouseInOutInfoService warehouseInOutInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ITranCarInfoService tranCarInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ITranTaskInfoService tranTaskInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ITranProcessInfoService tranProcessInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IWeighingManagementService weighingManagementService;
|
|
|
+ @Autowired
|
|
|
+ private IQualityInspectionManagementService qualityInspectionManagementService;
|
|
|
+ @Autowired
|
|
|
+ private ITranSettlementReportService tranSettlementReportService;
|
|
|
+ @Autowired
|
|
|
+ private IStockSaleReceiptReportService stockSaleReceiptReportService;
|
|
|
+ @Autowired
|
|
|
+ private IContractManagementInfoService contractManagementInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IInOutWarehouseTaskService inOutWarehouseTaskService;
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void handleStatusChanged(String businessKey, String status, String statusEn, boolean processIsEnd) {
|
|
|
SalesTransferInfo salesTransferInfo = salesTransferInfoService.selectById(businessKey);
|
|
|
StatusRecord statusRecord = new StatusRecord();
|
|
@@ -36,7 +58,182 @@ public class SalesTransferInfoListener extends AbstractWorkflowTaskListener {
|
|
|
salesTransferInfo.setStatus(StatusEnum.ORDER_PASSED.getName());
|
|
|
salesTransferInfo.setWorkflowId(null);
|
|
|
salesTransferInfo.setApproveStatus(null);
|
|
|
-
|
|
|
+ List<WarehouseInOutInfo> warehouseInOutInfoList=warehouseInOutInfoService.selectList(new EntityWrapper<WarehouseInOutInfo>()
|
|
|
+ .eq("sales_transfer_id",salesTransferInfo.getId()));
|
|
|
+ if (!CollectionUtils.isEmpty(warehouseInOutInfoList)){
|
|
|
+ Double contractPrice=0d;
|
|
|
+ //查询新合同单价
|
|
|
+ ContractManagementInfo contractManagementInfo=contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
|
|
|
+ .eq("comp_id",salesTransferInfo.getCompId())
|
|
|
+ .eq("contract_no",salesTransferInfo.getContractNoNew()));
|
|
|
+ if (contractManagementInfo!=null&&contractManagementInfo.getUnitContractPrice()!=null){
|
|
|
+ contractPrice=contractManagementInfo.getUnitContractPrice();
|
|
|
+ }
|
|
|
+ //查询新运输任务
|
|
|
+ TranTaskInfo tranTaskInfo=tranTaskInfoService.selectOne(new EntityWrapper<TranTaskInfo>()
|
|
|
+ .eq("comp_id",salesTransferInfo.getCompId())
|
|
|
+ .eq("task_no",salesTransferInfo.getTranTaskNew()));
|
|
|
+ for (WarehouseInOutInfo warehouseInOutInfo:warehouseInOutInfoList){
|
|
|
+ //更新出库记录销售转移状态 已通过
|
|
|
+ warehouseInOutInfo.setSalesTransferStatus(StatusEnum.PURCHASE_COMPLETED.getName());
|
|
|
+ warehouseInOutInfo.setInOutTaskNo(salesTransferInfo.getTaskNoNew());
|
|
|
+ warehouseInOutInfo.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ //减去原任务已完成量
|
|
|
+ InOutWarehouseTask inOutWarehouseTask=inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
|
|
|
+ .eq("comp_id",salesTransferInfo.getCompId())
|
|
|
+ .eq("in_out_task_no",salesTransferInfo.getTaskNo()));
|
|
|
+ if (inOutWarehouseTask!=null){
|
|
|
+ inOutWarehouseTask.setCompletedQuantity(inOutWarehouseTask.getCompletedQuantity()-warehouseInOutInfo.getNetWeight());
|
|
|
+ inOutWarehouseTaskService.updateById(inOutWarehouseTask);
|
|
|
+ }
|
|
|
+ //加上新任务已完成量
|
|
|
+ InOutWarehouseTask inOutWarehouseTask1=inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
|
|
|
+ .eq("comp_id",salesTransferInfo.getCompId())
|
|
|
+ .eq("in_out_task_no",salesTransferInfo.getTaskNoNew()));
|
|
|
+ if (inOutWarehouseTask1!=null){
|
|
|
+ inOutWarehouseTask1.setCompletedQuantity(inOutWarehouseTask1.getCompletedQuantity()+warehouseInOutInfo.getNetWeight());
|
|
|
+ inOutWarehouseTaskService.updateById(inOutWarehouseTask1);
|
|
|
+ }
|
|
|
+ //查询销售出库报表
|
|
|
+ StockSaleReceiptReport stockSaleReceiptReport = stockSaleReceiptReportService.selectOne(new EntityWrapper<StockSaleReceiptReport>()
|
|
|
+ .eq("warehouse_record_id",warehouseInOutInfo.getId())
|
|
|
+ .eq("delete_flag","0"));
|
|
|
+ if(stockSaleReceiptReport != null){
|
|
|
+ stockSaleReceiptReport.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ stockSaleReceiptReport.setSettlementPrice(contractPrice);
|
|
|
+ stockSaleReceiptReport.setAmountIngReceivable(stockSaleReceiptReport.getSettlementPrice() * warehouseInOutInfo.getNetWeight());
|
|
|
+ stockSaleReceiptReport.setAmountNotReceivable(stockSaleReceiptReport.getAmountIngReceivable());
|
|
|
+ stockSaleReceiptReportService.updateById(stockSaleReceiptReport);
|
|
|
+ }
|
|
|
+ //查询检斤信息
|
|
|
+ WeighingManagement weighingManagement = weighingManagementService.selectOne(new EntityWrapper<WeighingManagement>()
|
|
|
+ .eq("warehouse_in_out_id",warehouseInOutInfo.getId())
|
|
|
+ .eq("delete_flag","0"));
|
|
|
+ if (weighingManagement != null){
|
|
|
+ weighingManagement.setInOutTaskNo(salesTransferInfo.getTaskNoNew());
|
|
|
+ weighingManagement.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ weighingManagement.setContractPrice(Float.valueOf(String.valueOf(contractPrice)));
|
|
|
+ weighingManagementService.updateById(weighingManagement);
|
|
|
+ //查询质检信息
|
|
|
+ QualityInspectionManagement qualityInspectionManagement = qualityInspectionManagementService.selectOne(new EntityWrapper<QualityInspectionManagement>()
|
|
|
+ .eq("relation_id",weighingManagement.getRelationId())
|
|
|
+ .eq("delete_flag","0"));
|
|
|
+ if (qualityInspectionManagement != null){
|
|
|
+ qualityInspectionManagement.setInOutTaskNo(salesTransferInfo.getTaskNoNew());
|
|
|
+ qualityInspectionManagement.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ qualityInspectionManagementService.updateById(qualityInspectionManagement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //自运
|
|
|
+ if (warehouseInOutInfo.getCarId()!=null){
|
|
|
+ TranCarInfo tranCarInfo = tranCarInfoService.selectById(warehouseInOutInfo.getCarId());
|
|
|
+ String tranCarNo = "";
|
|
|
+ List<TranCarInfo> tranCarInfoList = tranCarInfoService.selectList(new EntityWrapper<TranCarInfo>()
|
|
|
+ .eq("info_id", tranTaskInfo.getId())
|
|
|
+ .eq("tran_type", "1"));
|
|
|
+ if ((tranCarInfoList.size() + 1) < 10) {
|
|
|
+ tranCarNo = "C00" + (tranCarInfoList.size() + 1);
|
|
|
+ } else if (tranCarInfoList.size() + 1 < 100) {
|
|
|
+ tranCarNo = "C0" + (tranCarInfoList.size() + 1);
|
|
|
+ } else {
|
|
|
+ tranCarNo = "C" + (tranCarInfoList.size() + 1);
|
|
|
+ }
|
|
|
+ tranCarInfo.setTranCarNo(tranCarNo);
|
|
|
+ tranCarInfo.setInfoId(tranTaskInfo.getId());
|
|
|
+ tranCarInfo.setLoadNetWeight(Float.valueOf(String.valueOf(warehouseInOutInfo.getNetWeight())));
|
|
|
+ tranCarInfo.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ warehouseInOutInfo.setTranCarNo(tranCarNo);
|
|
|
+ if (tranTaskInfo!=null){
|
|
|
+ //查询新运输阶段
|
|
|
+ TranProcessInfo tranProcessInfo=tranProcessInfoService.selectOne(new EntityWrapper<TranProcessInfo>().eq("info_id",tranTaskInfo.getId()));
|
|
|
+ tranCarInfo.setProcessId(tranProcessInfo.getId());
|
|
|
+ tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
|
|
|
+ tranCarInfo.setStatus(StatusEnum.LOADED.getName());
|
|
|
+ tranCarInfoService.updateById(tranCarInfo);
|
|
|
+ TranSettlementReport tranSettlementReport = tranSettlementReportService.selectOne(new EntityWrapper<TranSettlementReport>()
|
|
|
+ .eq("car_id", tranCarInfo.getId()));
|
|
|
+ if (tranSettlementReport != null) {
|
|
|
+ tranSettlementReport.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ tranSettlementReport.setTranCarNo(tranCarNo);
|
|
|
+ tranSettlementReport.setTaskNo(tranTaskInfo.getTaskNo());
|
|
|
+ tranSettlementReport.setProcessNo(tranProcessInfo.getProcessNo());
|
|
|
+ tranSettlementReport.setGrainPrice(tranProcessInfo.getGoodsValue());
|
|
|
+ tranSettlementReport.setBillingMethod(tranCarInfo.getBillingMethod());
|
|
|
+ //重新卸车
|
|
|
+ tranSettlementReport.setUnloadingWeight(0f);
|
|
|
+ tranSettlementReport.setServiceCharge(20d);
|
|
|
+ tranSettlementReport.setTransportPrice(Float.valueOf(tranCarInfo.getTranPrice()));
|
|
|
+ tranSettlementReport.setSettlementPrice(Double.valueOf(tranCarInfo.getTranPrice()));
|
|
|
+ //按吨计费
|
|
|
+ if("1".equals(tranSettlementReport.getBillingMethod())) {
|
|
|
+ //应付=单价x结算重量
|
|
|
+ tranSettlementReport.setAmountIngPayable(tranSettlementReport.getTransportPrice() * tranSettlementReport.getSettlementWeight());
|
|
|
+ }
|
|
|
+ //按车
|
|
|
+ else{
|
|
|
+ //应付
|
|
|
+ tranSettlementReport.setAmountIngPayable(tranSettlementReport.getTransportPrice());
|
|
|
+ }
|
|
|
+ //实付金额
|
|
|
+ tranSettlementReport.setAmountActuallyPaid(tranSettlementReport.getAmountIngPayable()
|
|
|
+ - tranSettlementReport.getServiceCharge());
|
|
|
+ //税点
|
|
|
+ tranSettlementReport.setTaxPoint(tranSettlementReport.getAmountActuallyPaid() / 0.946 * 0.054);
|
|
|
+ //合计应付
|
|
|
+ tranSettlementReport.setTotalPayable(tranSettlementReport.getAmountActuallyPaid() + tranSettlementReport.getTaxPoint());
|
|
|
+ //未付
|
|
|
+ tranSettlementReport.setAmountNotPayable(Float.valueOf(String.valueOf(tranSettlementReport.getTotalPayable())));
|
|
|
+ tranSettlementReportService.updateById(tranSettlementReport);
|
|
|
+ } else {
|
|
|
+ //生成汽运报表
|
|
|
+ TranSettlementReport tranSettlementReport1 = new TranSettlementReport();
|
|
|
+ tranSettlementReport1.setCompId(tranTaskInfo.getCompId());
|
|
|
+ tranSettlementReport1.setCarId(tranCarInfo.getId());
|
|
|
+ tranSettlementReport1.setId(IdGenerator.generateUUID());
|
|
|
+ tranSettlementReport1.setTranType("汽运");
|
|
|
+ tranSettlementReport1.setTranTypeKey("1");
|
|
|
+ tranSettlementReport1.setStartAddress(tranTaskInfo.getSendWarehouse());
|
|
|
+ tranSettlementReport1.setTaskNo(tranTaskInfo.getTaskNo());
|
|
|
+ tranSettlementReport1.setCarNo(tranCarInfo.getCarNo());
|
|
|
+ tranSettlementReport1.setContractNo(salesTransferInfo.getContractNoNew());
|
|
|
+ tranSettlementReport1.setGrainPrice(tranProcessInfo.getGoodsValue());
|
|
|
+ tranSettlementReport1.setProcessNo(tranProcessInfo.getProcessNo());
|
|
|
+ tranSettlementReport1.setSettlementWeight(tranCarInfo.getLoadNetWeight());
|
|
|
+ tranSettlementReport1.setServiceCharge(20d);
|
|
|
+ tranSettlementReport1.setBillingMethod(tranCarInfo.getBillingMethod());
|
|
|
+ tranSettlementReport1.setTransportPrice(Float.valueOf(tranCarInfo.getTranPrice()));
|
|
|
+ tranSettlementReport1.setSettlementPrice(Double.valueOf(tranCarInfo.getTranPrice()));
|
|
|
+ //按吨计费
|
|
|
+ if("1".equals(tranSettlementReport1.getBillingMethod())) {
|
|
|
+ //应付=单价x结算重量
|
|
|
+ tranSettlementReport1.setAmountIngPayable(tranSettlementReport1.getTransportPrice() * tranSettlementReport1.getSettlementWeight());
|
|
|
+ }
|
|
|
+ //按车
|
|
|
+ else{
|
|
|
+ //应付
|
|
|
+ tranSettlementReport1.setAmountIngPayable(tranSettlementReport1.getTransportPrice());
|
|
|
+ }
|
|
|
+ //实付金额
|
|
|
+ tranSettlementReport1.setAmountActuallyPaid(tranSettlementReport1.getAmountIngPayable()
|
|
|
+ - tranSettlementReport1.getServiceCharge());
|
|
|
+ //税点
|
|
|
+ tranSettlementReport1.setTaxPoint(tranSettlementReport1.getAmountActuallyPaid() / 0.946 * 0.054);
|
|
|
+ //合计应付
|
|
|
+ tranSettlementReport1.setTotalPayable(tranSettlementReport1.getAmountActuallyPaid() + tranSettlementReport1.getTaxPoint());
|
|
|
+ //未付
|
|
|
+ tranSettlementReport1.setAmountNotPayable(Float.valueOf(String.valueOf(tranSettlementReport1.getTotalPayable())));
|
|
|
+ tranSettlementReport1.setTranCarNo(tranCarInfo.getTranCarNo());
|
|
|
+ tranSettlementReport1.setLoadingWeight(tranCarInfo.getLoadNetWeight());
|
|
|
+ tranSettlementReport1.setLoadingImg(tranCarInfo.getLoadPoundImg());
|
|
|
+ tranSettlementReport1.setStatusFlag(StatusEnum.PENDING_PAY.getFlag());
|
|
|
+ tranSettlementReport1.setStatus(StatusEnum.PENDING_PAY.getName());
|
|
|
+ tranSettlementReportService.insert(tranSettlementReport1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ warehouseInOutInfoService.updateById(warehouseInOutInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
if(statusRecord1 != null){
|
|
|
statusRecord1.setStatus(StatusEnum.ORDER_PASSED.getName());
|
|
|
statusRecordMapper.updateById(statusRecord1);
|
|
@@ -70,6 +267,21 @@ public class SalesTransferInfoListener extends AbstractWorkflowTaskListener {
|
|
|
}
|
|
|
salesTransferInfo.setStatusFlag(StatusEnum.PURCHASE_FAILED.getFlag());
|
|
|
salesTransferInfo.setStatus(StatusEnum.PURCHASE_FAILED.getName());
|
|
|
+ List<WarehouseInOutInfo> warehouseInOutInfoList=warehouseInOutInfoService.selectList(new EntityWrapper<WarehouseInOutInfo>()
|
|
|
+ .eq("sales_transfer_id",salesTransferInfo.getId()));
|
|
|
+ if (!CollectionUtils.isEmpty(warehouseInOutInfoList)){
|
|
|
+ for (WarehouseInOutInfo warehouseInOutInfo:warehouseInOutInfoList){
|
|
|
+ //更新出库记录销售转移状态 已驳回
|
|
|
+ warehouseInOutInfo.setSalesTransferStatus(StatusEnum.PURCHASE_FAILED.getName());
|
|
|
+ if (warehouseInOutInfo.getCarId()!=null){
|
|
|
+ TranCarInfo tranCarInfo=tranCarInfoService.selectById(warehouseInOutInfo.getCarId());
|
|
|
+ //将运输单价还原
|
|
|
+ tranCarInfo.setTranPrice(String.valueOf(tranCarInfo.getTranPriceOld()));
|
|
|
+ tranCarInfoService.updateById(tranCarInfo);
|
|
|
+ }
|
|
|
+ warehouseInOutInfoService.updateById(warehouseInOutInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
salesTransferInfo.setApproveStatus(null);
|
|
|
salesTransferInfoService.updateAllColumnById(salesTransferInfo);
|
|
|
StatusRecord statusRecord = new StatusRecord();
|