纪新园 1 год назад
Родитель
Сommit
13939afd09
34 измененных файлов с 1120 добавлено и 64 удалено
  1. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailDto.java
  2. 3 3
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  3. 34 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/dto/ShareSalesItemsDTO.java
  4. 146 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/entity/ShareSalesItems.java
  5. 36 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/vo/ShareSalesItemsVO.java
  6. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  7. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  8. 25 7
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  9. 15 10
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java
  10. 20 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml
  11. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  12. 96 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/ShareSalesController.java
  13. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  14. 6 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  15. 280 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  16. 17 13
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/mapper/PjpfSerialMapper.java
  17. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/service/IPjpfSerialService.java
  18. 44 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/service/impl/PjpfSerialServiceImpl.java
  19. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java
  20. 3 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/controller/SharePutOnShelvesController.java
  21. 126 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/controller/ShareSalesItemsController.java
  22. 3 5
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/SharePutOnShelvesMapper.xml
  23. 42 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/ShareSalesItemsMapper.java
  24. 34 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/ShareSalesItemsMapper.xml
  25. 41 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/service/IShareSalesItemsService.java
  26. 41 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/service/impl/ShareSalesItemsServiceImpl.java
  27. 4 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java
  28. 17 8
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java
  29. 10 0
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
  30. 5 0
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  31. 6 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java
  32. 22 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml
  33. 4 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
  34. 19 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

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

@@ -232,5 +232,11 @@ public class SaleDetailDto {
 	@ExcelIgnore
 	private BigDecimal surplusAmount;
 
+	/**
+	 * 成本单价
+	 */
+	@ExcelIgnore
+	private BigDecimal costpriePrice;
+
 
 }

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

