Procházet zdrojové kódy

2025年1月9日17:24:05

纪新园 před 11 měsíci
rodič
revize
892d35a3fc
18 změnil soubory, kde provedl 378 přidání a 178 odebrání
  1. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  2. 11 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/PurchaseDetailDto.java
  3. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailDto.java
  4. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailRZDto.java
  5. 2 3
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/ContainersController.java
  6. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/PreContainersController.java
  7. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IContainersService.java
  8. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IPreContainersService.java
  9. 54 94
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  10. 138 11
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  11. 0 6
      blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxAndLeadSealNoExcel.java
  12. 7 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java
  13. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  14. 43 12
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  15. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  16. 64 48
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  17. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java
  18. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java

@@ -115,6 +115,11 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "业务类型, SE=海运出口 SI=海运进口")
 	private String businessType;
 	/**
+	 * 业务类型
+	 */
+	@ApiModelProperty(value = "业务类型")
+	private String businessTypes;
+	/**
 	 * 进出口, E=出口 I=进口
 	 */
 	@ApiModelProperty(value = "进出口, E=出口 I=进口")

+ 11 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/PurchaseDetailDto.java

@@ -115,4 +115,15 @@ public class PurchaseDetailDto {
 	 */
 	@ExcelProperty(value = "业务来源")
 	private String businessSource;
+	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 明细备注
+	 */
+	@ExcelProperty(value = "明细备注")
+	private String itemRemarks;
 }

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailDto.java

