Sfoglia il codice sorgente

2023年10月25日18:00:25

纪新园 2 anni fa
parent
commit
b4ab237499
25 ha cambiato i file con 397 aggiunte e 149 eliminazioni
  1. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Containers.java
  2. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/PreContainers.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  4. 11 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  5. 9 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/ContainersController.java
  6. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersBillsMapper.java
  7. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersBillsMapper.xml
  8. 2 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.java
  9. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.xml
  10. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IContainersBillsService.java
  11. 6 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IContainersService.java
  12. 95 121
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  13. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersBillsServiceImpl.java
  14. 100 8
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  15. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  16. 14 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java
  17. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  18. 49 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java
  19. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsTypeMapper.xml
  20. 15 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsTypeController.java
  21. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  22. 22 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  23. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  24. 6 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  25. 18 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

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

@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springblade.los.business.sea.dto.WaitingBox;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -178,6 +179,11 @@ public class Containers implements Serializable {
 	@ApiModelProperty(value = "铅封号")
 	private String sealNo;
 	/**
+	 * TEU
+	 */
+	@ApiModelProperty(value = "TEU")
+	private BigDecimal teu;
+	/**
 	 * 商品 HS-CODE
 	 */
 	@ApiModelProperty(value = "商品 HS-CODE")
@@ -415,5 +421,11 @@ public class Containers implements Serializable {
 	@TableField(exist = false)
 	private List<ContainersBills> subtractContainersBillsList;
 
+	/**
+	 * 待配箱
+	 */
+	@TableField(exist = false)
+	private WaitingBox waitingBox;
+
 
 }

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

@@ -99,6 +99,12 @@ public class PreContainers implements Serializable {
 	 */
 	@ApiModelProperty(value = "集装箱 ISO 尺码箱型")
 	private String cntrTypeCode;
+
+	/**
+	 * TEU
+	 */
+	@ApiModelProperty(value = "TEU")
+	private BigDecimal teu;
 	/**
 	 * 集装箱箱量
 	 */

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -454,4 +454,10 @@ public class PjOrder implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String amount;
+
+	/**
+	 * 客户类型
+	 */
+	@TableField(exist = false)
+	private String corpType;
 }

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

@@ -239,4 +239,15 @@ public class BillsController extends BladeController {
 	}
 
 
+	/**
+	 * 详情
+	 */
+	@GetMapping("/getBillsFees")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入bills")
+	public R<Bills> getBillsFees(Bills bills) {
+		Bills detail = billsService.detail(bills);
+		return R.data(detail);
+	}
+
 }

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

@@ -144,5 +144,14 @@ public class ContainersController extends BladeController {
 		return R.status(containersService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 配箱 - 平均分配件数
+	 */
+	@PostMapping("/equalDistribution")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入containers")
+	public R equalDistribution(@Valid @RequestBody Containers containers) {
+		return containersService.equalDistribution(containers);
+	}
 
 }

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

@@ -40,5 +40,5 @@ public interface ContainersBillsMapper extends BaseMapper<ContainersBills> {
 	 */
 	List<ContainersBillsVO> selectContainersBillsPage(IPage page, ContainersBillsVO containersBills);
 
-	void removeByPid(@Param("pid") Long pid);
+	void removeByPid(@Param("pid") Long pid,@Param("type") String type);
 }

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersBillsMapper.xml

@@ -51,7 +51,7 @@
         <result column="remarks" property="remarks"/>
     </resultMap>
     <update id="removeByPid">
-        update los_sea_containers_bills set is_deleted = '1' where pp_id = #{pid}
+        update los_sea_containers_bills set is_deleted = '1' where pp_id = #{pid} and cntr_type_code = #{type}
     </update>
 
 

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.los.business.sea.entity.Containers;
 import org.springblade.los.business.sea.vo.ContainersVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -43,5 +44,5 @@ public interface ContainersMapper extends BaseMapper<Containers> {
 	 * 通过主表id删除
 	 * @param pid
 	 */
-	void removeByPid(Long pid);
+	void removeByPid(@Param("pid") Long pid, @Param("type")String type);
 }

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.xml

@@ -74,7 +74,7 @@
         <result column="ticket_number" property="ticketNumber"/>
     </resultMap>
     <update id="removeByPid">
-        update los_sea_containers set is_deleted = '1' where pid = #{pid}
+        update los_sea_containers set is_deleted = '1' where pid = #{pid} and cntr_type_code = #{type}
     </update>
 
 

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

@@ -42,5 +42,5 @@ public interface IContainersBillsService extends IService<ContainersBills> {
 	 *
 	 * @param pid
 	 */
-    void removeByPid(Long pid);
+    void removeByPid(Long pid,String type);
 }

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

@@ -59,7 +59,7 @@ public interface IContainersService extends IService<Containers> {
 	 * 通过主表id删除
 	 * @param pid
 	 */
-	void removeByPid(Long pid);
+	void removeByPid(Long pid,String type);
 
 	/**
 	 * 清除箱号
@@ -69,4 +69,9 @@ public interface IContainersService extends IService<Containers> {
 	R cleanBoxNo(List<Long> containersList);
 
 	R revoke(List<Long> toLongList);
+
+	/**
+	 * 配箱 - 平均分配件数
+	 */
+	R equalDistribution(Containers containers);
 }

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

@@ -28,7 +28,6 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.billno.entity.BusinessBillNo;
-import org.springblade.los.billno.service.IBillNoCenterService;
 import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.files.entity.FilesCenter;
 import org.springblade.los.business.files.service.IFilesCenterService;
@@ -48,6 +47,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 业务-海运进出口 服务实现类
@@ -71,8 +71,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 	private final IContainersCommodityService containersCommodityService;
 
-	private final IBillNoCenterService billNoCenterService;
-
 	private final IFeeCenterService feeCenterService;
 
 	private final IBusinessBillNoService businessBillNoService;
@@ -124,133 +122,111 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			bills.setUpdateTime(new Date());
 			bills.setUpdateUserName(AuthUtil.getUserName());
 		}