@@ -267,7 +267,7 @@ public class PjOrder implements Serializable {
 	 * 共享公司id
 	 */
 	@ApiModelProperty(value = "共享公司id")
-	private Long sharedCompanyId;
+	private String sharedCompanyId;
 	/**
 	 * 共享公司名称
 	 */
@@ -289,9 +289,9 @@ public class PjOrder implements Serializable {
 	@ApiModelProperty(value = "是否已生成任务")
 	private String generateTask;
 	/**
-	 * 是否异地
+	 * 是否共享
 	 */
-	@ApiModelProperty(value = "是否异地")
+	@ApiModelProperty(value = "是否共享")
 	private Integer billType;
 	/**
 	 * 交易类型

+ 34 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/dto/ShareSalesItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.dto;
+
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 共享销售单-共享明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ShareSalesItemsDTO extends ShareSalesItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 146 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/entity/ShareSalesItems.java

@@ -0,0 +1,146 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.secure.utils.AuthUtil;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 共享销售单-共享明细实体类
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+@Data
+@TableName("pjpf_share_sales_items")
+@ApiModel(value = "ShareSalesItems对象", description = "共享销售单-共享明细")
+public class ShareSalesItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 主表id
+	 */
+	@ApiModelProperty(value = "主表id")
+	private Long pid;
+	/**
+	 * 来源明细id
+	 */
+	@ApiModelProperty(value = "来源明细id")
+	private Long srcPid;
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+	/**
+	 * 商品id
+	 */
+	@ApiModelProperty(value = "商品id")
+	private Long goodsId;
+	/**
+	 * 名称
+	 */
+	@ApiModelProperty(value = "名称")
+	private String goodsName;
+	/**
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal goodsNum;
+	/**
+	 * 价格
+	 */
+	@ApiModelProperty(value = "价格")
+	private BigDecimal price;
+	/**
+	 * 小计
+	 */
+	@ApiModelProperty(value = "小计")
+	private BigDecimal subTotalMoney;
+	/**
+	 * 成本单价
+	 */
+	@ApiModelProperty(value = "成本单价")
+	private BigDecimal costpriePrice;
+	/**
+	 * 成本
+	 */
+	@ApiModelProperty(value = "成本")
+	private BigDecimal costprie;
+	/**
+	 * 毛利
+	 */
+	@ApiModelProperty(value = "毛利")
+	private BigDecimal grossProfit;
+	/**
+	 * 共享公司id
+	 */
+	@ApiModelProperty(value = "共享公司id")
+	private Long sharedCompanyId;
+	/**
+	 * 共享公司名称
+	 */
+	@ApiModelProperty(value = "共享公司名称")
+	private String sharedCompanyName;
+	/**
+	 * 派发状态  暂存 已派发
+	 */
+	@ApiModelProperty(value = "派发状态  暂存 已派发 ")
+	private String sharedStatus;
+
+
+}

+ 36 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/share/vo/ShareSalesItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.vo;
+
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 共享销售单-共享明细视图实体类
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ShareSalesItemsVO对象", description = "共享销售单-共享明细")
+public class ShareSalesItemsVO extends ShareSalesItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 5 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -82,6 +82,8 @@ public interface ISysClient {
 
 	String GET_DEPT_LIST_BY_NAMES = API_PREFIX + "/getDeptListByNames";
 
+	String GET_DEPT_BY_ID = API_PREFIX + "/getDeptById";
+
 
 	/**
 	 * 通过租户id获取全部租户别名
@@ -400,4 +402,7 @@ public interface ISysClient {
 
 	@GetMapping(GET_DEPT_LIST_BY_NAMES)
 	List<Dept> getDeptListByNames(@RequestParam(value = "sharedCompany", required = false) String sharedCompany);
+
+	@GetMapping(GET_DEPT_BY_ID)
+	Dept getDeptById(@RequestParam(value = "sharedCompanyId", required = false) String sharedCompanyId);
 }

+ 5 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -225,4 +225,9 @@ public class ISysClientFallback implements ISysClient {
 		return null;
 	}
 
+	@Override
+	public Dept getDeptById(String sharedCompanyId) {
+		return null;
+	}
+
 }

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

@@ -413,13 +413,31 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	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> sealNo = new ArrayList<>();
+		List<String> cntrNo = new ArrayList<>();
+		for (BoxAndLeadSealNoExcel item : excelList) {
+			if (ObjectUtils.isNotNull(item.getSealNo())) {
+				if (sealNo.isEmpty()) {
+					sealNo.add(item.getSealNo());
+				} else {
+					if (sealNo.contains(item.getSealNo())) {
+						throw new RuntimeException("铅封号:" + item.getSealNo() + " 不允许重复");
+					} else {
+						sealNo.add(item.getSealNo());
+					}
+				}
+			}
+			if (ObjectUtils.isNotNull(item.getSealNo())) {
+				if (cntrNo.isEmpty()) {
+					cntrNo.add(item.getCntrNo());
+				} else {
+					if (cntrNo.contains(item.getCntrNo())) {
+						throw new RuntimeException("箱号:" + item.getCntrNo() + " 不允许重复");
+					} else {
+						cntrNo.add(item.getCntrNo());
+					}
+				}
+			}
 		}
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())

+ 15 - 10
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java

@@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
-import org.springblade.client.entity.CorpsDesc;
 import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springblade.salesPart.vo.CorpsDescVO;
@@ -28,7 +27,7 @@ import org.springblade.salesPart.vo.CorpsDescVO;
 import java.util.List;
 
 /**
- *  配件批发客户Mapper 接口
+ * 配件批发客户Mapper 接口
  *
  * @author BladeX
  * @since 2023-04-21
@@ -50,8 +49,8 @@ public interface CorpsDescMapper extends BaseMapper<PjCorpsDesc> {
 	 * @return
 	 */
 	PjCorpsDesc selectCorpsDescCname(@Param("cname") String cname,
-								   @Param("salesCompanyId") String salesCompanyId,
-								   @Param("tenantId") String tenantId
+									 @Param("salesCompanyId") String salesCompanyId,
+									 @Param("tenantId") String tenantId
 	);
 
 
@@ -60,21 +59,27 @@ public interface CorpsDescMapper extends BaseMapper<PjCorpsDesc> {
 	 *
 	 * @return
 	 */
-	@SqlParser(filter=true)
+	@SqlParser(filter = true)
 	PjCorpsDesc getCorpId(@Param("id") Long id);
 
-	List<PjCorpsDesc> selectPartsCorpsDescPage(IPage<PjCorpsDesc> page, @Param("CorpsDesc")PjCorpsDesc corpsDescDto);
+	List<PjCorpsDesc> selectPartsCorpsDescPage(IPage<PjCorpsDesc> page, @Param("CorpsDesc") PjCorpsDesc corpsDescDto);
 
-	List<PjCorpsDesc> selectPartsCorpsStatistics(@Param("CorpsDesc")PjCorpsDesc corpsDescDto);
+	List<PjCorpsDesc> selectPartsCorpsStatistics(@Param("CorpsDesc") PjCorpsDesc corpsDescDto);
 
 	List<PjCorpsDesc> selectPartsCorpsDesc(@Param("CorpsDesc") PjCorpsDesc corpsDescDto);
 
 	@TenantIgnore
-    List<PjCorpsDesc> selectListNotTenantId(@Param("tenantId")String tenantId, @Param("ids")String ids);
+	List<PjCorpsDesc> selectListNotTenantId(@Param("tenantId") String tenantId, @Param("ids") String ids);
 
 	@TenantIgnore
-	int updateByIdPointsBalance(@Param("corpsDesc")PjCorpsDesc corpsDesc);
+	int updateByIdPointsBalance(@Param("corpsDesc") PjCorpsDesc corpsDesc);
 
 	@TenantIgnore
-    List<PjCorpsDesc> selectCorpList(@Param("tenantId")String tenantId);
+	List<PjCorpsDesc> selectCorpList(@Param("tenantId") String tenantId);
+
+	@TenantIgnore
+	PjCorpsDesc selectByName(@Param("deptName") String deptName, @Param("tenantId") String tenantId);
+
+	@TenantIgnore
+	int insertCorps(PjCorpsDesc corpsDesc);
 }

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

@@ -34,6 +34,19 @@
         <result column="longitude" property="longitude"/>
         <result column="dimension" property="dimension"/>
     </resultMap>
+    <insert id="insertCorps" parameterType="org.springblade.salesPart.entity.PjCorpsDesc" useGeneratedKeys="true">
+        insert into pjpf_corps_desc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="cname != null">cname,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="remarks != null">remarks,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="cname != null">#{cname},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="remarks != null">#{remarks},</if>
+        </trim>
+    </insert>
     <update id="updateByIdPointsBalance" parameterType="org.springblade.salesPart.entity.PjCorpsDesc">
         update pjpf_corps_desc
         set id = #{corpsDesc.id},
@@ -315,4 +328,11 @@
           and enable_or_not = '1'
           and tenant_id = #{tenantId}
     </select>
+    <select id="selectByName" resultType="org.springblade.salesPart.entity.PjCorpsDesc">
+        select *
+        from pjpf_corps_desc
+        where is_deleted = '0'
+          and cname = #{deptName}
+          and tenant_id = #{tenantId}
+    </select>
 </mapper>

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

@@ -218,6 +218,7 @@ public class GoodsDescController extends BladeController {
 			return R.fail(500, "商品名称不能为空");
 		}
 		goodsDesc.setCname(goodsDesc.getCname().trim());
+		goodsDesc.setCname(goodsDesc.getCname().replaceAll("  "," "));
 		if (ObjectUtils.isNotNull(goodsDesc.getSpecificationAndModel())){
 			goodsDesc.setSpecificationAndModel(goodsDesc.getSpecificationAndModel().trim());
 		}

+ 96 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/ShareSalesController.java

@@ -0,0 +1,96 @@
+package org.springblade.salesPart.order.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.salesPart.entity.PjOrder;
+import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.excel.PjOrderExportExcelReturnsCG;
+import org.springblade.salesPart.excel.PjOrderExportExcelReturnsXS;
+import org.springblade.salesPart.order.service.IOrderItemsService;
+import org.springblade.salesPart.order.service.IOrderService;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024年5月6日09:11:09
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/shareSales")
+public class ShareSalesController {
+
+	private final IOrderService orderService;
+
+
+	/**
+	 * 共享销售单新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	@RepeatSubmit
+	public R submit(@Valid @RequestBody PjOrder order) {
+		if (StringUtils.isBlank(order.getBsType())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		return orderService.submitShareSales(order);
+	}
+
+
+	/**
+	 * 删除 共享销售单
+	 */
+	@PostMapping("/remove")
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(orderService.removeByIds(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 派发共享销售单
+	 */
+	@PostMapping("/distributeShareSales")
+	@RepeatSubmit
+	public R distributeShareSales(@Valid @RequestBody PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("来源信息错误");
+		}
+		return orderService.distributeShareSales(order);
+	}
+
+	/**
+	 * 撤销派发共享销售单
+	 */
+	@PostMapping("/revokeDistributeShareSales")
+	@RepeatSubmit
+	public R revokeDistributeShareSales(@Valid @RequestBody PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("来源信息错误");
+		}
+		return orderService.revokeDistributeShareSales(order);
+	}
+
+}

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

@@ -400,8 +400,8 @@
         `pjpf_order_items` poi
         LEFT JOIN pjpf_goods_desc pgd ON poi.goods_id = pgd.id
         LEFT JOIN pjpf_order po ON poi.pid = po.id
-        LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
         LEFT JOIN blade_user bu ON po.saler_id = bu.id
+        LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
         WHERE
         poi.is_deleted = '0'
         AND po.is_deleted = '0'

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

@@ -264,4 +264,10 @@ public interface IOrderService extends IService<PjOrder> {
 	R confirmShipment(PjOrder order);
 
 	R cancelShipment(PjOrder order);
+
+	R submitShareSales(PjOrder order);
+
+	R distributeShareSales(PjOrder order);
+
+	R revokeDistributeShareSales(PjOrder order);
 }

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

@@ -83,6 +83,8 @@ import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
 import org.springblade.salesPart.serial.service.IPjpfSerialService;
 import org.springblade.salesPart.settlement.mapper.SettlementMapper;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.service.IShareSalesItemsService;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
 import org.springblade.salesPart.ship.service.IShipItemsRecordService;
 import org.springblade.salesPart.ship.service.IShipItemsService;
@@ -186,6 +188,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 	private final IAdvanceChargeItemService advanceChargeItemService;
 
+	private final IShareSalesItemsService shareSalesItemsService;
+
 	/**
 	 * 获取销售订单详情
 	 *
@@ -1397,7 +1401,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					order.setSalesCompanyId(dept.getData().getId());
 					order.setSalesCompanyName(dept.getData().getFullName());
 					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
-						order.setSharedCompanyId(dept.getData().getId());
+						order.setSharedCompanyId(dept.getData().getId() + "");
 						order.setSharedCompanyName(dept.getData().getFullName());
 					} else {
 						order.setSharedCompanyId(order.getSharedCompanyId());
@@ -3473,7 +3477,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 		pjShip.setCreateUser(AuthUtil.getUserId());
 		pjShip.setCreateTime(new Date());
-		pjShip.setSalesCompanyId(pjOrder.getSharedCompanyId());
+		pjShip.setSalesCompanyId(Long.parseLong(pjOrder.getSharedCompanyId()));
 		pjShip.setSalesCompanyName(pjOrder.getSharedCompanyName());
 		pjShip.setSourceCompanyId(pjOrder.getSalesCompanyId());
 		pjShip.setSourceCompanyName(pjOrder.getSalesCompanyName());
@@ -3853,6 +3857,276 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return R.data(order);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submitShareSales(PjOrder order) {
+		//客户名称
+		PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
+		order.setCustomerName(corpsDesc.getCname());
+		// 获取系统编号
+		String billNo = serialService.getBillNo(order.getBsType(), order.getBsType(), order.getBsType());
+		if (ObjectUtils.isNull(billNo)) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return R.fail(500, "生成系统编号失败");
+		}
+		order.setBillType(1);
+		if (order.getId() == null) {
+			if (ObjectUtils.isNull(order.getBillType())) {
+				if (ObjectUtils.isNotNull(order.getStorageId())) {
+					order.setBillType(0);
+					//仓库名称
+					order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
+				} else {
+					order.setBillType(1);
+				}
+			}
+			order.setOrdNo(billNo);
+			order.setSrcOrdNo(billNo);
+			order.setCreateTime(new Date());
+			order.setCreateUser(AuthUtil.getUserId());
+			order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			order.setTenantId(AuthUtil.getTenantId());
+			order.setStatus(OrderTypeEnum.XSLR.getType());
+			order.setBusinessSource(OrderTypeEnum.WEB.getType());
+			order.setActualPaymentStatus(1);
+			//根据客户账期计算应结日期
+			if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod()) && ObjectUtils.isNotNull(order.getBusinesDate())) {
+				Date now = order.getBusinesDate();
+				long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
+				Date afterSevenDays = new Date(now.getTime() + sevenDays);
+				order.setDueDate(afterSevenDays);
+			} else {
+				order.setDueDate(new Date());
+			}
+			baseMapper.insert(order);
+		} else {
+			PjOrder orderVersion = baseMapper.selectById(order.getId());
+			if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+				throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+			}
+			order.setVersion(order.getVersion() + 1);
+			order.setUpdateUser(AuthUtil.getUserId());
+			order.setUpdateTime(new Date());
+			baseMapper.updateById(order);
+		}
+		// 保存订单明细
+		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+			//所属公司
+			R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+			if (ObjectUtil.isNotEmpty(dept)) {
+				order.setSalesCompanyId(dept.getData().getId());
+				order.setSalesCompanyName(dept.getData().getFullName());
+				if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
+					order.setSharedCompanyId(dept.getData().getId() + "");
+					order.setSharedCompanyName(dept.getData().getFullName());
+				} else {
+					order.setSharedCompanyId(order.getSharedCompanyId());
+					order.setSharedCompanyName(order.getSharedCompanyName());
+				}
+			} else {
+				throw new SecurityException("未维护所属公司");
+			}
+			StringBuilder goodsName = new StringBuilder();
+			StringBuilder retrieval = new StringBuilder();
+			List<Long> goodsId = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			List<String> goodsNames = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsName).distinct().collect(Collectors.toList());
+			for (PjOrderItems item : order.getOrderItemsList()) {
+				item.setBillKey(item.getGoodsId() + item.getDot());
+			}
+			List<PjOrderItems> reducelList = order.getOrderItemsList().stream().filter(distinctByKey(PjOrderItems::getBillKey)).collect(Collectors.toList());
+			if (reducelList.size() != order.getOrderItemsList().size()) {
+				throw new RuntimeException("明细数据存在重复商品,请先处理后再保存");
+			}
+			if (goodsId.size() != goodsNames.size()) {
+				throw new RuntimeException("明细数据存在改名并重名商品,请联系管理员处理");
+			}
+			for (PjOrderItems item : order.getOrderItemsList()) {
+				item.setBizType(order.getBsType());
+				item.setBillNo(order.getOrdNo());
+				if (item.getId() == null) {
+					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setPid(order.getId());
+					item.setTenantId(AuthUtil.getTenantId());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setPid(order.getId());
+				}
+				//计算小计
+				item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
+				if (ObjectUtils.isNull(order.getStatus()) || "录入".equals(order.getStatus())) {
+					item.setPrimaryGoodsTotalNum(item.getGoodsNum());
+				}
+				//获得商品
+				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+				if (ObjectUtil.isEmpty(goodsDesc)) {
+					throw new RuntimeException("商品数据异常");
+				}
+				item.setBrandName(goodsDesc.getBrandName());
+				//计算成本
+				goodsName.append(goodsDesc.getCname()).append(",");
+				retrieval.append(goodsDesc.getCnameInt()).append(",");
+				item.setCostprie(item.getGoodsNum().multiply(item.getCostpriePrice()));
+				item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+				//计算毛利
+				item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
+				item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+				orderItemsService.saveOrUpdate(item);
+			}
+			if (goodsName.length() > 0) {
+				order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
+			}
+			if (retrieval.length() > 0) {
+				order.setShortcutJoin(retrieval.substring(0, retrieval.length() - 1));
+			}
+			BigDecimal totalMoney = BigDecimal.ZERO;
+			order.setNumberRows(order.getOrderItemsList().size());//行数
+			//总数量
+			order.setGoodsTotalNum(order.getOrderItemsList().stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			if (ObjectUtils.isNull(order.getStatus()) || "录入".equals(order.getStatus())) {
+				order.setPrimaryGoodsTotalNum(order.getGoodsTotalNum());
+			}
+			//总已发数量
+			order.setGoodsTotalShipNum(order.getOrderItemsList().stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//实际金额
+			order.setGoodsTotalShipAmount(order.getOrderItemsList().stream().map(PjOrderItems::getGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//总金额
+			totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
+				return x.add(y.getGoodsNum().multiply(y.getPrice()));
+			}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+			order.setSalesAmount(totalMoney);
+			order.setTotalMoney(totalMoney);
+			if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条轮胎加5元运费
+				String freight = sysClient.getParamService("freight");
+				if (ObjectUtils.isNotNull(freight)) {
+					try {
+						BigDecimal freightAmount = new BigDecimal(freight);
+						order.setTotalMoney(totalMoney.add(freightAmount));
+						order.setFreight(freightAmount);
+					} catch (Exception ignored) {
+						order.setFreight(new BigDecimal(0));
+					}
+				}
+			} else {
+				order.setFreight(new BigDecimal(0));
+			}
+			//毛利
+			order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//成本
+			order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//成本
+			order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
+			order.setNumberRows(0);//行数
+			//总数量
+			order.setGoodsTotalNum(new BigDecimal("0"));
+			order.setSalesAmount(new BigDecimal("0.00"));
+			order.setTotalMoney(new BigDecimal("0.00"));
+		}
+		baseMapper.updateById(order);
+		return R.data(order);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R distributeShareSales(PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("缺少必填项");
+		}
+		if (ObjectUtils.isNull(order.getSharedCompanyId())) {
+			throw new RuntimeException("青选择共享公司");
+		}
+		if (ObjectUtils.isNull(order.getOrderItemsList()) || order.getOrderItemsList().isEmpty()) {
+			throw new RuntimeException("请选择明细数据");
+		}
+		PjOrder pjOrder = baseMapper.selectById(order.getId());
+		if (ObjectUtils.isNotNull(pjOrder.getSharedCompanyId())) {
+			pjOrder.setSharedCompanyId(pjOrder.getSharedCompanyId() + "," + order.getSharedCompanyId());
+			pjOrder.setSharedCompanyName(pjOrder.getSharedCompanyName() + "," + order.getSharedCompanyName());
+		} else {
+			pjOrder.setSharedCompanyId(order.getSharedCompanyId());
+			pjOrder.setSharedCompanyName(order.getSharedCompanyName());
+		}
+		baseMapper.updateById(pjOrder);
+		List<ShareSalesItems> shareSalesItemsList = new ArrayList<>();
+		for (PjOrderItems item : order.getOrderItemsList()) {
+			ShareSalesItems shareSalesItems = new ShareSalesItems();
+			shareSalesItems.setPid(order.getId());
+			shareSalesItems.setSrcPid(item.getId());
+			shareSalesItems.setTenantId(item.getTenantId());
+			shareSalesItems.setCreateUser(AuthUtil.getUserId());
+			shareSalesItems.setCreateTime(new Date());
+			shareSalesItems.setGoodsId(item.getGoodsId());
+			shareSalesItems.setGoodsName(item.getGoodsName());
+			shareSalesItems.setGoodsNum(item.getOutGoodsTotalShipNum());
+			shareSalesItems.setPrice(item.getPrice());
+			shareSalesItems.setSubTotalMoney(item.getOutGoodsTotalShipNum().multiply(item.getPrice()));
+			shareSalesItems.setCostpriePrice(item.getCostpriePrice());
+			shareSalesItems.setCostprie(item.getOutGoodsTotalShipNum().multiply(item.getCostpriePrice()));
+			shareSalesItems.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
+			shareSalesItems.setSharedCompanyId(Long.parseLong(order.getSharedCompanyId()));
+			shareSalesItems.setSharedCompanyName(order.getSharedCompanyName());
+			shareSalesItems.setSharedStatus("已派发");
+			shareSalesItemsList.add(shareSalesItems);
+
+			item.setSendNum(item.getSendNum().add(item.getOutGoodsTotalShipNum()));
+			item.setGoodsTotalShipAmount(item.getOutGoodsTotalShipNum().multiply(item.getPrice()));
+
+		}
+		if (!shareSalesItemsList.isEmpty()) {
+			shareSalesItemsService.saveBatch(shareSalesItemsList);
+		}
+		if (!order.getOrderItemsList().isEmpty()) {
+			orderItemsService.saveBatch(order.getOrderItemsList());
+		}
+		boolean status = generateSharePjOrder(order.getSharedCompanyId(), order.getOrderItemsList(), pjOrder.getTenantId() + "-" + pjOrder.getOrdNo());
+		if (!status) {
+			throw new RuntimeException("派发失败,请联系管理员");
+		}
+		return null;
+	}
+
+	private boolean generateSharePjOrder(String sharedCompanyId, List<PjOrderItems> orderItemsList, String srcOrdNo) {
+		Dept dept = sysClient.getDeptById(sharedCompanyId);
+		if (dept == null) {
+			throw new RuntimeException("未找到共享公司");
+		}
+		PjCorpsDesc corpsDesc = corpsDescMapper.selectByName(dept.getDeptName(), dept.getTenantId());
+		if (corpsDesc == null) {
+			corpsDesc = new PjCorpsDesc();
+			corpsDesc.setCname(dept.getDeptName());
+			corpsDesc.setTenantId(dept.getTenantId());
+			corpsDesc.setRemarks("来源共享共享公司:" + dept.getDeptName());
+			int count = corpsDescMapper.insertCorps(corpsDesc);
+			if (count == 0) {
+				throw new RuntimeException("派发失败,创建客户错误");
+			}
+		}
+		PjOrder sharePjOrder = new PjOrder();
+		sharePjOrder.setTenantId(dept.getTenantId());
+		sharePjOrder.setCustomerId(corpsDesc.getId());
+		sharePjOrder.setCustomerName(corpsDesc.getCname());
+		sharePjOrder.setBsType("XS");
+		sharePjOrder.setBillType(1);
+		// 获取系统编号
+		String billNo = serialService.getBillNoByTenantId(sharePjOrder.getBsType(), sharePjOrder.getBsType(), sharePjOrder.getBsType(), dept.getTenantId());
+		if (ObjectUtils.isNull(billNo)) {
+			throw new RuntimeException("生成系统编号失败");
+		}
+		sharePjOrder.setOrdNo(billNo);
+		sharePjOrder.setSrcOrdNo(billNo);
+		return true;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R revokeDistributeShareSales(PjOrder order) {
+		return null;
+	}
+
 	/**
 	 * 保存订单信息
 	 */
@@ -3928,7 +4202,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					order.setSalesCompanyId(dept.getData().getId());
 					order.setSalesCompanyName(dept.getData().getFullName());
 					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
-						order.setSharedCompanyId(dept.getData().getId());
+						order.setSharedCompanyId(dept.getData().getId() + "");
 						order.setSharedCompanyName(dept.getData().getFullName());
 					} else {
 						order.setSharedCompanyId(order.getSharedCompanyId());
@@ -4444,7 +4718,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					order.setSalesCompanyId(dept.getData().getId());
 					order.setSalesCompanyName(dept.getData().getFullName());
 					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
-						order.setSharedCompanyId(dept.getData().getId());
+						order.setSharedCompanyId(dept.getData().getId() + "");
 						order.setSharedCompanyName(dept.getData().getFullName());
 					} else {
 						order.setSharedCompanyId(order.getSharedCompanyId());
@@ -4574,7 +4848,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 		pjShip.setCreateUser(AuthUtil.getUserId());
 		pjShip.setCreateTime(new Date());
-		pjShip.setSalesCompanyId(pjOrder.getSharedCompanyId());
+		pjShip.setSalesCompanyId(Long.parseLong(pjOrder.getSharedCompanyId()));
 		pjShip.setSalesCompanyName(pjOrder.getSharedCompanyName());
 		pjShip.setSourceCompanyId(pjOrder.getSalesCompanyId());
 		pjShip.setSourceCompanyName(pjOrder.getSalesCompanyName());
@@ -4646,7 +4920,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								throw new RuntimeException(res.getMsg());
 							}
 						}
