Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

wxf 2 rokov pred
rodič
commit
4fecbd452b
24 zmenil súbory, kde vykonal 388 pridanie a 23 odobranie
  1. 4 0
      hx-mes/pom.xml
  2. 6 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java
  3. 5 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java
  4. 8 0
      hx-mes/src/main/java/com/fjhx/mes/mapper/work/WorkOrderMapper.java
  5. 9 0
      hx-mes/src/main/java/com/fjhx/mes/service/work/WorkOrderService.java
  6. 44 0
      hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java
  7. 16 0
      hx-mes/src/main/resources/mapper/work/WorkOrderMapper.xml
  8. 5 0
      hx-purchase/pom.xml
  9. 49 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDataResourceEnum.java
  10. 10 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java
  11. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  12. 31 2
      hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java
  13. 8 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java
  14. 8 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java
  15. 12 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java
  16. 17 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml
  17. 11 1
      hx-sale/pom.xml
  18. 6 0
      hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java
  19. 5 0
      hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProduct.java
  20. 61 0
      hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java
  21. 5 3
      hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java
  22. 50 1
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java
  23. 2 1
      hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackServiceImpl.java
  24. 11 15
      hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

+ 4 - 0
hx-mes/pom.xml

@@ -35,6 +35,10 @@
             <groupId>com.fjhx</groupId>
             <artifactId>hx-wms</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-sale</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java

@@ -21,6 +21,7 @@ import lombok.Setter;
 @TableName("work_order")
 public class WorkOrder extends BasePo {
 
+
     /**
      * 工单编号
      */
@@ -29,6 +30,11 @@ public class WorkOrder extends BasePo {
     /**
      * 工单来源
      */
+    private Long sourceId;
+
+    /**
+     * 工单来源
+     */
     private Integer source;
 
     /**

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java

@@ -29,4 +29,9 @@ public class WorkOrderVo extends WorkOrder {
     /**待排程数量*/
     private BigDecimal remainingQuantity;
 
+    /**
+     * 总量
+     */
+    private BigDecimal sumQuantity;
+
 }

+ 8 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/work/WorkOrderMapper.java

@@ -7,6 +7,8 @@ import com.fjhx.mes.entity.work.vo.WorkOrderVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +25,10 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
      */
     Page<WorkOrderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<WorkOrder> wrapper);
 
+    /**
+     * 获取外销合同总生产量
+     * @param dataResourceIds
+     * @return
+     */
+    List<WorkOrderVo> getSumCountInResourceId(@Param("dataResourceIds")List<Long> dataResourceIds);
 }

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/WorkOrderService.java