-		this.saveOrUpdate(bills);
-		if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
-			for (FeeCenter item : bills.getFeeCenterListC()) {
-				item.setSrcId(bills.getSrcId());
-				item.setSrcCnName(bills.getSrcCnName());
-				item.setSrcEnName(bills.getSrcEnName());
-				item.setBillCorpId(bills.getCorpId());
-				item.setBillCorpCnName(bills.getCorpCnName());
-				item.setBillCorpEnName(bills.getCorpEnName());
-				item.setLineId(bills.getLineId());
-				item.setLineCnName(bills.getLineCnName());
-				item.setLineEnName(bills.getLineEnName());
-				item.setVesselId(bills.getVesselId());
-				item.setVesselCnName(bills.getVesselCnName());
-				item.setVesselEnName(bills.getVesselEnName());
-				item.setVoyageNo(bills.getVoyageNo());
-				item.setMblno(bills.getMblno());
-				item.setHblno(bills.getHblno());
-				item.setEtd(bills.getEtd());
-				item.setEta(bills.getEta());
-				item.setPolId(bills.getPolId());
-				item.setPolCode(bills.getPolCode());
-				item.setPolCnName(bills.getPolCnName());
-				item.setPolEnName(bills.getPolEnName());
-				item.setPodId(bills.getPodId());
-				item.setPodCode(bills.getPodCode());
-				item.setPodCnName(bills.getPodCnName());
-				item.setPodEnName(bills.getPodEnName());
-				if (item.getId() == null) {
-					item.setPid(bills.getId());
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDept(deptId);
-						item.setBranchId(deptId);
-						item.setCreateDeptName(deptName);
-					}
-				} else {
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateUserName(AuthUtil.getUserName());
-				}
-			}
-			feeCenterService.saveOrUpdateBatch(bills.getFeeCenterListC());
-		}
-		/*//预配箱型箱量
+
+		/**-------------箱型箱量计算---------*/
+		Integer GP20 = 0;
+		Integer GP40 = 0;
+		Integer HC40 = 0;
+		Integer GP45 = 0;
+		Integer GP48 = 0;
+		String boxTypeSum = "";
 		if (ObjectUtils.isNotNull(bills.getPreContainersList())) {
 			for (PreContainers item : bills.getPreContainersList()) {
-				if (item.getId() == null) {
-					item.setPid(bills.getId());
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDept(deptId);
-						item.setBranchId(deptId);
-						item.setCreateDeptName(deptName);
-					}
-				} else {
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateUserName(AuthUtil.getUserName());
+				if ("20GP".equals(item.getCntrTypeCode())) {
+					GP20 += item.getQuantity();
+				} else if ("40GP".equals(item.getCntrTypeCode())) {
+					GP40 += item.getQuantity();
+				} else if ("40HC".equals(item.getCntrTypeCode())) {
+					HC40 += item.getQuantity();
+				} else if ("45GP".equals(item.getCntrTypeCode())) {
+					GP45 += item.getQuantity();
+				} else if ("48GP".equals(item.getCntrTypeCode())) {
+					GP48 += item.getQuantity();
 				}
 			}
-			preContainersService.saveOrUpdateBatch(bills.getPreContainersList());
+			if (GP20 > 0) {
+				boxTypeSum = "20GP * " + boxTypeSum + ",";
+			} else if (GP40 > 0) {
+				boxTypeSum = "40GP * " + boxTypeSum + ",";
+			} else if (HC40 > 0) {
+				boxTypeSum = "40HC * " + boxTypeSum + ",";
+			} else if (GP45 > 0) {
+				boxTypeSum = "45GP * " + boxTypeSum + ",";
+			} else if (GP48 > 0) {
+				boxTypeSum = "48GP * " + boxTypeSum + ",";
+			}
+			if (boxTypeSum.length() > 0) {
+				boxTypeSum = boxTypeSum.substring(0, boxTypeSum.length() - 1);
+				bills.setQuantityCntrDescr(boxTypeSum);
+			}
 		}