-					}else{
+					} else {
 						throw new RuntimeException("商品:" + e.getGoodsName() + "未上架");
 					}
 				});

+ 17 - 13
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/mapper/PjpfSerialMapper.java

@@ -16,10 +16,10 @@
  */
 package org.springblade.salesPart.serial.mapper;
 
-import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.serial.entity.PjpfSerial;
 import org.springblade.salesPart.serial.vo.PjpfSerialVO;
 
@@ -40,27 +40,31 @@ public interface PjpfSerialMapper extends BaseMapper<PjpfSerial> {
 	 * @param serial
 	 * @return
 	 */
-	List<PjpfSerialVO> selectPjpfSerialPage(IPage page, PjpfSerialVO serial);
+	List<PjpfSerialVO> selectSerialPage(IPage page, PjpfSerialVO serial);
 
 	/**
 	 * 查询系统编号
-	 * @param billType 单据类型
+	 *
+	 * @param billType   单据类型
 	 * @param tradeType  贸易类型(枚举:国内、进口、出口)
 	 * @param billPrefix 单据前缀
-	 * @param tenantId 租户id
+	 * @param tenantId   租户id
 	 * @param serialType 模块类型
 	 * @return
 	 */
-	@SqlParser(filter=true)
-	PjpfSerial selectPjpfSerial(@Param("billType") String billType,
-						@Param("tradeType") String tradeType,
-						@Param("billPrefix") String billPrefix,
-						@Param("tenantId") String tenantId,
-						@Param("serialType") String serialType);
-	@SqlParser(filter=true)
+	@TenantIgnore
+	PjpfSerial selectSerial(@Param("billType") String billType,
+							@Param("tradeType") String tradeType,
+							@Param("billPrefix") String billPrefix,
+							@Param("tenantId") String tenantId,
+							@Param("serialType") String serialType);
+
+	@TenantIgnore
 	int updateMessage(PjpfSerial serial);
-	@SqlParser(filter=true)
-	int insertPjpfSerialMessage(PjpfSerial serial);
 
+	@TenantIgnore
+	int insertSerialMessage(PjpfSerial serial);
+
+	@TenantIgnore
 	int updateSerialById(@Param("serial") PjpfSerial serial);
 }

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