@@ -162,6 +162,18 @@ public class SaleDetailDto {
 	private String businessSource;
 
 	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 明细备注
+	 */
+	@ExcelProperty(value = "明细备注")
+	private String itemRemarks;
+
+	/**
 	 * 退货状态
 	 */
 	@ExcelIgnore

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailRZDto.java

@@ -149,6 +149,18 @@ public class SaleDetailRZDto {
 	private String businessSource;
 
 	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 明细备注
+	 */
+	@ExcelProperty(value = "明细备注")
+	private String itemRemarks;
+
+	/**
 	 * 退货状态
 	 */
 	@ExcelIgnore

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

@@ -153,7 +153,6 @@ public class ContainersController extends BladeController {
 			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);
@@ -167,13 +166,13 @@ public class ContainersController extends BladeController {
 	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "导入 箱号 铅封号", notes = "传入excel")
 	@RepeatSubmit
-	public R<List<Containers>> importBoxNo(@RequestParam("file") MultipartFile file) {
+	public R<List<Containers>> importBoxNo(@RequestParam("file") MultipartFile file,@RequestParam("billId") String billId) {
 		//导入数据
 		List<BoxAndLeadSealNoExcel> excelList = ExcelUtil.read(file, BoxAndLeadSealNoExcel.class);
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return containersService.importBoxNo(excelList);
+		return containersService.importBoxNo(excelList,billId);
 	}
 
 	/**

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

@@ -157,4 +157,14 @@ public class PreContainersController extends BladeController {
 	}
 
 
+	/**
+	 * 生成配箱信息
+	 */
+	@GetMapping("/distributionBox")
+	@RepeatSubmit
+	public R distributionBox(@RequestParam("billId") String billId){
+		return preContainersService.distributionBox(billId);
+	}
+
+
 }

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IContainersService.java

@@ -77,7 +77,7 @@ public interface IContainersService extends IService<Containers> {
 	 */
 	R equalDistribution(Containers containers);
 
-    R<List<Containers>> importBoxNo(List<BoxAndLeadSealNoExcel> excelList);
+    R<List<Containers>> importBoxNo(List<BoxAndLeadSealNoExcel> excelList,String billId);
 
 	/**
 	 * 新增或修改 业务-海运进出口配箱-箱号装箱业务(批量)

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IPreContainersService.java

@@ -64,4 +64,6 @@ public interface IPreContainersService extends IService<PreContainers> {
     R generateDispatchVehicles(PreContainers preContainers);
 
 	R revokeDispatchVehicles(PreContainers preContainers);
+
+	R distributionBox(String billId);
 }

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

@@ -20,14 +20,16 @@ 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;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.business.sea.dto.WaitingBox;
-import org.springblade.los.business.sea.entity.*;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.entity.Containers;
+import org.springblade.los.business.sea.entity.ContainersBills;
+import org.springblade.los.business.sea.entity.ContainersCommodity;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.mapper.ContainersMapper;
 import org.springblade.los.business.sea.mapper.PreContainersMapper;
@@ -79,7 +81,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 	public R submit(Containers containers) {
 		String deptId = "";
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid()+"";
+		String branchId = deptUtils.getDeptPid() + "";
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
 			deptId = AuthUtil.getDeptId();
@@ -95,10 +97,10 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		Boolean isNilSealNo = "NIL".equals(sealNo) || "000000".equals(sealNo);
 
 		List<Containers> sealNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
-				.eq(Containers::getTenantId, AuthUtil.getTenantId())
-				.eq(Containers::getIsDeleted, 0)
-				.eq(Containers::getPid, containers.getPid())
-				.eq(Containers::getSealNo, sealNo));
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getPid, containers.getPid())
+			.eq(Containers::getSealNo, sealNo));
 
 		List<Containers> cntrNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
@@ -252,20 +254,20 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			.in(ContainersBills::getPid, toLongList));
 		if (ObjectUtils.isNotNull(containersBillsList)) {
 			List<Long> idList = containersBillsList.stream().map(ContainersBills::getPpId).collect(Collectors.toList());
-			if (idList.isEmpty()){
+			if (idList.isEmpty()) {
 				throw new RuntimeException("数据错误,请联系管理员");
 			}
 			List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-				.eq(Bills::getTenantId,AuthUtil.getTenantId())
-				.eq(Bills::getIsDeleted,0)
-				.in(Bills::getId,idList));
-			for (Bills item : billsList){
-				BigDecimal quantity = containersBillsList.stream().filter(e-> e.getPpId().equals(item.getId()))
-					.map(ContainersBills::getQuantity).reduce(BigDecimal.ZERO,BigDecimal::add);
-				BigDecimal grossWeight = containersBillsList.stream().filter(e-> e.getPpId().equals(item.getId()))
-					.map(ContainersBills::getGrossWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
-				BigDecimal measurement = containersBillsList.stream().filter(e-> e.getPpId().equals(item.getId()))
-					.map(ContainersBills::getMeasurement).reduce(BigDecimal.ZERO,BigDecimal::add);
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.in(Bills::getId, idList));
+			for (Bills item : billsList) {
+				BigDecimal quantity = containersBillsList.stream().filter(e -> e.getPpId().equals(item.getId()))
+					.map(ContainersBills::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal grossWeight = containersBillsList.stream().filter(e -> e.getPpId().equals(item.getId()))
+					.map(ContainersBills::getGrossWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal measurement = containersBillsList.stream().filter(e -> e.getPpId().equals(item.getId()))
+					.map(ContainersBills::getMeasurement).reduce(BigDecimal.ZERO, BigDecimal::add);
 				item.setCfsQuantity((ObjectUtils.isNotNull(item.getCfsQuantity()) ? item.getCfsQuantity() : new BigDecimal("0.00")).subtract(quantity));
 				item.setCfsMeasurement((ObjectUtils.isNotNull(item.getCfsMeasurement()) ? item.getCfsMeasurement() : new BigDecimal("0.00")).subtract(measurement));
 				item.setCfsGrossWeight((ObjectUtils.isNotNull(item.getCfsGrossWeight()) ? item.getCfsGrossWeight() : new BigDecimal("0.00")).subtract(grossWeight));
@@ -322,9 +324,9 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		}
 		BigDecimal teu = new BigDecimal("0.00");
 
-		if ("1".equals(containers.getType())){
-			 teu = containersList.stream().map(Containers::getTeu).reduce(BigDecimal.ZERO,BigDecimal::add);
-		}else{
+		if ("1".equals(containers.getType())) {
+			teu = containersList.stream().map(Containers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+		} else {
 			teu = new BigDecimal(containersList.size());
 		}
 		if (new BigDecimal("0").compareTo(teu) == 0) {
@@ -367,8 +369,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			containersBills.setCreateUserName(AuthUtil.getUserName());
 			containersBills.setTenantId(AuthUtil.getTenantId());
 			containersBills.setPid(containersList.get(i).getId());
-			if ("1".equals(containers.getType())){
-				if (ObjectUtils.isNotNull(containersList.get(i).getTeu())){
+			if ("1".equals(containers.getType())) {
+				if (ObjectUtils.isNotNull(containersList.get(i).getTeu())) {
 					containersList.get(i).setQuantity(average.multiply(containersList.get(i).getTeu()));
 					containersList.get(i).setGrossWeight(averageGrossWeight.multiply(containersList.get(i).getTeu()));
 					containersList.get(i).setNetWeight(averageNetWeight.multiply(containersList.get(i).getTeu()));
@@ -377,10 +379,10 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 					containersBills.setGrossWeight(averageGrossWeight.multiply(containersList.get(i).getTeu()));
 					containersBills.setNetWeight(averageNetWeight.multiply(containersList.get(i).getTeu()));
 					containersBills.setMeasurement(averageMeasurement.multiply(containersList.get(i).getTeu()));
-				}else{
+				} else {
 					throw new RuntimeException("TEU数量为空,请重新添加");
 				}
-			}else{
+			} else {
 				containersList.get(i).setQuantity(average);
 				containersList.get(i).setGrossWeight(averageGrossWeight);
 				containersList.get(i).setNetWeight(averageNetWeight);
@@ -410,91 +412,49 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public R<List<Containers>> importBoxNo(List<BoxAndLeadSealNoExcel> excelList) {
+	public R<List<Containers>> importBoxNo(List<BoxAndLeadSealNoExcel> excelList, String billId) {
 		List<String> cntrNo = excelList.stream().map(BoxAndLeadSealNoExcel::getCntrNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 		if (cntrNo.size() != excelList.size()) {
 			throw new RuntimeException("箱号不允许重复");
 		}
-
 		List<String> sealNo = excelList.stream().map(BoxAndLeadSealNoExcel::getSealNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 		if (sealNo.size() != excelList.size()) {
 			throw new RuntimeException("铅封号不允许重复");
 		}
-
-		List<String> ids = excelList.stream().map(BoxAndLeadSealNoExcel::getId).distinct().collect(Collectors.toList());
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
-			.in(Containers::getId, ids));
-		if (list.size() != excelList.size()){
-			throw new RuntimeException("导入数据与待配箱数据不一致,请重新下载模版");
-		}
-		List<Long> pid = list.stream().map(Containers::getPid).distinct().collect(Collectors.toList());
-		List<PreContainers> preContainersList = preContainersMapper.selectList(new LambdaQueryWrapper<PreContainers>()
-			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
-			.eq(PreContainers::getIsDeleted, 0)
-			.in(PreContainers::getId, pid)
-		);
-		if (preContainersList.isEmpty()){
-			throw new RuntimeException("未查到具体箱型数量数据信息");
-		}
-		BigDecimal quantity = new BigDecimal("0.00");
-		BigDecimal grossWeight = new BigDecimal("0.00");
-		BigDecimal netWeight = new BigDecimal("0.00");
-		BigDecimal measurement = new BigDecimal("0.00");
-		List<String> cntry = excelList.stream().map(BoxAndLeadSealNoExcel::getCntrTypeCode).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-		for (String item :cntry){
-			List<BoxAndLeadSealNoExcel> boxList =  excelList.stream().filter(e-> e.getCntrTypeCode().equals(item)).collect(Collectors.toList());
-			if (!boxList.isEmpty()){
-				PreContainers preContainersDetails = preContainersList.stream().filter(e-> e.getCntrTypeCode().equals(item)
-				&& e.getPid().equals(Long.parseLong(boxList.get(0).getId()))).findFirst().orElse(null);
-				BigDecimal quantity1 = boxList.stream().map(BoxAndLeadSealNoExcel::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
-				BigDecimal grossWeight1 = boxList.stream().map(BoxAndLeadSealNoExcel::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
-				BigDecimal netWeight1 = boxList.stream().map(BoxAndLeadSealNoExcel::getNetWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
-				BigDecimal measurement1 = boxList.stream().map(BoxAndLeadSealNoExcel::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
-				if (preContainersDetails != null){
-					preContainersDetails.setNumber(quantity1);
-					preContainersDetails.setMeasurement(grossWeight1);
-					preContainersDetails.setNetWeight(netWeight1);
-					preContainersDetails.setMeasurement(measurement1);
-					preContainersMapper.updateById(preContainersDetails);
-				}
-				quantity = quantity.add(quantity1);
-				grossWeight = grossWeight.add(grossWeight1);
-				netWeight = netWeight.add(netWeight1);
-				measurement = measurement.add(measurement1);
-			}
+			.in(Containers::getPid, billId));
+		if (list.isEmpty()) {
+			throw new RuntimeException("未找到配箱信息");
 		}
-		Bills bills = billsMapper.selectById(preContainersList.get(0).getPid());
-		if (bills != null){
-			bills.setQuantity(quantity);
-			bills.setMeasurement(grossWeight);
-			bills.setNetWeight(netWeight);
-			bills.setMeasurement(measurement);
-			billsMapper.updateById(bills);
+		int count;
+		if (list.size() >= excelList.size()) {
+			count = excelList.size();
+		} else {
+			count = list.size();
 		}
 		List<Containers> containersList = new ArrayList<>();
 		String regex = "^[a-zA-Z0-9]+$";
 		Pattern pattern = Pattern.compile(regex);
-		for (BoxAndLeadSealNoExcel item : excelList) {
-			Containers containers = list.stream().filter(e -> e.getId().equals(Long.parseLong(item.getId()))).findFirst().orElse(null);
-			if (containers != null) {
-				if (pattern.matcher(item.getCntrNo()).matches()) {
-					throw new RuntimeException("箱号" + item.getCntrNo() + "存在特殊字符,请修改");
-				}
-				if (pattern.matcher(item.getSealNo()).matches()) {
-					throw new RuntimeException("铅封号" + item.getSealNo() + "存在特殊字符,请修改");
-				}
-				containers.setCntrNo(item.getCntrNo().toUpperCase());
-				containers.setSealNo(item.getSealNo());
-				containers.setMeasurement(item.getMeasurement());
-				containers.setQuantity(item.getQuantity());
-				containers.setGrossWeight(item.getGrossWeight());
-				containers.setNetWeight(item.getNetWeight());
-				containers.setMarks(item.getMarks());
-				containers.setRemarks(item.getRemarks());
-				containersList.add(containers);
+		for (int i = 0; i < count; i++) {
+			BoxAndLeadSealNoExcel item = excelList.get(i);
+			/*if (pattern.matcher(item.getCntrNo()).matches()) {
+				throw new RuntimeException("箱号" + item.getCntrNo() + "存在特殊字符,请修改");
 			}
+			if (pattern.matcher(item.getSealNo()).matches()) {
+				throw new RuntimeException("铅封号" + item.getSealNo() + "存在特殊字符,请修改");
+			}*/
+			Containers containers = list.get(i);
+			containers.setCntrNo(item.getCntrNo().toUpperCase());
+			containers.setSealNo(item.getSealNo());
+			containers.setMeasurement(item.getMeasurement());
+			containers.setQuantity(item.getQuantity());
+			containers.setGrossWeight(item.getGrossWeight());
+			containers.setNetWeight(item.getNetWeight());
+			containers.setMarks(item.getMarks());
+			containers.setRemarks(item.getRemarks());
+			containersList.add(containers);
 		}
 		if (!containersList.isEmpty()) {
 			this.updateBatchById(containersList);
@@ -509,7 +469,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 	public R submitList(List<Containers> list) {
 		String deptId = "";
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid()+"";
+		String branchId = deptUtils.getDeptPid() + "";
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
 			deptId = AuthUtil.getDeptId();

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

@@ -169,7 +169,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		}
 		billsMapper.updateById(bills);
 		this.saveOrUpdate(preContainers);
-		List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
+		/*List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
 			.eq(Containers::getPid, preContainers.getPid()));
@@ -188,9 +188,9 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		if (bCntrTypes != null) {
 			ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
 		}
-		/*if (ObjectUtils.isNull(ediCode)) {
+		if (ObjectUtils.isNull(ediCode)) {
 			throw new RuntimeException("请先配置场站对应箱型代码");
-		}*/
+		}
 		//生成海运进出口配箱-箱号装箱
 		List<Containers> containersList = new ArrayList<>();
 		for (int i = 0; i < preContainers.getQuantity(); i++) {
@@ -227,7 +227,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			containers.setLineNo(preContainers.getId());
 			containersList.add(containers);
 		}
-		containersService.saveOrUpdateBatch(containersList);
+		containersService.saveOrUpdateBatch(containersList);*/
 		return R.data(preContainers);
 	}
 
@@ -305,7 +305,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			}
 			billsMapper.updateById(bills);
 		}
