Browse Source

申购增加归属公司

24282 2 years ago
parent
commit
1af8a5df73

+ 15 - 9
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java

@@ -3,12 +3,11 @@ package com.fjhx.purchase.entity.subscribe.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
-import java.util.Date;
-import java.util.List;
-
 import lombok.Getter;
 import lombok.Setter;
-import org.springframework.security.core.authority.AuthorityUtils;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -79,12 +78,8 @@ public class Subscribe extends BasePo {
     private Integer delFlag;
 
     /**
-     * 申购明细列表
+     * 维多利亚扩展json
      */
-    @TableField(exist = false)
-    private List<SubscribeDetail> subscribeDetailList;
-
-    /**维多利亚扩展json*/
     private String victoriatouristJson;
 
     /**
@@ -92,4 +87,15 @@ public class Subscribe extends BasePo {
      */
     private Long flowId;
 
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 申购明细列表
+     */
+    @TableField(exist = false)
+    private List<SubscribeDetail> subscribeDetailList;
+
 }

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -96,4 +96,10 @@ public class SubscribeDetailVo extends SubscribeDetail {
      * 产品类型
      */
     private String type;
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
 }

+ 30 - 21
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -1,11 +1,9 @@
 package com.fjhx.purchase.flow;
 
-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.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.service.coding.CodingRuleService;
@@ -16,7 +14,9 @@ import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -34,35 +34,39 @@ public class SubscribeFlow extends FlowDelegate {
     @Autowired
     private CodingRuleService codingRuleService;
 
+    @Autowired
+    private SubscribeService subscribeService;
+
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+
     @Override
     public String getFlowKey() {
         return "subscribe_flow";
     }
 
-
     /**
      * 发起流程
-     * @param flowId 流程ID
+     *
+     * @param flowId     流程ID
      * @param submitData 申购数据
-     * @return
+     * @return 业务id
      */
     @Override
     public Long start(Long flowId, JSONObject submitData) {
-        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
-        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+
         Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
-//        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
         subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(),null));
         subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
         subscribe.setFlowId(flowId);
         subscribeService.save(subscribe);
+
         List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
         if(CollectionUtils.isNotEmpty(SubscribeDetails)){
-            for(SubscribeDetail s : SubscribeDetails){
-                s.setSubscribeId(subscribe.getId());
-            }
+            SubscribeDetails.forEach(item -> item.setSubscribeId(subscribe.getId()));
             subscribeDetailService.saveBatch(SubscribeDetails);
         }
+
         return subscribe.getId();
     }
 
