Browse Source

2023年12月18日18:21:22

纪新园 2 years ago
parent
commit
8623f74c7d

+ 2 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/entity/Accounts.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.basic.acc.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -358,6 +359,7 @@ public class Accounts implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	@TableField(exist = false)
 	private List<AccItemsOpenblc> accItemsOpenblcList;
 
 

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/impl/AccountsServiceImpl.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -31,6 +32,7 @@ import org.springblade.los.basic.acc.service.IAccountsService;
 import org.springblade.los.basic.acc.vo.AccountsVO;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -67,6 +69,8 @@ public class AccountsServiceImpl extends ServiceImpl<AccountsMapper, Accounts> i
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R submit(Accounts accounts) {
 		String deptId = "";
 		String deptName = "";

+ 12 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -348,4 +348,16 @@ public class BillsController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 复制单据
+	 */
+	@PostMapping("/copyBills")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "撤销请核", notes = "传入bills")
+	@RepeatSubmit
+	public R copyBills(@RequestBody Bills bills) {
+		Bills declare = billsService.copyBills(bills);
+		return R.data(declare);
+	}
+
 }

+ 11 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/ContainersController.java

@@ -35,13 +35,13 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.los.business.sea.entity.Containers;
 import org.springblade.los.business.sea.service.IContainersService;
 import org.springblade.los.business.sea.vo.ContainersVO;
-import org.springblade.los.excel.BCntrTypesExcel;
 import org.springblade.los.excel.BoxAndLeadSealNoExcel;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -144,7 +144,16 @@ public class ContainersController extends BladeController {
 			.eq(Containers::getPid, containers.getPid())
 			.orderByAsc(Containers::getLineNo);
 		List<Containers> containersList = containersService.list(lambdaQueryWrapper);
-		ExcelUtil.export(response, "箱号铅封号", "箱号铅封号", BeanUtil.copy(containersList, BoxAndLeadSealNoExcel.class), BoxAndLeadSealNoExcel.class);
+		List<BoxAndLeadSealNoExcel> boxAndLeadSealNoExcels = new ArrayList<>();
+		for (Containers item : containersList) {
+			BoxAndLeadSealNoExcel boxAndLeadSealNoExcel = new BoxAndLeadSealNoExcel();
+			boxAndLeadSealNoExcel.setSealNo(item.getSealNo());
+			boxAndLeadSealNoExcel.setCntrNo(item.getCntrNo());
+			boxAndLeadSealNoExcel.setCntrTypeCode(item.getCntrTypeCode());
+			boxAndLeadSealNoExcel.setId(item.getId()+"");
+			boxAndLeadSealNoExcels.add(boxAndLeadSealNoExcel);
+		}
+		ExcelUtil.export(response, "箱号铅封号", "箱号铅封号", boxAndLeadSealNoExcels, BoxAndLeadSealNoExcel.class);
 
 	}
 

+ 7 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java

@@ -126,4 +126,11 @@ public interface IBillsService extends IService<Bills> {
 	 * 审核不通过
 	 */
 	R passCancel(Long id);
+
+	/**
+	 * 复制单据
+	 * @param bills
+	 * @return
+	 */
+	Bills copyBills(Bills bills);
 }

+ 237 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -34,7 +34,6 @@ import org.springblade.los.billno.entity.BusinessBillNo;
 import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.files.entity.FilesCenter;
 import org.springblade.los.business.files.service.IFilesCenterService;
-import org.springblade.los.business.sea.dto.DecisionAnalysis;
 import org.springblade.los.business.sea.dto.WaitingBox;
 import org.springblade.los.business.sea.entity.*;
 import org.springblade.los.business.sea.mapper.BillsMapper;
@@ -839,4 +838,241 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return R.success("操作成功");
 	}
 