@@ -67,4 +67,6 @@ public interface IPjpfSerialService extends IService<PjpfSerial> {
 	String getBillNoLos(String billType, String seaType, String businessType, String type);
 
 	String getBillNoByDate(String type, String tradeType, String serialType, String date);
+
+	String getBillNoByTenantId(String type,String tradeType,String serialType,String tenantId);
 }

+ 44 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/service/impl/PjpfSerialServiceImpl.java

@@ -45,7 +45,7 @@ public class PjpfSerialServiceImpl extends ServiceImpl<PjpfSerialMapper, PjpfSer
 
 	@Override
 	public IPage<PjpfSerialVO> selectPjpfSerialPage(IPage<PjpfSerialVO> page, PjpfSerialVO serial) {
-		return page.setRecords(baseMapper.selectPjpfSerialPage(page, serial));
+		return page.setRecords(baseMapper.selectSerialPage(page, serial));
 	}
 
 	/**
@@ -177,7 +177,7 @@ public class PjpfSerialServiceImpl extends ServiceImpl<PjpfSerialMapper, PjpfSer
 		billNoSerial.setTenantId(tenantId);
 		billNoSerial.setIsDeleted(0);
 		billNoSerial.setSerialType(serialType);
-		PjpfSerial serial = baseMapper.selectPjpfSerial(type, tradeType, yyyyMM, tenantId, serialType);
+		PjpfSerial serial = baseMapper.selectSerial(type, tradeType, yyyyMM, tenantId, serialType);
 		if (tradeType.equals("CK")) {
 			yyyyMM = DateFormatUtils.format(date, "yyMMdd");
 			if (serial != null) {
@@ -193,7 +193,7 @@ public class PjpfSerialServiceImpl extends ServiceImpl<PjpfSerialMapper, PjpfSer
 			} else {
 				billNo = "001-" + yyyyMM;
 				billNoSerial.setSerial(1);
-				baseMapper.insertPjpfSerialMessage(billNoSerial);
+				baseMapper.insertSerialMessage(billNoSerial);
 			}
 		} else {
 			if (serial != null) {
@@ -209,7 +209,7 @@ public class PjpfSerialServiceImpl extends ServiceImpl<PjpfSerialMapper, PjpfSer
 			} else {
 				billNo = yyyyMM + "001";
 				billNoSerial.setSerial(1);
-				baseMapper.insertPjpfSerialMessage(billNoSerial);
+				baseMapper.insertSerialMessage(billNoSerial);
 			}
 		}
 		return type + billNo;
@@ -311,4 +311,44 @@ public class PjpfSerialServiceImpl extends ServiceImpl<PjpfSerialMapper, PjpfSer
 		return type + billNo;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public String getBillNoByTenantId(String type, String tradeType, String serialType, String tenantId) {
+		Date date = new Date();
+		String billNo;
+		String yyyyMM;
+		yyyyMM = DateFormatUtils.format(date, "yyyyMM");
+		PjpfSerial billNoSerial = new PjpfSerial();
+		billNoSerial.setBillType(type);
+		billNoSerial.setTradeType(tradeType);
+		billNoSerial.setBillPrefix(yyyyMM);
+		billNoSerial.setTenantId(tenantId);
+		billNoSerial.setIsDeleted(0);
+		billNoSerial.setSerialType(serialType);
+		PjpfSerial serial = baseMapper.selectSerial(type,tradeType,yyyyMM,tenantId,serialType);
+		if (serial != null) {
+			serial.setSerial(serial.getSerial() + 1);
+			serial.setVersionOld(serial.getVersion());
+			serial.setVersion(serial.getVersion() + 1);
+			int count = baseMapper.updateSerialById(serial);
+			if (count != 0) {
+				if (serial.getSerial() <= 9) {
+					billNo = yyyyMM + "00" + serial.getSerial();
+				} else if (serial.getSerial() <= 99) {
+					billNo = yyyyMM + "0" + serial.getSerial();
+				} else {
+					billNo = yyyyMM + "" + serial.getSerial();
+				}
+			} else {
+				throw new RuntimeException("生成单号失败,请稍后再试");
+			}
+		} else {
+			billNo = yyyyMM + "001";
+			billNoSerial.setSerial(1);
+			billNoSerial.setVersion(0);
+			baseMapper.insertSerialMessage(billNoSerial);
+		}
+		return type + billNo;
+	}
+
 }

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java

@@ -222,7 +222,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						}
 					} else if ("TKXS".equals(item.getBusinesType()) || "TKCG".equals(item.getBusinesType())) {
 						if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
-							if (pjOrder.getPaymentAmountTl().add(item.getThisRefundAmount()).compareTo(pjOrder.getTotalMoney()) > 0) {
+							if (pjOrder.getPaymentAmountTl().add(item.getThisRefundAmount()).compareTo(pjOrder.getTotalMoney().add(pjOrder.getFreight())) > 0) {
 								throw new RuntimeException("当前结算金额大于订单金额");
 							}
 							pjOrder.setPaymentAmountTl(pjOrder.getPaymentAmountTl().add(item.getThisRefundAmount()));

+ 3 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/controller/SharePutOnShelvesController.java

@@ -95,6 +95,7 @@ public class SharePutOnShelvesController extends BladeController {
 			.like(ObjectUtils.isNotNull(sharePutOnShelves.getGoodsDescription()), SharePutOnShelves::getGoodsDescription, sharePutOnShelves.getGoodsDescription())
 			.like(ObjectUtils.isNotNull(sharePutOnShelves.getPlaceProduction()), SharePutOnShelves::getPlaceProduction, sharePutOnShelves.getPlaceProduction())
 			.like(ObjectUtils.isNotNull(sharePutOnShelves.getBrandName()), SharePutOnShelves::getBrandName, sharePutOnShelves.getBrandName())
+			.like(ObjectUtils.isNotNull(sharePutOnShelves.getBrandId()), SharePutOnShelves::getBrandId, sharePutOnShelves.getBrandId())
 			.eq(ObjectUtils.isNotNull(sharePutOnShelves.getBillType()), SharePutOnShelves::getBillType, sharePutOnShelves.getBillType())
 			.eq(ObjectUtils.isNotNull(sharePutOnShelves.getShareStatus()), SharePutOnShelves::getShareStatus, sharePutOnShelves.getShareStatus())
 		;
@@ -158,7 +159,7 @@ public class SharePutOnShelvesController extends BladeController {
 	 * 共享商品导入共享上架
 	 */
 	@PostMapping("/shareProductLaunchImport")