-		//财务核算要素
-		if (ObjectUtils.isNotNull(bills.getContainersList())) {
-			for (Containers item : bills.getContainersList()) {
-				if (item.getId() == null) {
-					item.setPid(bills.getId());
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDept(deptId);
-						item.setBranchId(deptId);
-						item.setCreateDeptName(deptName);
-					}
-				} else {
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateUserName(AuthUtil.getUserName());
+		bills.setQuantityV20(GP20);
+		bills.setQuantityV40(GP40);
+		bills.setQuantityV40hc(HC40);
+		bills.setQuantityV45(GP45);
+		bills.setQuantityV48(GP48);
+		/**-------------箱型箱量计算---------*/
+
+		/**-------------费用计算---------*/
+		BigDecimal amountDr = new BigDecimal("0.00");
+		BigDecimal amountCr = new BigDecimal("0.00");
+		BigDecimal amountProfit = new BigDecimal("0.00");
+		BigDecimal amountDrUsd = new BigDecimal("0.00");
+		BigDecimal amountCrUsd = new BigDecimal("0.00");
+		BigDecimal amountProfitUsd = new BigDecimal("0.00");
+		BigDecimal amountDrLoc = new BigDecimal("0.00");
+		BigDecimal amountCrLoc = new BigDecimal("0.00");
+		BigDecimal amountProfitLoc = new BigDecimal("0.00");
+		if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
+			for (FeeCenter item : bills.getFeeCenterListC()) {
+				if ("USD".equals(item.getCurCode())) {
+					amountCrUsd = amountDrUsd.add(item.getAmount());
+				} else if ("CNY".equals(item.getCurCode())) {
+					amountCr = amountDrUsd.add(item.getAmount());
 				}
 			}
-			containersService.saveOrUpdateBatch(bills.getContainersList());
-			for (Containers item : bills.getContainersList()) {
-				if (ObjectUtils.isNotNull(item.getContainersBillsList())) {
-					for (ContainersBills itemBills : item.getContainersBillsList()) {
-						if (itemBills.getId() == null) {
-							itemBills.setPpId(bills.getId());
-							itemBills.setPid(item.getId());
-							itemBills.setCreateTime(new Date());
-							itemBills.setCreateUser(AuthUtil.getUserId());
-							itemBills.setCreateUserName(AuthUtil.getUserName());
-							if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-								itemBills.setCreateDept(deptId);
-								itemBills.setBranchId(deptId);
-								itemBills.setCreateDeptName(deptName);
-							}
-						} else {
-							itemBills.setUpdateUser(AuthUtil.getUserId());
-							itemBills.setUpdateUserName(AuthUtil.getUserName());
-						}
-					}
-					containersBillsService.saveOrUpdateBatch(item.getContainersBillsList());
+		}
+		if (ObjectUtils.isNotNull(bills.getFeeCenterListD())) {
+			for (FeeCenter item : bills.getFeeCenterListD()) {
+				if ("USD".equals(item.getCurCode())) {
+					amountDrUsd = amountDrUsd.add(item.getAmount());
+				} else if ("CNY".equals(item.getCurCode())) {
+					amountDrUsd = amountDrUsd.add(item.getAmount());
 				}
 			}
 		}
-		//文件
-		if (ObjectUtils.isNotNull(bills.getFilesList())) {
-			for (FilesCenter item : bills.getFilesList()) {
-				if (item.getId() == null) {
-					item.setPid(bills.getId());
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDept(deptId);
-						item.setBranchId(deptId);
-						item.setCreateDeptName(deptName);
-					}
-				} else {
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateUserName(AuthUtil.getUserName());
-				}
+
+		//主单应加上分单费用
+		if ("MM".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
+			List<Bills> details = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.eq(Bills::getMasterId, bills.getId()));
+			if (details.size() > 0) {
+				amountDr = amountDr.add(details.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCr = amountCr.add(details.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrUsd = amountDrUsd.add(details.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrUsd = amountCrUsd.add(details.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrLoc = amountDrLoc.add(details.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrLoc = amountCrLoc.add(details.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
-			filesCenterService.saveOrUpdateBatch(bills.getFilesList());
-		}*/
+		}
+		//利润 = 收 - 付
+		amountProfit = amountDr.subtract(amountCr);
+		amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+		amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+
+		bills.setAmountDr(amountDr);
+		bills.setAmountCr(amountCr);
+		bills.setAmountProfit(amountProfit);
+		bills.setAmountDrUsd(amountDrUsd);
+		bills.setAmountCrUsd(amountCrUsd);
+		bills.setAmountProfitUsd(amountProfitUsd);
+		bills.setAmountDrLoc(amountDrLoc);
+		bills.setAmountCrLoc(amountCrLoc);
+		bills.setAmountProfitLoc(amountProfitLoc);
+		/**-------------费用计算---------*/
+		this.saveOrUpdate(bills);
 		return R.data(bills);
 	}
 
@@ -305,7 +281,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getBillType, detail.getBillType())
 			.eq(FeeCenter::getPid, detail.getId())
-			.eq(FeeCenter::getSrcId, detail.getId())
 			.eq(FeeCenter::getDc, "C")
 			.eq(FeeCenter::getBillNo, detail.getBillNo())
 		));
@@ -314,7 +289,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getBillType, detail.getBillType())
 			.eq(FeeCenter::getPid, detail.getId())
-			.eq(FeeCenter::getSrcId, detail.getId())
 			.eq(FeeCenter::getDc, "D")
 			.eq(FeeCenter::getBillNo, detail.getBillNo())
 		));

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersBillsServiceImpl.java

@@ -39,8 +39,8 @@ public class ContainersBillsServiceImpl extends ServiceImpl<ContainersBillsMappe
 	}
 
 	@Override