+	@Override
+	public Bills copyBills(Bills bills) {
+		if (bills.getId() == null) {
+			throw new SecurityException("缺少必要参数");
+		}
+		Bills detail = baseMapper.selectById(bills.getId());
+		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getPid, detail.getId()));
+		for (PreContainers item : preContainersList) {
+			item.setPid(null);
+			item.setId(null);
+		}
+		List<FilesCenter> filesList = filesCenterService.list(new LambdaQueryWrapper<FilesCenter>()
+			.eq(FilesCenter::getIsDeleted, 0)
+			.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FilesCenter::getPid, detail.getId()));
+		for (FilesCenter item : filesList) {
+			item.setPid(null);
+			item.setId(null);
+			item.setItemId(null);
+			item.setBillNo("");
+			item.setBusinessType(null);
+			item.setHblno("");
+			item.setMblno("");
+		}
+		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getPid, detail.getId()));
+		for (Containers item : containersList) {
+			item.setPid(null);
+			item.setId(null);
+			item.setBillNo("");
+			item.setHblno("");
+			item.setMblno("");
+			item.setNetWeight(new BigDecimal("0.00"));
+			item.setGrossWeight(new BigDecimal("0.00"));
+			item.setMeasurement(new BigDecimal("0.00"));
+			item.setQuantity(new BigDecimal("0.00"));
+		}
+		List<FeeCenter> feeCenterListC = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getBillType, detail.getBillType())
+			.eq(FeeCenter::getPid, detail.getId())
+			.eq(FeeCenter::getDc, "C")
+			.eq(FeeCenter::getBillNo, detail.getBillNo())
+		);
+		for (FeeCenter item : feeCenterListC) {
+			item.setPid(null);
+			item.setId(null);
+			item.setBusinessType(null);
+			item.setBillType(null);
+			item.setBillNo("");
+			item.setBillDate(null);
+			item.setAccountDate(null);
+			item.setMblno("");
+			item.setHblno("");
+			item.setAccountDate(null);
+			item.setAccBillId(null);
+			item.setAccBillNo("");
+			item.setAccDate(null);
+			item.setAccStatus(0);
+			item.setAccById(0L);
+			item.setAccByName("");
+			item.setCheckBillId(0L);
+			item.setCheckBillNo("");
+			item.setCheckDate(null);
+			item.setCheckAmount(new BigDecimal("0.00"));
+			item.setCheckStatus(0);
+			item.setCheckById(0L);
+			item.setCheckByName("");
+			item.setStlBillId(0L);
+			item.setStlBillNo("");
+			item.setStlDate(null);
+			item.setStlOrgAmount(new BigDecimal("0.00"));
+			item.setStlCurCode("");
+			item.setStlExrate(new BigDecimal("0.00"));
+			item.setStlExrateLoc(new BigDecimal("0.00"));
+			item.setStlAmount(new BigDecimal("0.00"));
+			item.setStlAmountLoc(new BigDecimal("0.00"));
+			item.setStlStatus(0);
+			item.setStlById(0L);
+			item.setStlByName("");
+			item.setStlTtlAmount(new BigDecimal("0.00"));
+			item.setUnsettledAmount(item.getAmount());
+			item.setVoucherBillId(0L);
+			item.setVoucherBillNo("");
+			item.setVoucherNo("");
+			item.setVoucherDate(null);
+			item.setVoucherStatus(0);
+			item.setVoucherById(0L);
+			item.setVoucherByName("");
+			item.setInvoiceBillId("");
+			item.setInvoiceBillNo("");
+			item.setInvoiceNo("");
+			item.setInvoiceDate(null);
+			item.setInvoiceStatus(0);
+			item.setInvoiceCurCode("");
+			item.setInvoiceExrate(new BigDecimal("0.00"));
+			item.setInvoiceAmount(new BigDecimal("0.00"));
+			item.setInvoiceAmountLoc(new BigDecimal("0.00"));
+			item.setUninvoicedAmount(item.getAmount());
+			item.setInvoiceById(0L);
+			item.setInvoiceByName("");
+			item.setIsSignfor(0);
+			item.setSignforId(0);
+			item.setSignforName("");
+			item.setSignforDate(null);
+			item.setApplyId(0L);
+			item.setApplyName("");
+			item.setApplyTime(null);
+			item.setApproverId(0L);
+			item.setApproverName("");
+			item.setApproveTime(null);
+			item.setAuditStatus("0");
+		}
+		List<FeeCenter> feeCenterListD = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getBillType, detail.getBillType())
+			.eq(FeeCenter::getPid, detail.getId())
+			.eq(FeeCenter::getDc, "D")
+			.eq(FeeCenter::getBillNo, detail.getBillNo())
+		);
+		for (FeeCenter item : feeCenterListD) {
+			item.setPid(null);
+			item.setId(null);
+			item.setBusinessType(null);
+			item.setBillType(null);
+			item.setBillNo("");
+			item.setBillDate(null);
+			item.setAccountDate(null);
+			item.setMblno("");
+			item.setHblno("");
+			item.setAccountDate(null);
+			item.setAccBillId(null);
+			item.setAccBillNo("");
+			item.setAccDate(null);
+			item.setAccStatus(0);
+			item.setAccById(0L);
+			item.setAccByName("");
+			item.setCheckBillId(0L);
+			item.setCheckBillNo("");
+			item.setCheckDate(null);
+			item.setCheckAmount(new BigDecimal("0.00"));
+			item.setCheckStatus(0);
+			item.setCheckById(0L);
+			item.setCheckByName("");
+			item.setStlBillId(0L);
+			item.setStlBillNo("");
+			item.setStlDate(null);
+			item.setStlOrgAmount(new BigDecimal("0.00"));
+			item.setStlCurCode("");
+			item.setStlExrate(new BigDecimal("0.00"));
+			item.setStlExrateLoc(new BigDecimal("0.00"));
+			item.setStlAmount(new BigDecimal("0.00"));
+			item.setStlAmountLoc(new BigDecimal("0.00"));
+			item.setStlStatus(0);
+			item.setStlById(0L);
+			item.setStlByName("");
+			item.setStlTtlAmount(new BigDecimal("0.00"));
+			item.setUnsettledAmount(item.getAmount());
+			item.setVoucherBillId(0L);
+			item.setVoucherBillNo("");
+			item.setVoucherNo("");
+			item.setVoucherDate(null);
+			item.setVoucherStatus(0);
+			item.setVoucherById(0L);
+			item.setVoucherByName("");
+			item.setInvoiceBillId("");
+			item.setInvoiceBillNo("");
+			item.setInvoiceNo("");
+			item.setInvoiceDate(null);
+			item.setInvoiceStatus(0);
+			item.setInvoiceCurCode("");
+			item.setInvoiceExrate(new BigDecimal("0.00"));
+			item.setInvoiceAmount(new BigDecimal("0.00"));
+			item.setInvoiceAmountLoc(new BigDecimal("0.00"));
+			item.setUninvoicedAmount(item.getAmount());
+			item.setInvoiceById(0L);
+			item.setInvoiceByName("");
+			item.setIsSignfor(0);
+			item.setSignforId(0);
+			item.setSignforName("");
+			item.setSignforDate(null);
+			item.setApplyId(0L);
+			item.setApplyName("");
+			item.setApplyTime(null);
+			item.setApproverId(0L);
+			item.setApproverName("");
+			item.setApproveTime(null);
+			item.setAuditStatus("0");
+		}
+		Bills copyBills = new Bills();
+		BeanUtil.copyProperties(detail, copyBills);
+		copyBills.setId(null);
+		copyBills.setBillNo("");
+		copyBills.setMblno("");
+		copyBills.setHblno("");
+		copyBills.setRefno("");
+		copyBills.setStatus(0);
+		copyBills.setBillStatus(0);
+		copyBills.setBillingStatus(0);
+		copyBills.setAmountDr(new BigDecimal("0.00"));
+		copyBills.setAmountCr(new BigDecimal("0.00"));
+		copyBills.setAmountProfit(new BigDecimal("0.00"));
+		copyBills.setAmountDrUsd(new BigDecimal("0.00"));
+		copyBills.setAmountCrUsd(new BigDecimal("0.00"));
+		copyBills.setAmountProfitUsd(new BigDecimal("0.00"));
+		copyBills.setAmountDrLoc(new BigDecimal("0.00"));
+		copyBills.setAmountCrLoc(new BigDecimal("0.00"));
+		copyBills.setAmountProfitLoc(new BigDecimal("0.00"));
+		copyBills.setCheckDrStatus(0);
+		copyBills.setCheckDrStatusDescr("未对账");
+		copyBills.setCheckCrStatus(0);
+		copyBills.setCheckCrStatusDescr("未对账");
+		copyBills.setStlDrStatus(0);
+		copyBills.setStlDrStatusDescr("未结");
+		copyBills.setStlCrStatus(0);
+		copyBills.setStlCrStatusDescr("未结");
+		copyBills.setInvoiceDrStatus(0);
+		copyBills.setInvoiceDrStatusDescr("未开");
+		copyBills.setInvoiceCrStatus(0);
+		copyBills.setInvoiceCrStatusDescr("未开");
+		copyBills.setBillStatus(0);
+		copyBills.setAccountStatus(0);
+		copyBills.setContainersList(containersList);
+		copyBills.setFeeCenterListC(feeCenterListC);
+		copyBills.setFeeCenterListD(feeCenterListD);
+		copyBills.setPreContainersList(preContainersList);
+		copyBills.setFilesList(filesList);
+		return copyBills;
+	}
+
 }