-		List<Containers> containersList = new ArrayList<>();
+		/*List<Containers> containersList = new ArrayList<>();
 		if (preContainersList.isEmpty()) {
 			return R.data(containersList);
 		}
@@ -325,7 +325,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		List<BCntrTypes> bCntrTypesList = bCntrTypesService.list(new LambdaQueryWrapper<BCntrTypes>()
 			.apply("find_in_set(cn_name,'" + cntrTypeCode + "')")
 			.eq(BCntrTypes::getStatus, 0)
-		);
+		);*/
 		for (PreContainers preContainers : preContainersList) {
 			if (preContainers.getId() == null) {
 				preContainers.setCreateTime(new Date());
@@ -341,7 +341,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				preContainers.setUpdateTime(new Date());
 				preContainers.setUpdateUserName(AuthUtil.getUserName());
 			}
-			this.saveOrUpdate(preContainers);
+			/*this.saveOrUpdate(preContainers);
 			String ediCode = "";
 			if (!bCntrTypesList.isEmpty()) {
 				BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCnName().equals(preContainers.getCntrTypeCode()))
@@ -386,12 +386,13 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				containers.setCntrTypeCodeId(preContainers.getCntrTypeCodeId());
 				containers.setLineNo(preContainers.getId());
 				containersList.add(containers);
-			}
+			}*/
 		}