-	public void removeByPid(Long pid) {
-		baseMapper.removeByPid(pid);
+	public void removeByPid(Long pid,String type) {
+		baseMapper.removeByPid(pid,type);
 	}
 
 }

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

@@ -24,6 +24,8 @@ 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.business.sea.dto.WaitingBox;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.Containers;
 import org.springblade.los.business.sea.entity.ContainersBills;
@@ -39,8 +41,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -126,8 +132,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				if (item.getId() == null) {
 					Bills bills = billsMapper.selectById(item.getPpId());
 					bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getCfsQuantity() : new BigDecimal("0.00")).add(item.getQuantity()));
-					bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).add(item.getMeasurement()));
-					bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).add(item.getGrossWeight()));
+					bills.setCfsMeasurement((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).add(item.getMeasurement()));
+					bills.setCfsGrossWeight((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).add(item.getGrossWeight()));
 					bills.setUpdateUserName(AuthUtil.getUserName());
 					bills.setUpdateUser(AuthUtil.getUserId());
 					bills.setUpdateTime(new Date());
@@ -155,8 +161,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			for (ContainersBills item : containers.getSubtractContainersBillsList()) {
 				Bills bills = billsMapper.selectById(item.getPpId());
 				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getCfsQuantity() : new BigDecimal("0.00")).subtract(item.getQuantity()));
-				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).subtract(item.getMeasurement()));
-				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).subtract(item.getGrossWeight()));
+				bills.setCfsMeasurement((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).subtract(item.getMeasurement()));
+				bills.setCfsGrossWeight((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).subtract(item.getGrossWeight()));
 				bills.setUpdateUserName(AuthUtil.getUserName());
 				bills.setUpdateUser(AuthUtil.getUserId());
 				bills.setUpdateTime(new Date());
@@ -181,8 +187,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 	}
 
 	@Override