@@ -74,21 +78,26 @@ public class SubscribeFlow extends FlowDelegate {
      */
     @Override
     public void end(Long flowId, Long businessId, JSONObject submitData) {
-        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
-        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
-        //通过业务ID查询申购数据
+
+        // 通过业务ID查询申购数据
         Subscribe subscribe = subscribeService.getById(businessId);
-        if(ObjectUtils.isEmpty(subscribe)){
+        if (ObjectUtils.isEmpty(subscribe)) {
             throw new ServiceException("申购单不存在");
         }
-        //修改申购状态为审批通过
+
+        // 修改申购状态为审批通过
         subscribe.setSubcribeStatus(SubscribeStatusEnum.PASS.getKey());
         subscribe.setApprovedDate(new Date());
         subscribeService.updateById(subscribe);
-        //修改申购明细为待采购
-        SubscribeDetail detail = new SubscribeDetail();
-        detail.setStatus(SubscribeDetailStatusEnum.PAID_AMOUNT.getKey());
-        subscribeDetailService.update(detail,Wrappers.<SubscribeDetail>query()
-                .lambda().eq(SubscribeDetail::getSubscribeId,subscribe.getId()));
+
+        // 修改申购明细为待采购
+        subscribeDetailService.update(q -> q
+                .eq(SubscribeDetail::getSubscribeId, subscribe.getId())
+                .set(SubscribeDetail::getStatus, SubscribeDetailStatusEnum.PAID_AMOUNT.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
     }
+
 }

+ 28 - 33
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.purchase.service.subscribe.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
@@ -70,42 +71,38 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
     @Override
     public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
         IWrapper<SubscribeDetail> wrapper = getWrapper();
-        //申购单号
-        wrapper.like(ObjectUtil.isNotEmpty(dto.getCode()),"t2.code",dto.getCode());
-
-        //申购时间
-        wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginTime()),"t2.create_time",dto.getBeginTime());
-        wrapper.ge(ObjectUtil.isNotEmpty(dto.getEndTime()),"t2.create_time",dto.getEndTime());
-        wrapper.ge(ObjectUtil.isNotEmpty(dto.getSubscribeStatus()),"t2.subcribe_status",dto.getSubscribeStatus());
-
+        // 申购单号
+        wrapper.like("t2", Subscribe::getCode, dto.getCode());
+        // 申购时间
+        wrapper.between("t2", Subscribe::getCreateTime, dto.getBeginTime(), dto.getEndTime());
+        // 申购状态
+        wrapper.ge("t2", Subscribe::getSubcribeStatus, dto.getSubscribeStatus());
+        // 关键字
+        wrapper.like("t2", Subscribe::getCode, dto.getKeyword());
+        // 状态
         if (ObjectUtil.isNotEmpty(dto.getStatus())) {
             wrapper.in("t1", SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
         }
 
         // 如果类型存在带入类型查询
-        List<ProductInfoVo> productList = productInfoService.getListByProductType(dto.getProductType(),
-                                                                dto.getDefinition(),
-                                                                dto.getProductName(),
-                                                                dto.getProductCode()
-        );
+        List<ProductInfoVo> productList = productInfoService.getListByProductType(
+                dto.getProductType(), dto.getDefinition(), dto.getProductName(), dto.getProductCode());
         if (ObjectUtil.isEmpty(productList)) {
             return new Page<>();
         }
         List<Long> productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
         wrapper.in("t1", SubscribeDetail::getBussinessId, productIds);
-        wrapper.like("t2", Subscribe::getCode, dto.getKeyword());
 
         // 维多利亚扩展根据到货仓库id过滤
         wrapper.eq("json_unquote(t2.victoriatourist_json -> '$.receiptWarehouseId')", dto.getReceiptWarehouseId());
-        if(ObjectUtil.isNotEmpty(dto.getDeptId())) {
-            wrapper.eq( "json_unquote(pi.victoriatourist_json -> '$.deptId')", dto.getDeptId().toString());
+        if (ObjectUtil.isNotEmpty(dto.getDeptId())) {
+            wrapper.eq("json_unquote(pi.victoriatourist_json -> '$.deptId')", dto.getDeptId().toString());
         }
-        //待采购过滤掉指定状态 例如不要 99 作废
-        if (ObjectUtil.isNotEmpty(dto.getNeStatus())) {
+
+        // 待采购过滤掉指定状态 例如不要 99 作废
+        if (StrUtil.isNotBlank(dto.getNeStatus())) {
             wrapper.notIn("t1", SubscribeDetail::getStatus, dto.getNeStatus().split(","));
         }
-
-
         wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
 
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
@@ -115,6 +112,7 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
             return page;
         }
 
+        // 赋值产品信息
         for (SubscribeDetailVo s : list) {
             Map<Long, ProductInfoVo> productMap = productList.stream().collect(Collectors.toMap(ProductInfoVo::getId, Function.identity()));
             ProductInfoVo productInfo = productMap.get(s.getBussinessId());
@@ -131,21 +129,18 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
             s.setDeptId(json.getLong("deptId"));
         }
 
+        // 赋值采购数量
         List<Long> subscribeDetailIds = list.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
-        if (ObjectUtil.isNotEmpty(subscribeDetailIds)) {
-            List<PurchaseDetail> purchaseDetailsList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getSubscribeDetailId, subscribeDetailIds));
-            Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
-            for (SubscribeDetailVo subscribeDetailVo : list) {
-                List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());
-                if (ObjectUtil.isEmpty(purchaseDetails)) {
-                    subscribeDetailVo.setPurchaseCount(BigDecimal.ZERO);
-                    continue;
-                }
-                BigDecimal count = purchaseDetails.stream()
-                        .map(PurchaseDetail::getCount)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
-                subscribeDetailVo.setPurchaseCount(count);
+        List<PurchaseDetail> purchaseDetailsList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getSubscribeDetailId, subscribeDetailIds));
+        Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
+        for (SubscribeDetailVo subscribeDetailVo : list) {
+            List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());
+            if (ObjectUtil.isEmpty(purchaseDetails)) {
+                subscribeDetailVo.setPurchaseCount(BigDecimal.ZERO);
+                continue;
             }