-	public R shareProductLaunchImport(List<PjProductLaunch> pjProductLaunchList) {
+	public R shareProductLaunchImport(@RequestBody List<PjProductLaunch> pjProductLaunchList) {
 		return sharePutOnShelvesService.shareProductLaunchImport(pjProductLaunchList);
 	}
 
@@ -179,7 +180,7 @@ public class SharePutOnShelvesController extends BladeController {
 	@PostMapping("/importShareProductLaunch")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "导入共享上架信息", notes = "传入list")
-	public R importShareProductLaunch(MultipartFile file) {
+	public R importShareProductLaunch(@RequestBody MultipartFile file) {
 		List<SharePutOnShelvesImportExcel> excelList = ExcelUtil.read(file, SharePutOnShelvesImportExcel.class);
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");

+ 126 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/controller/ShareSalesItemsController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.vo.ShareSalesItemsVO;
+import org.springblade.salesPart.share.service.IShareSalesItemsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 共享销售单-共享明细 控制器
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/sharesalesitems")
+@Api(value = "共享销售单-共享明细", tags = "共享销售单-共享明细接口")
+public class ShareSalesItemsController extends BladeController {
+
+	private final IShareSalesItemsService shareSalesItemsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入shareSalesItems")
+	public R<ShareSalesItems> detail(ShareSalesItems shareSalesItems) {
+		ShareSalesItems detail = shareSalesItemsService.getOne(Condition.getQueryWrapper(shareSalesItems));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 共享销售单-共享明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入shareSalesItems")
+	public R<IPage<ShareSalesItems>> list(ShareSalesItems shareSalesItems, Query query) {
+		IPage<ShareSalesItems> pages = shareSalesItemsService.page(Condition.getPage(query), Condition.getQueryWrapper(shareSalesItems));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 共享销售单-共享明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入shareSalesItems")
+	public R<IPage<ShareSalesItemsVO>> page(ShareSalesItemsVO shareSalesItems, Query query) {
+		IPage<ShareSalesItemsVO> pages = shareSalesItemsService.selectShareSalesItemsPage(Condition.getPage(query), shareSalesItems);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 共享销售单-共享明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入shareSalesItems")
+	public R save(@Valid @RequestBody ShareSalesItems shareSalesItems) {
+		return R.status(shareSalesItemsService.save(shareSalesItems));
+	}
+
+	/**
+	 * 修改 共享销售单-共享明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入shareSalesItems")
+	public R update(@Valid @RequestBody ShareSalesItems shareSalesItems) {
+		return R.status(shareSalesItemsService.updateById(shareSalesItems));
+	}
+
+	/**
+	 * 新增或修改 共享销售单-共享明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入shareSalesItems")
+	public R submit(@Valid @RequestBody ShareSalesItems shareSalesItems) {
+		return R.status(shareSalesItemsService.saveOrUpdate(shareSalesItems));
+	}
+
+	
+	/**
+	 * 删除 共享销售单-共享明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(shareSalesItemsService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 3 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/SharePutOnShelvesMapper.xml

@@ -51,12 +51,10 @@
     </resultMap>
 
     <update id="deleteBySharedId">
-        update blade_dept set is_deleted = '1'
+        update pjpf_share_put_on_shelves
+        set is_deleted = '1'
         where is_deleted = 0
-        and id in
-        <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
-            #{ids}
-        </foreach>
+          and find_in_set(src_shared_id, #{ids})
     </update>
 
     <select id="selectSharePutOnShelvesPage" resultMap="sharePutOnShelvesResultMap">

+ 42 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/ShareSalesItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.mapper;
+
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.vo.ShareSalesItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 共享销售单-共享明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+public interface ShareSalesItemsMapper extends BaseMapper<ShareSalesItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param shareSalesItems
+	 * @return
+	 */
+	List<ShareSalesItemsVO> selectShareSalesItemsPage(IPage page, ShareSalesItemsVO shareSalesItems);
+
+}

+ 34 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/ShareSalesItemsMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.salesPart.share.mapper.ShareSalesItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="shareSalesItemsResultMap" type="org.springblade.salesPart.share.entity.ShareSalesItems">
+        <id column="id" property="id"/>
+        <result column="pid" property="pid"/>
+        <result column="src_pid" property="srcPid"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+        <result column="goods_id" property="goodsId"/>
+        <result column="goods_name" property="goodsName"/>
+        <result column="goods_num" property="goodsNum"/>
+        <result column="price" property="price"/>
+        <result column="sub_total_money" property="subTotalMoney"/>
+        <result column="shared_company_id" property="sharedCompanyId"/>
+        <result column="shared_company_name" property="sharedCompanyName"/>
+        <result column="shared_status" property="sharedStatus"/>
+        <result column="costprie" property="costprie"/>
+        <result column="gross_profit" property="grossProfit"/>
+        <result column="costprie_price" property="costpriePrice"/>
+    </resultMap>
+
+
+    <select id="selectShareSalesItemsPage" resultMap="shareSalesItemsResultMap">
+        select * from pjpf_share_sales_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/service/IShareSalesItemsService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.service;
+
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.vo.ShareSalesItemsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 共享销售单-共享明细 服务类
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+public interface IShareSalesItemsService extends IService<ShareSalesItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param shareSalesItems
+	 * @return
+	 */
+	IPage<ShareSalesItemsVO> selectShareSalesItemsPage(IPage<ShareSalesItemsVO> page, ShareSalesItemsVO shareSalesItems);
+
+}

+ 41 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/service/impl/ShareSalesItemsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.share.service.impl;
+
+import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.vo.ShareSalesItemsVO;
+import org.springblade.salesPart.share.mapper.ShareSalesItemsMapper;
+import org.springblade.salesPart.share.service.IShareSalesItemsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 共享销售单-共享明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2025-01-13
+ */
+@Service
+public class ShareSalesItemsServiceImpl extends ServiceImpl<ShareSalesItemsMapper, ShareSalesItems> implements IShareSalesItemsService {
+
+	@Override
+	public IPage<ShareSalesItemsVO> selectShareSalesItemsPage(IPage<ShareSalesItemsVO> page, ShareSalesItemsVO shareSalesItems) {
+		return page.setRecords(baseMapper.selectShareSalesItemsPage(page, shareSalesItems));
+	}
+
+}

+ 4 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -313,7 +313,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 						}
 						amount = amount.add(order.getTotalMoney());
 //						order.setPaymentAmountTl(totalMoney);
-						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId());
+						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId()+"");
 						order.setSharedCompanyName(shoppingCartList.get(0).getSharedCompanyName());
 					}
 					if (goodsName.length() > 0) {
@@ -509,7 +509,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							order.setFreight(new BigDecimal(5));*/
 						}
 						amount = amount.add(order.getTotalMoney());
-						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId());
+						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId()+"");
 						order.setSharedCompanyName(shoppingCartList.get(0).getSharedCompanyName());
 					}
 					if (goodsName.length() > 0) {
@@ -717,7 +717,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 						order.setPaymentAmountTl(totalMoney);
 						order.setStatus(OrderTypeEnum.XSDQR.getType());
 						order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
-						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId());
+						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId()+"");
 						order.setSharedCompanyName(shoppingCartList.get(0).getSharedCompanyName());
 						corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
 					}