@@ -7,6 +7,8 @@ import com.fjhx.mes.entity.work.vo.WorkOrderVo;
 import com.fjhx.mes.entity.work.dto.WorkOrderSelectDto;
 import com.fjhx.mes.entity.work.dto.WorkOrderDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -34,6 +36,11 @@ public interface WorkOrderService extends BaseService<WorkOrder> {
     void add(WorkOrderDto workOrderDto);
 
     /**
+     * 工单批量新增
+     */
+    void addBatch(List<WorkOrder> workOrder);
+
+    /**
      * 工单编辑
      */
     void edit(WorkOrderDto workOrderDto);
@@ -43,4 +50,6 @@ public interface WorkOrderService extends BaseService<WorkOrder> {
      */
     void delete(Long id);
 
+
+
 }

+ 44 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -2,6 +2,8 @@ package com.fjhx.mes.service.work.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.entity.product.po.ProductInfo;
@@ -15,11 +17,16 @@ import com.fjhx.mes.mapper.work.WorkOrderMapper;
 import com.fjhx.mes.service.production.ProductionPlanService;
 import com.fjhx.mes.service.work.WorkOrderService;
 import com.fjhx.mes.utils.code.CodeEnum;
+import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.sale.service.contract.impl.ContractProductServiceImpl;
+import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -41,6 +48,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     @Autowired
     ProductionPlanService productionPlanService;
 
+    @Autowired
+    private ContractProductService contractProductService;
+
     @Override
     public Page<WorkOrderVo> getPage(WorkOrderSelectDto dto) {
         IWrapper<WorkOrder> wrapper = getWrapper();
@@ -100,6 +110,40 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         this.save(workOrderDto);
     }
 
+    /**
+     * 批量新增
+     * @param workOrder
+     */
+    @Override
+    @DSTransactional
+    public void addBatch(List<WorkOrder> workOrder) {
+        if(CollectionUtils.isNotEmpty(workOrder)){
+            throw new ServiceException("提交不能为空");
+        }
+        List<ContractProduct> upContractProduct = new ArrayList<>();
+        for(WorkOrder w:workOrder){
+            //生成工单编号,以及设置默认状态
+            w.setCode(CodeEnum.WORK_ORDER.getCode());
+            w.setStatus(0);
+            if(ObjectUtil.isNotEmpty(w.getSourceId())&&w.getSource()==1){//外销合同生产数据
+                ContractProduct contractProduct = contractProductService.getById(w.getSourceId());
+                if(ObjectUtil.isNotEmpty(contractProduct)){
+                    throw new ServiceException("该合同产品不存在,请检查");
+                }
+                BigDecimal expendQuantity = contractProduct.getExpendQuantity().subtract(w.getQuantity());
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
+                    throw new ServiceException("生产数量不得大于销售合同数量");
+                }
+                contractProduct.setExpendQuantity(expendQuantity);
+                upContractProduct.add(contractProduct);
+            }
+        }
+        this.saveBatch(workOrder);
+        if(CollectionUtils.isNotEmpty(upContractProduct)){//扣减销售合同数量
+            contractProductService.updateBatchById(upContractProduct);
+        }
+    }
+
     @Override
     public void edit(WorkOrderDto workOrderDto) {
         this.updateById(workOrderDto);

+ 16 - 0
hx-mes/src/main/resources/mapper/work/WorkOrderMapper.xml

@@ -18,4 +18,20 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getSumCountInResourceId" resultType="com.fjhx.mes.entity.work.vo.WorkOrderVo">
+        SELECT
+            IFNULL(SUM(quantity),0) AS sumQuantity,
+            source_id
+        FROM
+            work_order
+        <where>
+            source = 0
+            <if test="dataResourceIds neq null and dataResourceIds.size() > 0">
+                <foreach collection="dataResourceIds" item="dataResourceId" open="AND source_id IN (" separator="," close=")">
+                    #{dataResourceId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY source_id
+    </select>
 </mapper>

+ 5 - 0
hx-purchase/pom.xml

@@ -49,6 +49,11 @@
             <version>3.8.5</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-sale</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 49 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDataResourceEnum.java

@@ -0,0 +1,49 @@
+package com.fjhx.purchase.entity.purchase.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 采购数据来源
+ */
+public enum PurchaseDataResourceEnum {
+    DATA_RESOURCE_0(0, "自建"),
+    DATA_RESOURCE_1(1, "外销合同采购"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    PurchaseDataResourceEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PurchaseDataResourceEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 10 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java

@@ -23,6 +23,16 @@ import lombok.Setter;
 public class PurchaseDetail extends BasePo {
 
     /**
+     * 业务来源 0自建  1外销合同采购
+     */
+    private Integer dataResource;
+
+    /**
+     * 业务来源ID
+     */
+    private Long dataResourceId;
+
+    /**
      * 关联ID  产品ID/货品ID
      */
     private Long bussinessId;

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java

@@ -30,4 +30,9 @@ public class PurchaseDetailVo extends PurchaseDetail {
      */
     private BigDecimal deliverGoodsQuantity;
 
+    /**
+     * 总数
+     */
+    private BigDecimal sumCount;
+
 }

+ 31 - 2
hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java

@@ -4,10 +4,12 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
@@ -15,9 +17,16 @@ import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.util.code.CodeEnum;
+import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.sale.service.contract.ContractService;
 import com.obs.services.internal.ServiceException;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -39,7 +48,7 @@ public class PurchaseFlow extends FlowDelegate {
     /**
      * 发起流程
      * @param flowId 流程ID
-     * @param submitData 购数据
+     * @param submitData 购数据
      * @return
      */
     @Override
@@ -69,12 +78,31 @@ public class PurchaseFlow extends FlowDelegate {
     @Override
     public void end(Long flowId, Long businessId, JSONObject submitData) {
         PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        ContractProductService contractProductService = SpringUtil.getBean(ContractProductService.class);
         PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
-        //通过业务ID查询购数据
+        //通过业务ID查询购数据
         Purchase purchase = purchaseService.getById(businessId);
         if(ObjectUtils.isEmpty(purchase)){
             throw new ServiceException("采购单不存在");
         }
+        //查询采购产品
+        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,businessId));
+        List<ContractProduct> upContractProduct = new ArrayList<>();
+        for(PurchaseDetail p:purchaseDetailList){
+            if(ObjectUtils.isNotEmpty(p.getDataResourceId())&&
+                    p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_1.getKey()){//如果采购的是外销合同
+                ContractProduct contractProduct = contractProductService.getById(p.getDataResourceId());
+                BigDecimal expendQuantity = contractProduct.getExpendQuantity().subtract(p.getCount());
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
+                    throw new ServiceException("采购数量不得大于外销合同数量");
+                }
+                contractProduct.setExpendQuantity(expendQuantity);
+                upContractProduct.add(contractProduct);
+            }
+        }
+        if(CollectionUtils.isNotEmpty(upContractProduct)){//扣减销售合同数量
+            contractProductService.updateBatchById(upContractProduct);
+        }
         //修改采购状态为审批通过
         purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
         purchase.setApprovedDate(new Date());
@@ -84,5 +112,6 @@ public class PurchaseFlow extends FlowDelegate {
         detail.setStatus(PurchaseDetailStatusEnum.PASS.getKey());
         purchaseDetailService.update(detail,Wrappers.<PurchaseDetail>query()
                 .lambda().eq(PurchaseDetail::getPurchaseId,purchase.getId()));
+
     }
 }

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java

@@ -7,6 +7,8 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +25,10 @@ public interface PurchaseDetailMapper extends BaseMapper<PurchaseDetail> {
      */
     Page<PurchaseDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseDetail> wrapper);
 
+    /**
+     * 获取外销合同总采购量
+     * @param dataResourceIds
+     * @return
+     */
+    List<PurchaseDetailVo> getSumCountInDataResourceId(@Param("dataResourceIds")List<Long> dataResourceIds);
 }

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java

@@ -7,6 +7,8 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -43,4 +45,10 @@ public interface PurchaseDetailService extends BaseService<PurchaseDetail> {
      */
     void delete(Long id);
 
+    /**
+     * 获取外销合同总采购量
+     * @return
+     */
+    List<PurchaseDetailVo> getSumCountInDataResourceId(List<Long> dataResourceIds);
+
 }

+ 12 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java

@@ -14,6 +14,8 @@ import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -61,4 +63,14 @@ public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper,
         this.removeById(id);
     }
 
+    /**
+     * 获取外销合同总采购量
+     * @param dataResourceIds
+     * @return
+     */
+    @Override
+    public List<PurchaseDetailVo> getSumCountInDataResourceId(List<Long> dataResourceIds) {
+        return baseMapper.getSumCountInDataResourceId(dataResourceIds);
+    }
+
 }