-	public void removeByPid(Long pid) {
-		baseMapper.removeByPid(pid);
+	public void removeByPid(Long pid, String type) {
+		baseMapper.removeByPid(pid, type);
 	}
 
 	@Override
@@ -219,8 +225,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			for (ContainersBills item : containersBillsList) {
 				Bills bills = billsMapper.selectById(item.getPpId());
 				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getCfsQuantity() : new BigDecimal("0.00")).subtract(item.getQuantity()));
-				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).subtract(item.getMeasurement()));
-				bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).subtract(item.getGrossWeight()));
+				bills.setCfsMeasurement((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).subtract(item.getMeasurement()));
+				bills.setCfsGrossWeight((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).subtract(item.getGrossWeight()));
 				bills.setUpdateUserName(AuthUtil.getUserName());
 				bills.setUpdateUser(AuthUtil.getUserId());
 				bills.setUpdateTime(new Date());
@@ -232,4 +238,90 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		return R.data("操作成功");
 	}
 
+	@Override
+	public R equalDistribution(Containers containers) {
+		List<Containers> containersList = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getPid, containers.getPid()));
+		if (ObjectUtils.isNull(containers.getWaitingBox())
+			|| ObjectUtils.isNull(containers.getWaitingBox().getQuantity())
+			|| new BigDecimal("0").compareTo(containers.getWaitingBox().getQuantity()) == 0) {
+			throw new RuntimeException("待分配件数不能为空或不能为零");
+		}
+		if (containersList.size() == 0) {
+			throw new RuntimeException("待分配箱量为零,操作失败");
+		}
+		BigDecimal teu = containersList.stream().map(Containers::getTeu).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		if (new BigDecimal("0").compareTo(teu) == 0) {
+			throw new RuntimeException("待分配箱teu不能为零");
+		}
+		BigDecimal average = containers.getWaitingBox().getQuantity().divide(teu, MathContext.DECIMAL32).setScale(3, RoundingMode.DOWN);
+		BigDecimal averageGrossWeight = containers.getWaitingBox().getGrossWeight().divide(teu, MathContext.DECIMAL32).setScale(3, RoundingMode.DOWN);
+		BigDecimal averageNetWeight = containers.getWaitingBox().getNetWeight().divide(teu, MathContext.DECIMAL32).setScale(3, RoundingMode.DOWN);
+		BigDecimal averageMeasurement = containers.getWaitingBox().getMeasurement().divide(teu, MathContext.DECIMAL32).setScale(3, RoundingMode.DOWN);
+		List<ContainersBills> containersBillsList = new ArrayList<>();
+		WaitingBox waitingBox = containers.getWaitingBox();
+		ContainersBills containersBills = new ContainersBills();
+		BeanUtil.copyProperties(waitingBox, containersBills);
+		containersBills.setId(null);
+		containersBills.setPpId(waitingBox.getId());
+		containersBills.setCreateTime(new Date());
+		containersBills.setCreateUser(AuthUtil.getUserId());
+		containersBills.setCreateUserName(AuthUtil.getUserName());
+		containersBills.setTenantId(AuthUtil.getTenantId());
+
+		BigDecimal quantitySum = new BigDecimal("0");
+		BigDecimal grossWeightSum = new BigDecimal("0.00");
+		BigDecimal netWeightSum = new BigDecimal("0.00");
+		BigDecimal measurementSum = new BigDecimal("0.00");
+		for (int i = 0; i < containersList.size(); i++) {
+			containersBills.setPid(containersList.get(i).getId());
+			BigDecimal quantity = new BigDecimal("0");
+			BigDecimal grossWeight = new BigDecimal("0.00");
+			BigDecimal netWeight = new BigDecimal("0.00");
+			BigDecimal measurement = new BigDecimal("0.00");
+			if (i + 1 == containersList.size()) {
+				quantity = waitingBox.getQuantity().subtract(quantitySum);
+				grossWeight = waitingBox.getGrossWeight().subtract(grossWeightSum);
+				netWeight = waitingBox.getNetWeight().subtract(netWeightSum);
+				measurement = waitingBox.getMeasurement().subtract(measurementSum);
+			} else {
+				quantity = containersList.get(i).getTeu().multiply(average).setScale(0, RoundingMode.DOWN);
+				grossWeight = containersList.get(i).getTeu().multiply(averageGrossWeight).setScale(3, RoundingMode.DOWN);
+				netWeight = containersList.get(i).getTeu().multiply(averageNetWeight).setScale(3, RoundingMode.DOWN);
+				measurement = containersList.get(i).getTeu().multiply(averageMeasurement).setScale(3, RoundingMode.DOWN);
+
+			}
+			quantitySum = quantitySum.add(quantity);
+			grossWeightSum = grossWeightSum.add(grossWeight);
+			netWeightSum = netWeightSum.add(netWeight);
+			measurementSum = measurementSum.add(measurement);
+
+			containersList.get(i).setQuantity(quantity);
+			containersList.get(i).setGrossWeight(grossWeight);
+			containersList.get(i).setNetWeight(netWeight);
+			containersList.get(i).setMeasurement(measurement);
+			containersBills.setQuantity(quantity);
+			containersBills.setGrossWeight(grossWeight);
+			containersBills.setNetWeight(netWeight);
+			containersBills.setMeasurement(measurement);
+			containersBillsList.add(containersBills);
+			List<ContainersBills> itemList = new ArrayList<>();
+			itemList.add(containersBills);
+			containersList.get(i).setContainersBillsList(itemList);
+		}
+		Bills bills = billsMapper.selectById(waitingBox.getId());
+		bills.setCfsQuantity(ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getQuantity() : new BigDecimal("0.00"));
+		bills.setCfsMeasurement(ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getMeasurement() : new BigDecimal("0.00"));
+		bills.setCfsGrossWeight(ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getGrossWeight() : new BigDecimal("0.00"));
+		bills.setUpdateUserName(AuthUtil.getUserName());
+		bills.setUpdateUser(AuthUtil.getUserId());
+		bills.setUpdateTime(new Date());
+		billsMapper.updateById(bills);
+		this.updateBatchById(containersList);
+		containersBillsService.saveOrUpdateBatch(containersBillsList);
+		return R.data(containersList);
+	}
+
 }

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