@@ -946,7 +946,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 						order.setSalesAmount(totalMoney);
 						order.setTotalMoney(totalMoney);
 						amount = amount.add(order.getTotalMoney());
-						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId());
+						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId()+"");
 						order.setSharedCompanyName(shoppingCartList.get(0).getSharedCompanyName());
 					}
 					if (goodsName.length() > 0) {

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

@@ -570,9 +570,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.apply("find_in_set(ord_no,'" + billNo + "')")
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd())
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'")
 			);
+			if(pjOrderList.isEmpty()){
+				return R.data(new Page<>());
+			}
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
 			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
 			if (!pids.isEmpty()) {
@@ -610,6 +613,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 								items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
 								items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
 								items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+								items.setCostpriePrice(orderItems.getCostpriePrice());
 							}
 						}
 						if ("已取消".equals(items.getStatus())) {
@@ -629,10 +633,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 									amount = new BigDecimal("0.00");
 								}
 								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getReturnsNumber()));
-								items.setProfit(new BigDecimal("0.00").subtract(items.getProfit()));
 								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()).subtract(item.getFreight()));
 								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
-								items.setCostprie(new BigDecimal("0.00").subtract(items.getCostprie()));
+								BigDecimal costprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+								BigDecimal profit = items.getSubTotalMoney().abs().subtract(costprie);
+								items.setProfit(new BigDecimal("0.00").subtract(profit));
+								items.setCostprie(new BigDecimal("0.00").subtract(costprie));
 							} else {
 								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
 									items.setBalanceAmount(new BigDecimal("0.00"));
@@ -890,8 +896,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.apply("find_in_set(ord_no,'" + billNo + "')")
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd())
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'")
 			);
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
 			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