+ 17 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml

@@ -19,4 +19,21 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getSumCountInDataResourceId" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
+        SELECT
+            sum( count ) AS sumCount,
+            data_resource_id
+        FROM
+            purchase_detail
+        <where>
+            data_resource = 1
+            <if test="dataResourceIds neq null and dataResourceIds.size() > 0">
+                <foreach collection="dataResourceIds" item="dataResourceId" open="AND data_resource_id IN (" separator="," close=")">
+                    #{dataResourceId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            data_resource_id
+    </select>
 </mapper>

+ 11 - 1
hx-sale/pom.xml

@@ -28,11 +28,21 @@
             <artifactId>hx-customer</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>com.fjhx</groupId>
             <artifactId>hx-account</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-purchase</artifactId>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-mes</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -23,6 +23,12 @@ import lombok.Setter;
 @TableName("contract")
 public class Contract extends BasePo {
 
+
+    /**
+     * 合同类型
+     */
+    private Integer contractType;
+
     /**
      * 编码
      */

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProduct.java

@@ -65,6 +65,11 @@ public class ContractProduct extends BasePo {
     private String remark;
 
     /**
+     * 消耗剩余数量
+     */
+    private BigDecimal expendQuantity;
+
+    /**
      * 附件列表
      */
     @TableField(exist = false)

+ 61 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java

@@ -4,6 +4,8 @@ import com.fjhx.sale.entity.contract.po.ContractProduct;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 外销合同-产品列表查询返回值实体
  *
@@ -14,4 +16,63 @@ import lombok.Setter;
 @Setter
 public class ContractProductVo extends ContractProduct {
 
+    /**
+     * 合同编码
+     */
+    private String contractCode;
+
+    /**
+     * 操作人
+     */
+    private String userName;
+
+    /**
+     * 版本
+     */
+    private String contractVersion;
+
+    /**
+     * 转生产数量
+     */
+    private BigDecimal productQuantity;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal purchaseQuantity;
+
+    /**
+     * 所属分类
+     */
+    private String productCategory;
+
+    /**
+     * 货品编码
+     */
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    private String productName;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+
+    /**
+     * 货品规格型号
+     */
+    private String productSpec;
+
+    /**
+     * 货品类型
+     */
+    private Integer productType;
+
+    /**
+     * 所属分类id
+     */
+    private Long productCategoryId;
 }

+ 5 - 3
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.file.utils.ObsFileUtil;
@@ -63,21 +64,22 @@ public class ContractFlow extends FlowDelegate {
         List<ContractProduct> contractProductList = contract.getContractProductList();
         if(CollectionUtils.isNotEmpty(contractProductList)){//保存合同产品
             for(ContractProduct c : contractProductList){
-                c.setId(IdUtils.gen19UUID());
+                c.setId(IdWorker.getId());
                 c.setContractId(contract.getId());
+                c.setExpendQuantity(c.getQuantity());
                 ObsFileUtil.saveFile(c.getFileList(),c.getId());
             }
             contractProductService.saveBatch(contractProductList);
         }
         List<ContractProject> contractProjectList = contract.getContractProjectList();
-        if(CollectionUtils.isNotEmpty(contractProjectList)){//保存合同产品
+        if(CollectionUtils.isNotEmpty(contractProjectList)){//保存收费项目
             for(ContractProject c : contractProjectList){
                 c.setContractId(contract.getId());
             }
             contractProjectService.saveBatch(contractProjectList);
         }
         List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
-        if(CollectionUtils.isNotEmpty(contractShipmentList)){//保存合同产品
+        if(CollectionUtils.isNotEmpty(contractShipmentList)){//保存自定义出货
             for(ContractShipment c : contractShipmentList){
                 c.setContractId(contract.getId());
             }

+ 50 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -1,9 +1,24 @@
 package com.fjhx.sale.service.contract.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.item.service.product.ProductClassifyService;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
+import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
@@ -12,6 +27,11 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -24,11 +44,40 @@ import cn.hutool.core.bean.BeanUtil;
 @Service
 public class ContractProductServiceImpl extends ServiceImpl<ContractProductMapper, ContractProduct> implements ContractProductService {
 
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Autowired
+    private ProductClassifyService productClassifyService;
+    /**
+     * 分页
+     * @param dto
+     * @return
+     */
     @Override
     public Page<ContractProductVo> getPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
-        wrapper.orderByDesc("cp", ContractProduct::getId);
+        wrapper.orderByDesc("t1", ContractProduct::getCreateTime);
+        if(StringUtils.isNotEmpty(dto.getKeyword())){
+            wrapper.keyword(dto.getKeyword(),new SqlField("t2.`code`"),new SqlField("t2.`user_name`"));
+        }
         Page<ContractProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<ContractProductVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)){
+            // 赋值产品属性
+            productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
+                item.setProductCode(product.getCode());
+                item.setProductUnit(product.getUnit());
+                item.setProductType(product.getType());
+                item.setProductName(product.getName());
+                item.setProductSpec(product.getSpec());
+                item.setProductCategoryId(product.getProductClassifyId());
+            });
+            // 赋值产品分类名称
+            productClassifyService.attributeAssign(list, ContractProductVo::getProductCategoryId, (item, productClassify) -> {
+                item.setProductCategory(productClassify.getName());
+            });
+        }
         return page;
     }
 

+ 2 - 1
hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.sale.service.pack.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.sale.entity.pack.po.Pack;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailGoods;
@@ -82,7 +83,7 @@ public class PackServiceImpl extends ServiceImpl<PackMapper, Pack> implements Pa
             List<PackDetailGoods> packDetailGoodsList = new ArrayList<>();
             for(PackDetail p:packDetailList){
                 p.setPackId(pack.getId());
-                p.setId(IdUtils.gen19UUID());
+                p.setId(IdWorker.getId());
                 //处理装箱产品明细
                 setPackDetailProducts(p,packDetailProductList);
                 //处理自定义装箱货物

+ 11 - 15
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -2,21 +2,17 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.sale.mapper.contract.ContractProductMapper">
     <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
-        select
-            cp.id,
-            cp.contract_id,
-            cp.product_id,
-            cp.product_name,
-            cp.product_model,
-            cp.quantity,
-            cp.price,
-            cp.amount,
-            cp.remark,
-            cp.create_user,
-            cp.create_time,
-            cp.update_user,
-            cp.update_time
-        from contract_product cp
+        SELECT
+            t1.id,
+            t1.contract_id,
+            t2.`code` AS contractCode,
+            t2.user_name AS userName,
+            t2.version AS contractVersion,
+            t1.expendQuantity,
+            (SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+        FROM
+            contract_product t1
+        LEFT JOIN contract t2 ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
     </select>