+ 3 - 3
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java

@@ -334,14 +334,14 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 
 	@Override
 	public R<List<Containers>> importBoxNo(List<BoxAndLeadSealNoExcel> excelList) {
-		List<Long> lineNo = excelList.stream().map(BoxAndLeadSealNoExcel::getLineNo).collect(Collectors.toList());
+		List<String> ids = excelList.stream().map(BoxAndLeadSealNoExcel::getId).collect(Collectors.toList());
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
-			.in(Containers::getLineNo, lineNo));
+			.in(Containers::getId, ids));
 		List<Containers> containersList = new ArrayList<>();
 		for (BoxAndLeadSealNoExcel item : excelList) {
-			Containers containers = list.stream().filter(e -> e.getLineNo().equals(item.getLineNo())).findFirst().orElse(null);
+			Containers containers = list.stream().filter(e -> e.getId().equals(Long.parseLong(item.getId()))).findFirst().orElse(null);
 			if (containers != null) {
 				containers.setCntrNo(item.getCntrNo());
 				containers.setSealNo(item.getSealNo());

+ 60 - 68
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java

@@ -205,7 +205,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			}
 		}
 		List<Containers> containersList = new ArrayList<>();
-		for (PreContainers preContainers :preContainersList){
+		for (PreContainers preContainers : preContainersList) {
 			if (preContainers.getId() == null) {
 				preContainers.setCreateTime(new Date());
 				preContainers.setCreateUser(AuthUtil.getUserId());
@@ -215,79 +215,71 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 					preContainers.setCreateDept(deptId);
 					preContainers.setCreateDeptName(deptName);
 				}
+				this.saveOrUpdate(preContainers);
+				Bills bills = billsMapper.selectById(preContainers.getPid());
+				if (bills != null) {
+					bills.setCfsMeasurement(new BigDecimal("0.00"));
+					bills.setCfsGrossWeight(new BigDecimal("0.00"));
+					bills.setCfsQuantity(new BigDecimal("0.00"));
+					bills.setUpdateUser(AuthUtil.getUserId());
+					bills.setUpdateTime(new Date());
+					bills.setUpdateUserName(AuthUtil.getUserName());
+					billsMapper.updateById(bills);
+				}
+				List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
+					.eq(Containers::getTenantId, AuthUtil.getTenantId())
+					.eq(Containers::getIsDeleted, 0)
+					.eq(Containers::getPid, preContainers.getPid()));
+				containersService.removeByPid(preContainers.getPid(), preContainers.getCntrTypeCode());
+				if (removeContainersList.size() > 0) {
+					List<Long> ids = removeContainersList.stream().map(Containers::getId).collect(Collectors.toList());
+					containersBillsService.removeByPid(ids);
+				}
+				//生成海运进出口配箱-箱号装箱
+				for (int i = 0; i < preContainers.getQuantity(); i++) {
+					Containers containers = new Containers();
+					containers.setCreateTime(new Date());
+					containers.setCreateUser(AuthUtil.getUserId());
+					containers.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						containers.setBranchId(deptId);
+						containers.setCreateDept(deptId);
+						containers.setCreateDeptName(deptName);
+					}
+					if (bills != null) {
+						containers.setBillNo(bills.getBillNo());
+						containers.setPolId(bills.getPolId());
+						containers.setPolCode(bills.getPolCode());
+						containers.setPolCnName(bills.getPolCnName());
+						containers.setPolEnName(bills.getPolEnName());
+						containers.setPodId(bills.getPodId());
+						containers.setPodCode(bills.getPodCode());
+						containers.setPodCnName(bills.getPodCnName());
+						containers.setPodEnName(bills.getPodEnName());
+						containers.setMblno(bills.getMblno());
+						containers.setHblno(bills.getHblno());
+						containers.setCommodityDescr(bills.getCommodityDescr());
+						containers.setPackingUnitId(bills.getPackingUnitId());
+						containers.setPackingUnit(bills.getPackingUnit());
+					}
+					containers.setPid(preContainers.getPid());
+					containers.setTeu(preContainers.getTeu());
+					containers.setIsSoc(preContainers.getIsSoc());
+					containers.setIsOneway(preContainers.getIsOneway());
+					containers.setCntrTypeCode(preContainers.getCntrTypeCode());
+					containers.setLineNo(preContainers.getId());
+					containersList.add(containers);
+				}
 			} else {
 				preContainers.setUpdateUser(AuthUtil.getUserId());
 				preContainers.setUpdateTime(new Date());
 				preContainers.setUpdateUserName(AuthUtil.getUserName());
-			}
-			this.saveOrUpdate(preContainers);
-			Bills bills = billsMapper.selectById(preContainers.getPid());
-			if (bills != null) {
-				bills.setCfsMeasurement(new BigDecimal("0.00"));
-				bills.setCfsGrossWeight(new BigDecimal("0.00"));
-				bills.setCfsQuantity(new BigDecimal("0.00"));
-				bills.setUpdateUser(AuthUtil.getUserId());
-				bills.setUpdateTime(new Date());
-				bills.setUpdateUserName(AuthUtil.getUserName());
-				billsMapper.updateById(bills);
-			}
-			List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
-				.eq(Containers::getTenantId, AuthUtil.getTenantId())
-				.eq(Containers::getIsDeleted, 0)
-				.eq(Containers::getPid, preContainers.getPid()));
-			containersService.removeByPid(preContainers.getPid(), preContainers.getCntrTypeCode());
-			/*for (Containers item : removeContainersList) {
-				item.setQuantity(new BigDecimal("0.00"));
-				item.setMeasurement(new BigDecimal("0.00"));
-				item.setNetWeight(new BigDecimal("0.00"));
-				item.setGrossWeight(new BigDecimal("0.00"));
-				item.setUpdateUser(AuthUtil.getUserId());
-				item.setUpdateUserName(AuthUtil.getUserName());
-				item.setUpdateTime(new Date());
-			}
-			containersService.saveOrUpdateBatch(removeContainersList);*/
-			if (removeContainersList.size() > 0) {
-				List<Long> ids = removeContainersList.stream().map(Containers::getId).collect(Collectors.toList());
-				containersBillsService.removeByPid(ids);
-			}
-			//生成海运进出口配箱-箱号装箱
-			for (int i = 0; i < preContainers.getQuantity(); i++) {
-				Containers containers = new Containers();
-				containers.setCreateTime(new Date());
-				containers.setCreateUser(AuthUtil.getUserId());
-				containers.setCreateUserName(AuthUtil.getUserName());
-				if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-					containers.setBranchId(deptId);
-					containers.setCreateDept(deptId);
-					containers.setCreateDeptName(deptName);
-				}
-				if (bills != null) {
-					containers.setBillNo(bills.getBillNo());
-					containers.setPolId(bills.getPolId());
-					containers.setPolCode(bills.getPolCode());
-					containers.setPolCnName(bills.getPolCnName());
-					containers.setPolEnName(bills.getPolEnName());
-					containers.setPodId(bills.getPodId());
-					containers.setPodCode(bills.getPodCode());
-					containers.setPodCnName(bills.getPodCnName());
-					containers.setPodEnName(bills.getPodEnName());
-					containers.setMblno(bills.getMblno());
-					containers.setHblno(bills.getHblno());
-					containers.setCommodityDescr(bills.getCommodityDescr());
-					containers.setPackingUnitId(bills.getPackingUnitId());
-					containers.setPackingUnit(bills.getPackingUnit());
-				}
-				containers.setPid(preContainers.getPid());
-				containers.setTeu(preContainers.getTeu());
-				containers.setIsSoc(preContainers.getIsSoc());
-				containers.setIsOneway(preContainers.getIsOneway());
-				containers.setCntrTypeCode(preContainers.getCntrTypeCode());
-				containers.setLineNo(preContainers.getId());
-				containersList.add(containers);
+				this.saveOrUpdate(preContainers);
 			}
 		}