-		if (!containersList.isEmpty()) {
+		/*if (!containersList.isEmpty()) {
 			containersService.saveOrUpdateBatch(containersList);
-		}
-		return R.data(containersList);
+		}*/
+		this.saveOrUpdateBatch(preContainersList);
+		return R.data(preContainersList);
 	}
 
 	@Override
@@ -518,4 +519,130 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		baseMapper.updateById(preContainers);
 		return R.data(preContainers);
 	}
+
+	@Override
+	public R distributionBox(String billId) {
+		List<PreContainers> preContainersList = baseMapper.selectList(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getPid, billId));
+		if (preContainersList.isEmpty()) {
+			throw new RuntimeException("请先维护箱信息");
+		}
+		Bills bills = billsMapper.selectById(preContainersList.get(0).getPid());
+		if (bills == null) {
+			throw new RuntimeException("未找到单据信息");
+		}
+		String cntrTypeCode = preContainersList.stream().map(PreContainers::getCntrTypeCode).distinct().collect(Collectors.joining(","));
+		List<BCntrTypes> bCntrTypesList = bCntrTypesService.list(new LambdaQueryWrapper<BCntrTypes>()
+			.apply("find_in_set(cn_name,'" + cntrTypeCode + "')")
+			.eq(BCntrTypes::getStatus, 0)
+		);
+		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.in(Containers::getPid, billId));
+		List<Containers> containersListNew = new ArrayList<>();
+		if (containersList.isEmpty()) {
+			for (PreContainers preContainers : preContainersList) {
+				String ediCode = "";
+				if (!bCntrTypesList.isEmpty()) {
+					BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCnName().equals(preContainers.getCntrTypeCode()))
+						.findFirst().orElse(null);
+					if (bCntrTypes != null) {
+						ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
+					}
+				}
+				//生成海运进出口配箱-箱号装箱
+				for (int i = 0; i < preContainers.getQuantity(); i++) {
+					Containers containers = new Containers();
+					containers.setCreateTime(new Date());
+					containers.setCreateUser(AuthUtil.getUserId());
+					containers.setCreateUserName(AuthUtil.getUserName());
+					containers.setCyCntrCode(ediCode);
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						containers.setBranchId(preContainers.getBranchId());
+						containers.setCreateDept(preContainers.getCreateDept());
+						containers.setCreateDeptName(preContainers.getCreateDeptName());
+					}
+					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.setCntrTypeCodeId(preContainers.getCntrTypeCodeId());
+					containers.setLineNo(preContainers.getId());
+					containersListNew.add(containers);
+				}
+			}
+		} else {
+			for (PreContainers preContainers : preContainersList) {
+				String ediCode = "";
+				if (!bCntrTypesList.isEmpty()) {
+					BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCnName().equals(preContainers.getCntrTypeCode()))
+						.findFirst().orElse(null);
+					if (bCntrTypes != null) {
+						ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
+					}
+				}
+				List<Containers> containersArray = containersList.stream().filter(e -> e.getCntrTypeCode().equals(preContainers.getCntrTypeCode()))
+					.collect(Collectors.toList());
+				if (preContainers.getQuantity() > containersArray.size()) {
+					//生成海运进出口配箱-箱号装箱
+					for (int i = 0; i < preContainers.getQuantity() - containersArray.size(); i++) {
+						Containers containers = new Containers();
+						containers.setCreateTime(new Date());
+						containers.setCreateUser(AuthUtil.getUserId());
+						containers.setCreateUserName(AuthUtil.getUserName());
+						containers.setCyCntrCode(ediCode);
+						if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+							containers.setBranchId(preContainers.getBranchId());
+							containers.setCreateDept(preContainers.getCreateDept());
+							containers.setCreateDeptName(preContainers.getCreateDeptName());
+						}
+						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.setCntrTypeCodeId(preContainers.getCntrTypeCodeId());
+						containers.setLineNo(preContainers.getId());
+						containersListNew.add(containers);
+					}
+				}
+			}
+		}
+		if (!containersListNew.isEmpty()) {
+			containersService.saveOrUpdateBatch(containersListNew);
+		}
+		return R.data(containersListNew);
+	}
 }

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