@@ -930,6 +936,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 								items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
 								items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
 								items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+								items.setCostpriePrice(orderItems.getCostpriePrice());
 							}
 						}
 						if ("已取消".equals(items.getStatus())) {
@@ -950,9 +957,11 @@ public class StatisticsServiceImpl implements IStatisticsService {
 								}
 								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getReturnsNumber()));
 								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()).subtract(item.getFreight()));
-								items.setProfit(new BigDecimal("0.00").subtract(items.getProfit()));
+								BigDecimal costprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+								BigDecimal profit = items.getSubTotalMoney().abs().subtract(costprie);
+								items.setProfit(new BigDecimal("0.00").subtract(profit));
 								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
-								items.setCostprie(new BigDecimal("0.00").subtract(items.getCostprie()));
+								items.setCostprie(new BigDecimal("0.00").subtract(costprie));
 							} else {
 								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
 									items.setBalanceAmount(new BigDecimal("0.00"));

+ 10 - 0
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java

@@ -243,4 +243,14 @@ public class DeptController extends BladeController {
 		return R.data(deptService.getDetailPol(dept));
 	}
 
+
+	/**
+	 * 顶级部门列表
+	 */
+	@GetMapping("/deptListAll")
+	public R<List<Dept>> deptListAll(Dept dept) {
+		List<Dept> list = deptService.deptListAll(dept);
+		return R.data(list);
+	}
+
 }