@@ -105,8 +105,8 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			bills.setUpdateUserName(AuthUtil.getUserName());
 			billsMapper.updateById(bills);
 		}
-		containersService.removeByPid(preContainers.getPid());
-		containersBillsService.removeByPid(preContainers.getPid());
+		containersService.removeByPid(preContainers.getPid(),preContainers.getCntrTypeCode());
+//		containersBillsService.removeByPid(preContainers.getPid(),preContainers.getCntrTypeCode());
 		//生成海运进出口配箱-箱号装箱
 		List<Containers> containersList = new ArrayList<>();
 		for (int i = 0; i < preContainers.getQuantity(); i++) {
@@ -136,6 +136,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				containers.setPackingUnit(bills.getPackingUnit());
 			}
 			containers.setPid(preContainers.getPid());
+			containers.setTeu(preContainers.getTeu());
 			containers.setIsSoc(preContainers.getIsSoc());
 			containers.setIsOneway(preContainers.getIsOneway());
 			containers.setCntrTypeCode(preContainers.getCntrTypeCode());

+ 14 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java

@@ -16,11 +16,13 @@
  */
 package org.springblade.los.finance.fee.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.vo.FeeCenterVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
 
 /**
  * 物流-费用中心-所有业务费用集中在该表中 服务类
@@ -41,8 +43,18 @@ public interface IFeeCenterService extends IService<FeeCenter> {
 
 	/**
 	 * 新增或修改 物流-费用中心
+	 *
 	 * @param feeCenter
 	 * @return
 	 */
 	R submit(FeeCenter feeCenter);
+
+	/**
+	 * 获取费用信息list
+	 *
+	 * @param dc  费用类型
+	 * @param ids 主表ids
+	 * @return
+	 */
+	List<FeeCenter> getFeeCenterList(String dc, List<Long> ids);
 }

+ 10 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.finance.fee.service.impl;
 
+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;
@@ -78,4 +79,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		return R.data(feeCenter);
 	}
 
+	@Override
+	public List<FeeCenter> getFeeCenterList(String dc, List<Long> ids) {
+		return baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getDc, dc)
+			.in(FeeCenter::getPid, ids));
+	}
+
 }

+ 49 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java

@@ -54,9 +54,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -516,4 +516,50 @@ public class CorpsDescController extends BladeController {
 		return R.data(listAll);
 	}
 