-		containersService.saveOrUpdateBatch(containersList);
-
+		if (containersList.size() > 0) {
+			containersService.saveOrUpdateBatch(containersList);
+		}
 		return R.data(containersList);
 	}
 

+ 3 - 3
blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxAndLeadSealNoExcel.java

@@ -37,10 +37,10 @@ import java.io.Serializable;
 public class BoxAndLeadSealNoExcel implements Serializable {
 
 	/**
-	 * 行号
+	 * id
 	 */
-	@ExcelProperty("行号")
-	private Long lineNo;
+	@ExcelProperty(value = "id")
+	private String id;
 
 	/**
 	 * 尺码箱型

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -364,8 +364,8 @@
         pgd.brand_item AS brandItem,
         pgd.cname AS goodsName,
         pgd.specification_and_model AS specificationAndModel,
-        psi.inventory as totalNum,
-        if(psi.profit_loss_num,psi.profit_loss_num,0) as profitLossNum
+        sum(psi.inventory) as totalNum,
+        sum(if(psi.profit_loss_num,psi.profit_loss_num,0)) as profitLossNum
         FROM
         pjpf_order_items psi
         LEFT JOIN pjpf_order ps ON ps.id = psi.pid

+ 31 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -843,11 +843,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				item.setBizType(order.getBsType());
 				item.setBillNo(order.getOrdNo());
 				BigDecimal profitLossNum = new BigDecimal("0.00");
-				profitLossNum = item.getSendNum().subtract(item.getInventory());
-				item.setTotalAmount(item.getInventory().multiply(item.getCostprie()));
-				item.setSubTotalMoney(item.getSendNum().multiply(item.getCostprie()));
 				BigDecimal profitLossAmount = new BigDecimal("0.00");
-				profitLossAmount = profitLossNum.multiply(item.getCostprie());
+				BigDecimal totalAmount = new BigDecimal("0.00");
+				BigDecimal subTotalMoney = new BigDecimal("0.00");
+				if (ObjectUtils.isNotNull(item.getSendNum())) {
+					profitLossNum = item.getSendNum().subtract(item.getInventory());
+					totalAmount = item.getInventory().multiply(item.getCostprie());
+					subTotalMoney = item.getSendNum().multiply(item.getCostprie());
+					profitLossAmount = profitLossNum.multiply(item.getCostprie());
+				}
+				item.setTotalAmount(totalAmount);
+				item.setSubTotalMoney(subTotalMoney);
 				item.setProfitLossNum(profitLossNum);
 				item.setProfitLossAmount(profitLossAmount);
 				if (item.getId() == null) {
@@ -885,14 +891,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R confirmInventory(PjOrder order) {
 		PjOrder pjOrder = baseMapper.selectById(order.getId());
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 			List<PjStockDesc> pjStockDescArrayList = new ArrayList<>();
+			List<PjProductLaunch> productLaunches = new ArrayList<>();
 			List<Long> goodsIds = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			List<PjGoodsDesc> pjGoodsDescList = new ArrayList<>();
 			List<PjStockDesc> pjStockDescList = new ArrayList<>();
+			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 			if (goodsIds.size() > 0) {
 				pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
 					.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
@@ -904,9 +914,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					.eq(PjStockDesc::getSalesCompanyId, pjOrder.getSalesCompanyId())
 					.in(PjStockDesc::getGoodsId, goodsIds)
 					.eq(PjStockDesc::getStorageId, pjOrder.getStorageId()));
+				pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+					.eq(PjProductLaunch::getIsDeleted, 0)
+					.eq(PjProductLaunch::getSalesCompanyId, pjOrder.getSalesCompanyId())
+					.in(PjProductLaunch::getGoodsId, goodsIds));
 			}
 			List<PjGoodsDesc> finalPjGoodsDescList = pjGoodsDescList;
 			List<PjStockDesc> finalPjStockDescList = pjStockDescList;
+			List<PjProductLaunch> finalPjProductLaunchList = pjProductLaunchList;
 			order.getOrderItemsList().forEach(item -> {
 				//获得商品
 				PjGoodsDesc goodsDesc = finalPjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId()))
@@ -925,7 +941,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 				} else {
 					stockOne = finalPjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId()) &&
-						ObjectUtils.isNotNull(e.getDot())).findFirst().orElse(null);
+						ObjectUtils.isNull(e.getDot())).findFirst().orElse(null);
 				}
 				if (stockOne != null) {
 					stockOne.setBalanceQuantity(item.getSendNum());
@@ -936,11 +952,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				} else {
 					throw new RuntimeException("商品:" + goodsDesc.getCname() + "未查到库存信息");
 				}
+				PjProductLaunch pjProductLaunch = finalPjProductLaunchList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
+				if (pjProductLaunch != null) {
+					pjProductLaunch.setInventory(pjProductLaunch.getInventory().add(item.getProfitLossNum()));
+					productLaunches.add(pjProductLaunch);
+				} else {
+					throw new RuntimeException("商品:" + goodsDesc.getCname() + "未查到上架信息");
+				}
 			});
 			R res = stockDescService.updateBatchByIdNew(pjStockDescArrayList);
 			if (!res.isSuccess()) {
 				throw new RuntimeException(res.getMsg());
 			}
+			if (productLaunches.size() > 0) {
+				productLaunchService.saveOrUpdateBatch(productLaunches);
+			}
 		}
 		order.setStatus("已确认");
 		baseMapper.updateById(order);

+ 5 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -401,13 +401,13 @@ public class ShipController extends BladeController {
 			item.setBizTypeName("盘点");
 			if (new BigDecimal("0.00").compareTo(item.getProfitLossNum()) > 0) {
 				item.setSubSendTotalNum(item.getProfitLossNum().abs());
-				item.setAddSendTotalNum(new BigDecimal("0.00"));
-			} else if (new BigDecimal("0.00").compareTo(item.getProfitLossNum()) < 0) {
+				item.setAddSendTotalNum(new BigDecimal("0"));
+			} else if (new BigDecimal("0").compareTo(item.getProfitLossNum()) < 0) {
 				item.setAddSendTotalNum(item.getProfitLossNum().abs());
-				item.setSubSendTotalNum(new BigDecimal("0.00"));
+				item.setSubSendTotalNum(new BigDecimal("0"));
 			} else {
-				item.setSubSendTotalNum(new BigDecimal("0.00"));
-				item.setAddSendTotalNum(new BigDecimal("0.00"));
+				item.setSubSendTotalNum(new BigDecimal("0"));
+				item.setAddSendTotalNum(new BigDecimal("0"));
 			}
 		}
 		if (pagesOrder.size() > 0) {