+ 5 - 0
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -300,6 +300,11 @@ public class SysClient implements ISysClient {
 	}
 
 	@Override
+	public Dept getDeptById(String sharedCompanyId) {
+		return deptService.getDeptById(sharedCompanyId);
+	}
+
+	@Override
 	@GetMapping(TENANT_ID)
 	public R<Tenant> getTenant(String tenantId) {
 		return R.data(tenantService.getByTenantId(tenantId));

+ 6 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java

@@ -87,4 +87,10 @@ public interface DeptMapper extends BaseMapper<Dept> {
 
 	@TenantIgnore
 	List<Dept> getDeptByName(@Param("sharedCompany")String sharedCompany);
+
+	@TenantIgnore
+	List<Dept> deptListAll(Dept dept);
+
+	@TenantIgnore
+    Dept getDeptById(@Param("sharedCompanyId") String sharedCompanyId);
 }

+ 22 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml

@@ -158,4 +158,26 @@
         where is_deleted = '0'
           and find_in_set(dept_name, #{sharedCompany})
     </select>
+    <select id="deptListAll" resultType="org.springblade.system.entity.Dept">
+        select *
+        from blade_dept
+        where is_deleted = '0'
+          and parent_id = 0
+          and find_in_set(tenant_id, #{tenantId})
+        <if test="fullName!=null and fullName!=''">
+            and full_name = #{fullName}
+        </if>
+        <if test="deptCategory!=null and deptCategory!=''">
+            and dept_category = #{deptCategory}
+        </if>
+        <if test="deptName!=null and deptName!=''">
+            and dept_name = #{deptName}
+        </if>
+    </select>
+    <select id="getDeptById" resultType="org.springblade.system.entity.Dept">
+        select *
+        from blade_dept
+        where is_deleted = '0'
+        id = #{sharedCompanyId}
+    </select>
 </mapper>

+ 4 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java

@@ -154,4 +154,8 @@ public interface IDeptService extends IService<Dept> {
     Dept selectDept(String tenantIdCopy);
 
     List<Dept> getDeptByName(String sharedCompany);
+
+    List<Dept> deptListAll(Dept dept);
+
+	Dept getDeptById(String sharedCompanyId);
 }

+ 19 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@@ -31,6 +31,7 @@ import org.springblade.core.tool.utils.StringPool;
 import org.springblade.system.cache.SysCache;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.mapper.DeptMapper;
+import org.springblade.system.mapper.ParamServiceMapper;
 import org.springblade.system.service.IDeptService;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -58,6 +59,8 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
 
 	private final IUserClient userClient;
 
+	private final ParamServiceMapper paramServiceMapper;
+
 	@Override
 	public List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param) {
 		// 设置租户ID
@@ -281,6 +284,22 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
 		return baseMapper.getDeptByName(sharedCompany);
 	}
 
+	@Override
+	public List<Dept> deptListAll(Dept dept) {
+		List<String> tenantIds = paramServiceMapper.getTenants("whether.share");
+		if (!tenantIds.isEmpty()) {
+			dept.setTenantId(tenantIds.stream().collect(Collectors.joining(",")));
+			return baseMapper.deptListAll(dept);
+		} else {
+			return new ArrayList<>();
+		}
+	}
+
+	@Override
+	public Dept getDeptById(String sharedCompanyId) {
+		return baseMapper.getDeptById(sharedCompanyId);
+	}
+
 	private Dept getParentId(Long parentId) {
 		Dept detail = baseMapper.selectById(parentId);
 		if (0 == detail.getParentId()) {