@@ -39,12 +39,6 @@ import java.math.BigDecimal;
 public class BoxAndLeadSealNoExcel implements Serializable {
 
 	/**
-	 * id
-	 */
-	@ExcelProperty(value = "id(请勿删除,否则导入更新数据失败)")
-	private String id;
-
-	/**
 	 * 尺码箱型
 	 */
 	@ExcelProperty(value = "箱型")

+ 7 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java

@@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -113,11 +114,13 @@ public class PJCorprClient implements IPJCorpClient {
 					System.out.println("=========循环订单明细数据==========" + list);
 					if (!list.isEmpty()) {
 						List<Long> goodsIds = new ArrayList<>();
+						BigDecimal integral = new BigDecimal("0.00");
 						for (PjOrderItems e : list) {
 							if (!pjGoodsDescList.isEmpty()) {
 								PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(item -> item.getId().equals(e.getGoodsId())).findFirst().orElse(null);
 								if (goodsDesc != null) {
 									goodsIds.add(goodsDesc.getId());
+									integral= integral.add(goodsDesc.getIntegral().multiply(e.getGoodsNum()));
 									//客户门店积分
 									corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().add(goodsDesc.getIntegral().multiply(e.getGoodsNum())));
 								}
@@ -135,7 +138,7 @@ public class PJCorprClient implements IPJCorpClient {
 						integralDetail.setSrcNo(order.getOrdNo());
 						integralDetail.setCorpId(order.getCustomerId());
 						integralDetail.setCorpName(order.getCustomerName());
-						integralDetail.setIntegral(order.getTotalMoney());
+						integralDetail.setIntegral(integral);
 						integralDetail.setGoodsName(order.getGoodsNameJoin());
 						StringBuilder goodsId = new StringBuilder();
 						for (Long item : goodsIds) {
@@ -215,10 +218,12 @@ public class PJCorprClient implements IPJCorpClient {
 					System.out.println("=========循环订单明细数据==========" + list);
 					if (!list.isEmpty()) {
 						List<Long> goodsIds = new ArrayList<>();
+						BigDecimal integral = new BigDecimal("0.00");
 						for (PjOrderItems e : list) {
 							if (!pjGoodsDescList.isEmpty()) {
 								PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(item -> item.getId().equals(e.getGoodsId())).findFirst().orElse(null);
 								if (goodsDesc != null) {
+									integral= integral.add(goodsDesc.getIntegral().multiply(e.getGoodsNum()));
 									goodsIds.add(goodsDesc.getId());
 									//客户门店积分
 									corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().subtract(goodsDesc.getIntegral().multiply(e.getGoodsNum())));
@@ -237,7 +242,7 @@ public class PJCorprClient implements IPJCorpClient {
 						integralDetail.setSrcNo(order.getOrdNo());
 						integralDetail.setCorpId(order.getCustomerId());
 						integralDetail.setCorpName(order.getCustomerName());
-						integralDetail.setIntegral(order.getTotalMoney());
+						integralDetail.setIntegral(integral);
 						integralDetail.setGoodsName(order.getGoodsNameJoin());
 						StringBuilder goodsId = new StringBuilder();
 						for (Long item : goodsIds) {

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -119,7 +119,8 @@ public class GoodsDescController extends BladeController {
 
 		lambdaQueryWrapper.select(PjGoodsDesc::getId, PjGoodsDesc::getCname, PjGoodsDesc::getCode, PjGoodsDesc::getSpecificationAndModel, PjGoodsDesc::getBrandItem,
 				PjGoodsDesc::getBrandName, PjGoodsDesc::getGoodsSize, PjGoodsDesc::getInventoryAlert, PjGoodsDesc::getGoodsDescription,
-				PjGoodsDesc::getStatus, PjGoodsDesc::getEnableOrNot,PjGoodsDesc::getUnit,PjGoodsDesc::getIntegral)
+				PjGoodsDesc::getStatus, PjGoodsDesc::getEnableOrNot,PjGoodsDesc::getUnit,PjGoodsDesc::getIntegral,PjGoodsDesc::getWhether
+				,PjGoodsDesc::getWhetherIntegral)
 			.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司

+ 43 - 12
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -244,26 +244,38 @@ public class OrderController extends BladeController {
 	@ApiOperation(value = "分页", notes = "传入order")
 	public void listExport(PjOrder order, HttpServletResponse response) {
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+		lambdaQueryWrapper.select(PjOrder::getId, PjOrder::getOrdNo, PjOrder::getSrcOrdNo, PjOrder::getBusinessSource,
+				PjOrder::getSalesCompanyName, PjOrder::getCustomerName, PjOrder::getSalerName, PjOrder::getStorageName,
+				PjOrder::getNumberRows, PjOrder::getGoodsNameJoin, PjOrder::getGoodsTotalNum, PjOrder::getTotalMoney,
+				PjOrder::getPaymentAmountTl, PjOrder::getStatus, PjOrder::getActualPaymentStatus, PjOrder::getReturnsStatus,
+				PjOrder::getBusinesDate, PjOrder::getPaymentDate, PjOrder::getCreateUser, PjOrder::getCreateTime,
+				PjOrder::getUpdateUser, PjOrder::getUpdateTime, PjOrder::getReturnsNumber, PjOrder::getReturnsAmount,
+				PjOrder::getConfirmWarehouse, PjOrder::getWhetherRedeem, PjOrder::getFundingPartyId, PjOrder::getFundingPartyName,
+				PjOrder::getInterest, PjOrder::getFundingAmount, PjOrder::getBondAmount, PjOrder::getProportion,
+				PjOrder::getGoodsTotalShipAmount, PjOrder::getOutGoodsTotalShipNum, PjOrder::getOutGoodsTotalShipAmount,
+				PjOrder::getGoodsTotalShipNum,PjOrder::getSalesAmount,PjOrder::getRefno,PjOrder::getPrimaryGoodsTotalNum,
+				PjOrder::getPrimaryFundingAmount,PjOrder::getUseAdvanceChargeAmount,PjOrder::getProduceAdvanceChargeAmount)
+			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, order.getBsType())
 			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.eq(ObjectUtils.isNotEmpty(order.getStorageId()), PjOrder::getStorageId, order.getStorageId())//仓库
+			.eq(ObjectUtils.isNotEmpty(order.getReturnsStatus()), PjOrder::getReturnsStatus, order.getReturnsStatus())//退货状态
 			.like(ObjectUtils.isNotEmpty(order.getStorageName()), PjOrder::getStorageName, order.getStorageName())
+			.like(ObjectUtils.isNotEmpty(order.getSalerName()), PjOrder::getSalerName, order.getSalerName())
 			.eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户
-			.eq(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())//客户
 			.eq(ObjectUtils.isNotEmpty(order.getGenerateTask()), PjOrder::getGenerateTask, order.getGenerateTask())//客户
 			.eq(ObjectUtils.isNotEmpty(order.getSalerId()), PjOrder::getSalerId, order.getSalerId())//业务员
-			.eq(ObjectUtils.isNotEmpty(order.getSalerName()), PjOrder::getSalerName, order.getSalerName())//业务员
+			.like(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())
 			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
-			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource())//来源
-			.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
-		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//创建日期
+			.like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), PjOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());//来源
+		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//应结日期
 			lambdaQueryWrapper.ge(PjOrder::getDueDate, order.getDueDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getDueDate, order.getDueDateList().get(1));
 		}
-		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//创建日期
+		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
 			lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
 		}
@@ -276,9 +288,30 @@ public class OrderController extends BladeController {
 		} else {
 			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
 		}
-		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
-			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
-			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
+		if ("JF".equals(order.getBsType())){
+			if (ObjectUtils.isNull(order.getNotComplete())) {
+				if(ObjectUtils.isNotEmpty(order.getStatus())){
+					lambdaQueryWrapper.apply( "find_in_set(status,'" + order.getStatus() + "')");
+				}else{
+					lambdaQueryWrapper.apply("not find_in_set(status,'已发货,已取消')");
+				}
+			} else {
+				lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
+			}
+		}else{
+			if (ObjectUtils.isNull(order.getNotComplete())) {
+				if(ObjectUtils.isNotEmpty(order.getStatus())){
+					lambdaQueryWrapper.apply( "find_in_set(status,'" + order.getStatus() + "')");
+				}else{
+					lambdaQueryWrapper.apply("not find_in_set(status,'已发货,已收货,已取消')");
+				}
+			} else {
+				lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
+			}
+			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
+				" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
+		}
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
 			if (AuthUtil.getUserRole().contains("业务员")) {
@@ -288,8 +321,6 @@ public class OrderController extends BladeController {
 			}
 		}
 		List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
-
-
 		if (CollectionUtils.isNotEmpty(pages)) {
 			List<Long> userIds = new ArrayList<>();
 			List<Long> createUser = pages.stream().map(PjOrder::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());

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

@@ -1190,6 +1190,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					stockOne.setBalanceQuantity(item.getSendNum());
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(item.getSubTotalMoney());
+					stockOne.setRebateInventoryAmount(item.getSendNum().multiply(stockOne.getRebatePrice()));
 					stockOne.setVersion(stockOne.getVersion());
 					pjStockDescArrayList.add(stockOne);
 				} else {

+ 64 - 48
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -839,8 +839,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							item.setSendNumHave(item.getSendNum());
 						}
 						stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-						stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
-						stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getRebatePrice())));
+						BigDecimal inventoryAmount = item.getSendNum().multiply(stockOne.getInventoryCostPrice());
+						BigDecimal rebateInventoryAmount = item.getSendNum().multiply(stockOne.getRebatePrice());
+						stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
+						stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
 						stockOne.setVersion(stockOne.getVersion());
 					}
 					pjStockDescArrayList.add(stockOne);
@@ -902,13 +904,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		} else {
 			throw new RuntimeException("出库明细不能为空");
 		}
+		orderItemsService.updateBatchById(pjOrderItemsList);
 		PjOrder order = orderMapper.selectById(ship.getOrdId());
 		if (ObjectUtil.isNotEmpty(order)) {
 			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.eq(PjOrderItems::getPid, order.getId()));
-			if (!orderItemsList.isEmpty()){
+			if (!orderItemsList.isEmpty()) {
 				if ("已收货".equals(order.getStatus()) || "退款请核".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
 					throw new RuntimeException("单据已收货或申请售后中,操作失败");
 				}
@@ -1213,7 +1216,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		}
 		//生成出库工单历史记录
 		saveHistory(ship.getId(), OrderTypeEnum.OURTBOUND.getType());
-		orderItemsService.updateBatchById(pjOrderItemsList);
 		shipItemsService.saveOrUpdateBatch(shipItemsList);
 		return R.data(ship);
 	}
@@ -1333,8 +1335,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 //					item.setSendNumHave(new BigDecimal("0"));
 //					item.setSendNumFinancing(new BigDecimal("0"));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
-					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(item.getSendNum().multiply(stockOne.getRebatePrice())));
+					BigDecimal inventoryAmount = item.getSendNum().multiply(stockOne.getInventoryCostPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(stockOne.getRebatePrice());
+					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(inventoryAmount));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(rebateInventoryAmount));
 					stockOne.setVersion(stockOne.getVersion());
 					pjStockDescArrayList.add(stockOne);
 					/*R res = iStockDescService.updateByIdNew(stockOne);
@@ -1389,7 +1393,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.eq(PjOrderItems::getPid, order.getId()));
-			if (!orderItemsList.isEmpty()){
+			if (!orderItemsList.isEmpty()) {
 				//发货数量和
 				BigDecimal sendNum = orderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
 					.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -1684,15 +1688,18 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			List<Long> ordIds = orderList.stream().map(PjOrder::getId).collect(Collectors.toList());
 			List<PjOrderItems> orderItemsList = new ArrayList<>();
 			if (!ordIds.isEmpty()) {
-				orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-					.eq(PjOrderItems::getIsDeleted, 0)
-					.eq(PjOrderItems::getBizType, "RZCG")
-					.in(PjOrderItems::getPid, ordIds)
-					.in(PjOrderItems::getId, financingShipItemDtoList.stream().map(FinancingShipItemDto::getId).filter(Objects::nonNull)
-						.distinct().collect(Collectors.toList()))
-					.orderByAsc(PjOrderItems::getCreateTime)
-				);
+				List<Long> ids = financingShipItemDtoList.stream().map(FinancingShipItemDto::getId).filter(Objects::nonNull)
+					.distinct().collect(Collectors.toList());
+				if (!ids.isEmpty()) {
+					orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+						.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+						.eq(PjOrderItems::getIsDeleted, 0)
+						.eq(PjOrderItems::getBizType, "RZCG")
+						.in(PjOrderItems::getPid, ordIds)
+						.in(PjOrderItems::getId, ids)
+						.orderByAsc(PjOrderItems::getCreateTime)
+					);
+				}
 			}
 			BigDecimal amount = new BigDecimal("0.00");
 			for (PjShipItems item : itemsList) {
@@ -2241,13 +2248,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setStoreInventory(item.getSendNum());
 					stockDesc.setInventoryAmount(item.getSendNum().multiply(item.getPrice()));
 					stockDesc.setRebateInventoryAmount(item.getSendNum().multiply(item.getRebatePrice()));
-					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
-						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-						stockDesc.setRebatePrice(stockDesc.getRebateInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					} else {
-						stockDesc.setInventoryCostPrice(item.getPrice());
-						stockDesc.setRebatePrice(item.getRebatePrice());
-					}
+					stockDesc.setInventoryCostPrice(item.getPrice());
+					stockDesc.setRebatePrice(item.getRebatePrice());
 					pjStockDescArrayListSave.add(stockDesc);
 				} else {
 					stockDesc.setId(stockOne.getId());
@@ -2856,9 +2858,11 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						item.setSendNumHave(new BigDecimal("0"));
 					}
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(item.getPrice())));
-					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(item.getRebatePrice())));
-					/*if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 || new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
+					BigDecimal inventoryAmount = item.getSendNum().multiply(item.getPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(item.getRebatePrice());
+					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
+					if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 || new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
 						stockOne.setInventoryCostPrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
@@ -2867,7 +2871,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						stockOne.setRebatePrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					}*/
+					}
 					stockOne.setVersion(stockOne.getVersion());
 					/*R res = iStockDescService.updateByIdNew(stockOne);
 					if (!res.isSuccess()) {
@@ -3407,6 +3411,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOneC.setStoreInventory(stockOneC.getBalanceQuantity());
 					stockOneC.setInventoryAmount(stockOneC.getInventoryAmount().subtract(orderItems.getGoodsNum()
 						.multiply(stockOneC.getInventoryCostPrice())));
+					stockOneC.setRebateInventoryAmount(stockOneC.getRebateInventoryAmount().subtract(orderItems.getGoodsNum()
+						.multiply(stockOneC.getRebatePrice())));
 					stockOneC.setVersion(stockOneC.getVersion());
 					pjStockDescArrayList.add(stockOneC);
 				} else {
@@ -3439,6 +3445,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOneR.setInventoryAmount(stockOneR.getInventoryAmount().add(orderItems.getGoodsNum()
 						.multiply(stockOneC.getInventoryCostPrice())));
 					stockOneR.setInventoryCostPrice(stockOneR.getInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
+					stockOneR.setRebateInventoryAmount(stockOneR.getRebateInventoryAmount().add(orderItems.getGoodsNum()
+						.multiply(stockOneC.getRebatePrice())));
+					stockOneR.setRebatePrice(stockOneR.getRebateInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
 					stockOneR.setVersion(stockOneR.getVersion());
 					pjStockDescList.add(stockOneR);
 				} else {
@@ -3465,6 +3474,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setStoreInventory(orderItems.getGoodsNum());
 					stockDesc.setInventoryAmount(orderItems.getGoodsNum().multiply(stockOneC.getInventoryCostPrice()));
 					stockDesc.setInventoryCostPrice(stockOneC.getInventoryCostPrice());
+					stockDesc.setRebatePrice(stockOneC.getRebatePrice());
+					stockDesc.setRebateInventoryAmount(orderItems.getGoodsNum().multiply(stockOneC.getRebatePrice()));
 					stockDesc.setSalesCompanyId(detail.getSalesCompanyId());
 					stockDesc.setSalesCompanyName(detail.getSalesCompanyName());
 					stockDesc.setDot(orderItems.getDot());
@@ -3542,6 +3553,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOneC.setStoreInventory(stockOneC.getBalanceQuantity());
 					stockOneC.setInventoryAmount(stockOneC.getInventoryAmount().add(orderItems.getGoodsNum()
 						.multiply(stockOneC.getInventoryCostPrice())));
+					stockOneC.setRebateInventoryAmount(stockOneC.getRebateInventoryAmount().add(orderItems.getGoodsNum()
+						.multiply(stockOneC.getRebatePrice())));
 					stockOneC.setVersion(stockOneC.getVersion());
 					pjStockDescArrayList.add(stockOneC);
 				} else {
@@ -3589,6 +3602,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					} else {
 						stockOneR.setInventoryCostPrice(stockOneR.getInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
 					}
+					stockOneR.setRebateInventoryAmount(stockOneR.getRebateInventoryAmount().subtract(orderItems.getGoodsNum()
+						.multiply(stockOneR.getRebatePrice())));
+					if (stockOneR.getRebateInventoryAmount().compareTo(new BigDecimal("0.00")) == 0 ||
+						stockOneR.getBalanceQuantity().compareTo(new BigDecimal("0.00")) == 0) {
+						stockOneR.setRebatePrice(new BigDecimal("0.00"));
+					} else {
+						stockOneR.setRebatePrice(stockOneR.getRebateInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
+					}
 					stockOneR.setDot("");
 					stockOneR.setVersion(stockOneR.getVersion());
 					pjStockDescArrayList.add(stockOneR);
@@ -4008,17 +4029,15 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						item.setSendNumHave(item.getSendNum());
 					}
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
-					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getRebatePrice())));
+					BigDecimal inventoryAmount = item.getSendNum().multiply(item.getPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(item.getRebatePrice());
+					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
 					stockOne.setVersion(stockOne.getVersion());
 					if (stockOne.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
-					/*R res = iStockDescService.updateByIdNew(stockOne);
-					if (!res.isSuccess()) {
-						throw new RuntimeException(res.getMsg());
-					}*/
 					pjStockDescArrayList.add(stockOne);
 				} else {
 					System.err.println("商品:" + goodsDesc.getCname());
@@ -4452,8 +4471,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						item.setSendNumHave(new BigDecimal("0"));
 					}
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
-					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(item.getSendNum().multiply(stockOne.getRebatePrice())));
+					BigDecimal inventoryAmount = item.getSendNum().multiply(item.getPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(item.getRebatePrice());
+					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(inventoryAmount));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(rebateInventoryAmount));
 					stockOne.setVersion(stockOne.getVersion());
 					if (stockOne.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
@@ -5029,7 +5050,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getSendNum()));
 					stockDesc.setBalanceQuantityHave(stockOne.getBalanceQuantityHave().add(item.getSendNum()));
 					stockDesc.setStoreInventory(stockDesc.getBalanceQuantity());