+            BigDecimal count = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            subscribeDetailVo.setPurchaseCount(count);
         }
 
         return page;

+ 7 - 1
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java

@@ -163,7 +163,13 @@ public class ContractProductVo extends ContractProduct {
     private Long supplyId;
 
     /**
-     *样品单表ID
+     * 样品单表ID
      */
     private Long sampleId;
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
 }

+ 23 - 18
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -76,28 +76,33 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> getPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1", ContractProduct::getCreateTime);
-        wrapper.between("t2", Contract::getStatus, FlowStatusEnum.PASS.getKey(),FlowStatusEnum.CANCELLATION.getKey()-1);
-        wrapper.gt("t1",ContractProduct::getExpendQuantity,BigDecimal.ZERO);
-        if(StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.keyword(dto.getKeyword(),new SqlField("t2.`code`"),new SqlField("t2.`user_name`"));
+        wrapper.between("t2", Contract::getStatus, FlowStatusEnum.PASS.getKey(), FlowStatusEnum.CANCELLATION.getKey() - 1);
+        wrapper.gt("t1", ContractProduct::getExpendQuantity, BigDecimal.ZERO);
+        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());
-            });
+
+        if (list.size() == 0) {
+            return page;
         }
+
+        // 赋值产品属性
+        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;
     }
 

+ 21 - 12
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -1,21 +1,26 @@
 <?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="com.fjhx.sale.mapper.contract.ContractProductMapper">
+
     <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
-        SELECT
-            t1.id,
-            t1.contract_id,
-            t1.product_id,
-            t2.`code` AS contractCode,
-            t2.user_name AS userName,
-            t2.version AS contractVersion,
-            t1.expend_quantity AS 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
+        SELECT t1.id,
+               t1.contract_id,
+               t1.product_id,
+               t2.`code`                                                                                            AS contractCode,
+               t2.user_name                                                                                         AS userName,
+               t2.version                                                                                           AS contractVersion,
+               t1.expend_quantity                                                                                   AS expendQuantity,
+               (SELECT create_time
+                FROM claim_contract
+                WHERE contract_id = t2.id
+                ORDER BY create_time DESC
+                LIMIT 1)                                                                                            AS claimTime,
+               t2.corporation_id                                                                                    as corporationId
+        FROM contract_product t1
+                 LEFT JOIN contract t2 ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
     </select>
+
     <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
             *
@@ -71,6 +76,7 @@
         ) t1
             ${ew.customSqlSegment}
     </select>
+
     <select id="getEHSDQualityPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
             *
@@ -128,6 +134,7 @@
             ) t1
             ${ew.customSqlSegment}
     </select>
+
     <select id="getListByIds" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
             t1.id,
@@ -171,6 +178,7 @@
             </foreach>
         </if>
     </select>
+
     <select id="contractHandoverPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
             t1.create_time AS ct,
@@ -198,4 +206,5 @@
             t2.id = t3.business_id
         ${ew.customSqlSegment}
     </select>
+
 </mapper>