+	/**
+	 * app客户分析
+	 *
+	 * @return
+	 */
+	@GetMapping("/corpAnalysis")
+	@ApiOperation(value = "app客户分析", notes = "传入参数")
+	public R<Map<String, Object>> corpAnalysis() {
+		Map<String, Object> map = new HashMap<>();
+		//核心客户
+		int coreCorp = 0;
+		//半年内没有销售记录客户
+		int unsales = 0;
+		//流失率
+		BigDecimal lossRate = new BigDecimal("0.00");
+
+		LambdaQueryWrapper<PjCorpsDesc> corpsDescQueryWrapper = new LambdaQueryWrapper<>();
+		corpsDescQueryWrapper.eq(PjCorpsDesc::getIsDeleted, 0).eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId()).eq(PjCorpsDesc::getCorpType, "KH");
+		//客户总数量
+		List<PjCorpsDesc> corpsDescList = corpsDescService.list(corpsDescQueryWrapper);
+		for (PjCorpsDesc corpsDesc : corpsDescList) {
+			PjOrder order = new PjOrder();
+			order.setCustomerId(corpsDesc.getId());
+			order.setBsType("XS");
+			order.setActualPaymentStatus(2);
+			order.setCorpType("1");
+			int count = orderService.corpAnalysis(order);
+			if (count == 0) {
+				unsales++;
+			}
+			order.setCorpType("2");
+			int count1 = orderService.corpAnalysis(order);
+			if (count1 > 0) {
+				coreCorp++;
+			}
+		}
+		if (unsales > 0) {
+			lossRate = lossRate.add(new BigDecimal(unsales).divide(new BigDecimal(corpsDescList.size()), MathContext.DECIMAL32));
+		}
+
+		map.put("sumNumber", corpsDescList.size());
+		map.put("coreCorp", coreCorp);
+		map.put("lossRate", lossRate);
+		return R.data(map);
+	}
+
 }

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsTypeMapper.xml

@@ -111,6 +111,9 @@
             <if test="corpsType.status!=null">
                 and dept.status = #{corpsType.status}
             </if>
+            <if test="corpsType.salesCompanyId!=null">
+                and dept.sales_company_id = #{corpsType.salesCompanyId}
+            </if>
             order by dept.sort
         </where>
     </select>

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

@@ -83,7 +83,9 @@ public class GoodsTypeController extends BladeController {
 	public R<IPage<PjGoodsType>> list(PjGoodsType goodsType, Query query) {
 		goodsType.setTenantId(AuthUtil.getTenantId());
 		goodsType.setType(GoodsTypeEnum.GOODS.getType());
-		goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		}
 		IPage<PjGoodsType> pages = goodsTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(goodsType));
 		return R.data(pages);
 	}
@@ -97,7 +99,9 @@ public class GoodsTypeController extends BladeController {
 	public R<IPage<GoodsTypeVO>> page(GoodsTypeVO goodsType, Query query) {
 		goodsType.setTenantId(AuthUtil.getTenantId());
 		goodsType.setType(GoodsTypeEnum.GOODS.getType());
-		goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		}
 		IPage<GoodsTypeVO> pages = goodsTypeService.selectGoodsTypePage(Condition.getPage(query), goodsType);
 		return R.data(pages);
 	}
@@ -112,6 +116,9 @@ public class GoodsTypeController extends BladeController {
 		goodsType.setTenantId(AuthUtil.getTenantId());
 		goodsType.setType(GoodsTypeEnum.GOODS.getType());
 		goodsType.setIsDeleted(0);
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		}
 		List<PjGoodsType> list = goodsTypeService.list(Condition.getQueryWrapper(goodsType));
 		return R.data(list);
 	}
@@ -221,6 +228,9 @@ public class GoodsTypeController extends BladeController {
 		goodsType.setParentId(0l);
 		goodsType.setIsDeleted(0);
 		goodsType.setStatus(0);
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			goodsType.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		}
 		List<PjGoodsType> list = goodsTypeService.list(Condition.getQueryWrapper(goodsType));
 		return R.data(list);
 	}
@@ -242,6 +252,9 @@ public class GoodsTypeController extends BladeController {
 		}else{
 			goodsTypeLambdaQueryWrapper.gt(PjGoodsType::getParentId,0);
 		}
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			goodsTypeLambdaQueryWrapper.eq(PjGoodsType::getSalesCompanyId,Long.parseLong(AuthUtil.getDeptId()));
+		}
 		List<PjGoodsType> list = goodsTypeService.list(goodsTypeLambdaQueryWrapper);
 		return R.data(list);
 	}

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

@@ -65,4 +65,6 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
     List<PjOrderStatisticsWeb> statisticsPage(IPage<PjOrderStatisticsWeb> page,@Param("order") PjOrderStatisticsWeb order);
 
 	List<PjOrderStatisticsExcel> statisticsExport(@Param("order") PjOrderStatisticsWeb order);