-					stockDesc.setInventoryAmount(stockOne.getInventoryAmount() == null ? new BigDecimal("0.00") : stockOne.getInventoryAmount().add(item.getCostprie()));
+					BigDecimal inventoryAmount = item.getSendNum().multiply(stockOne.getInventoryCostPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(stockOne.getRebatePrice());
+					stockDesc.setInventoryAmount(stockOne.getInventoryAmount().add(inventoryAmount));
+					stockDesc.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(rebateInventoryAmount));
 					stockDesc.setVersion(stockOne.getVersion());
 					pjStockDescArrayListUpdate.add(stockDesc);
 				}
@@ -5331,18 +5355,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setBalanceQuantityHave(stockOne.getBalanceQuantityHave().subtract(item.getSendNumHave()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(item.getPrice())));
-					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(item.getRebatePrice())));
-					if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
-						stockOne.setInventoryCostPrice(new BigDecimal("0.00"));
-					} else {
-						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					}
-					if (new BigDecimal("0.00").compareTo(stockOne.getRebateInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
-						stockOne.setRebatePrice(new BigDecimal("0.00"));
-					} else {
-						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					}
+					BigDecimal inventoryAmount = item.getSendNum().multiply(stockOne.getInventoryCostPrice());
+					BigDecimal rebateInventoryAmount = item.getSendNum().multiply(stockOne.getRebatePrice());
+					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
 					stockOne.setVersion(stockOne.getVersion());
 					pjStockDescArrayList.add(stockOne);
 				} else {

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -589,9 +589,11 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
+						items.setRemarks(item.getRemarks());
 						if (!pjOrderItemsList.isEmpty()) {
 							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
 							if (orderItems != null) {
+								items.setItemRemarks(orderItems.getRemarks());
 								items.setGoodsNum(orderItems.getGoodsNum());
 								items.setPrice(orderItems.getPrice());
 								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
@@ -907,9 +909,11 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
+						items.setRemarks(item.getRemarks());
 						if (!pjOrderItemsList.isEmpty()) {
 							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
 							if (orderItems != null) {
+								items.setItemRemarks(orderItems.getRemarks());
 								items.setGoodsNum(orderItems.getGoodsNum());
 								items.setPrice(orderItems.getPrice());
 								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));

+ 10 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

@@ -339,9 +339,19 @@ public class StockDescController extends BladeController {
 		stockDesc.setSalesCompanyIds(AuthUtil.getDeptId());
 		if ("0".equals(stockDesc.getWhether())) {
 			IPage<PjStockDesc> pages = stockDescService.selectStockDescPage(Condition.getPage(query), stockDesc);
+			for (PjStockDesc item : pages.getRecords()){
+				if (new BigDecimal("0.00").compareTo(item.getIntegral()) == 0){
+					item.setIntegral(null);
+				}
+			}
 			return R.data(pages);
 		} else {
 			IPage<PjStockDesc> pages = stockDescService.selectStockDescPageZero(Condition.getPage(query), stockDesc);
+			for (PjStockDesc item : pages.getRecords()){
+				if (new BigDecimal("0.00").compareTo(item.getIntegral()) == 0){
+					item.setIntegral(null);
+				}
+			}
 			return R.data(pages);
 		}
 	}