+
+    int corpAnalysis(@Param("order") PjOrder order);
 }

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

@@ -336,5 +336,27 @@
         o.busines_date,
         '%Y-%m')
     </select>
+    <select id="corpAnalysis" resultType="java.lang.Integer">
+        select count(id)
+        from
+        pjpf_order
+        where
+        is_deleted = 0
+        <if test="order.bsType != null and order.bsType != ''">
+            AND bs_type = #{order.bsType}
+        </if>
+        <if test="order.customerId != null">
+            AND customer_id = #{order.customerId}
+        </if>
+        <if test="order.actualPaymentStatus != null">
+            AND actual_payment_status = #{order.actualPaymentStatus}
+        </if>
+        <if test="order.corpType != null and order.corpType != '' and order.corpType == 1">
+            and busines_date between date_sub(now(),interval 6 month) and now();
+        </if>
+        <if test="order.corpType != null and order.corpType != '' and order.corpType == 2">
+            AND busines_date between date_sub(now(),interval 6 month) and now();
+        </if>
+    </select>
 
 </mapper>

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java

@@ -154,4 +154,6 @@ public interface IOrderService extends IService<PjOrder> {
 	List<PjOrderStatisticsExcel> statisticsExport(PjOrderStatisticsWeb order);
 
 	R todayIncome(PjOrder order);
+
+    int corpAnalysis(PjOrder order);
 }

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

@@ -342,6 +342,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}
 	}
 
+	@Override
+	public int corpAnalysis(PjOrder order) {
+		return baseMapper.corpAnalysis(order);
+	}
+
 	/**
 	 * 保存订单信息
 	 *
@@ -738,7 +743,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							order.setSalerName(order.getSalerName().substring(0, 3));
 						}
 						if (ObjectUtils.isNotNull(order.getGoodsNameJoin()) && order.getGoodsNameJoin().length() > 8) {
-							order.setGoodsNameJoin(order.getSalerName().substring(0, 8));
+							order.setGoodsNameJoin(order.getGoodsNameJoin().substring(0, 8));
 						}
 						for (WechatMessageConfigurationItem item : resItem.getData()) {
 							try {

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

@@ -216,12 +216,28 @@ public class StockDescController extends BladeController {
 			.eq(PjStockDesc::getIsDeleted, 0)
 			.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.like(ObjectUtil.isNotEmpty(stockDesc.getCode()), PjStockDesc::getCode, stockDesc.getCode())
-			.like(ObjectUtil.isNotEmpty(stockDesc.getCname()), PjStockDesc::getCname, stockDesc.getCname())
 			.like(ObjectUtil.isNotEmpty(stockDesc.getTypeno()), PjStockDesc::getTypeno, stockDesc.getTypeno())
 			.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageId()), PjStockDesc::getStorageId, stockDesc.getStorageId())
 			.eq(ObjectUtil.isNotEmpty(stockDesc.getBrandId()), PjStockDesc::getBrandId, stockDesc.getBrandId())
+			.eq(ObjectUtil.isNotEmpty(stockDesc.getGoodsTypeId()), PjStockDesc::getGoodsTypeId, stockDesc.getGoodsTypeId())
+			.like(ObjectUtil.isNotEmpty(stockDesc.getDot()), PjStockDesc::getDot, stockDesc.getDot())
 			.orderByAsc(PjStockDesc::getCreateTime);
-
+		if ("0".equals(stockDesc.getWhether())) {
+			lambdaQueryWrapper.ne(PjStockDesc::getStoreInventory, 0);
+		}
+		if (ObjectUtil.isNotEmpty(stockDesc.getCname())) {
+			List<PjGoodsDesc> pjGoodsDescs = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
+				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjGoodsDesc::getIsDeleted, 0)
+				.like(PjGoodsDesc::getCnameInt, stockDesc.getCname()));
+			if (pjGoodsDescs.size() > 0) {
+				List<Long> ids = pjGoodsDescs.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
+				lambdaQueryWrapper.and(i -> i.like(PjStockDesc::getCname, stockDesc.getCname())
+					.or().in(PjStockDesc::getGoodsId, ids));
+			} else {
+				lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
+			}
+		}
 		List<PjStockDesc> list = stockDescService.list(lambdaQueryWrapper);
 
 		ExcelUtil.export(response, "库存信息", "库存信息", BeanUtil.copy(list, StockExportExcel.class), StockExportExcel.class);