瀏覽代碼

采购---申购流程模块

caozj 2 年之前
父節點
當前提交
ab06a68c12
共有 28 個文件被更改,包括 457 次插入189 次删除
  1. 5 0
      hx-admin/pom.xml
  2. 4 0
      hx-admin/src/main/resources/application-dev.yml
  3. 2 0
      hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java
  4. 3 0
      hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductInfoVo.java
  5. 16 0
      hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java
  6. 16 0
      hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java
  7. 22 0
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  8. 28 0
      hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml
  9. 7 3
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java
  10. 3 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java
  11. 0 71
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeFlow.java
  12. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java
  13. 6 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeSelectDto.java
  14. 52 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeDetailStatusEnum.java
  15. 50 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeStatusEnum.java
  16. 4 16
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java
  17. 32 2
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java
  18. 19 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  19. 1 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeVo.java
  20. 36 4
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java
  21. 0 26
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeFlowService.java
  22. 2 2
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java
  23. 55 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  24. 0 38
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeFlowServiceImpl.java
  25. 69 7
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java
  26. 9 15
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml
  27. 1 4
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeMapper.xml
  28. 6 0
      pom.xml

+ 5 - 0
hx-admin/pom.xml

@@ -54,6 +54,11 @@
             <artifactId>hx-customer</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-purchase</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 4 - 0
hx-admin/src/main/resources/application-dev.yml

@@ -38,6 +38,10 @@ spring:
                     url: jdbc:mysql://36.134.91.96:17330/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: fjhx2012mysql
                     password: 3PN-Mzn#vnP&q6d
+                purchase:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
 
     # redis 配置
     redis:

+ 2 - 0
hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java

@@ -16,5 +16,7 @@ public interface SourceConstant {
 
     String CUSTOMER = "customer";
 
+    String PURCHASE = "purchase";
+
     String BASE = "base";
 }

+ 3 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductInfoVo.java

@@ -1,5 +1,6 @@
 package com.fjhx.item.entity.product.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,4 +15,6 @@ import lombok.Setter;
 @Setter
 public class ProductInfoVo extends ProductInfo {
 
+    @TableField(exist = false)
+    private String classifyName;
 }

+ 16 - 0
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java

@@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.ruoyi.common.annotation.TenantIgnore;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
+
+import java.util.List;
 
 
 /**
@@ -23,4 +27,16 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
      */
     Page<ProductInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);
 
+    /**
+     * 根据产品IDS获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductIds(@Param("productIds") List<Long> productIds);
+
+    /**
+     * 根据产品类型获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductType(@Param("productType") Integer productType);
+
 }

+ 16 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -6,6 +6,9 @@ import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.ruoyi.common.core.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -43,4 +46,17 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      */
     void delete(Long id);
 
+    /**
+     * 根据产品IDS获取产品
+     * @param productIds
+     * @return
+     */
+    List<ProductInfoVo> getListByProductIds(List<Long> productIds);
+
+    /**
+     * 根据产品类型获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductType(Integer productType);
+
 }

+ 22 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -18,6 +18,8 @@ import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -83,4 +85,24 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         ObsFileUtil.removeFile(id);
     }
 
+    /**
+     * 根据产品IDS获取产品
+     * @param productIds
+     * @return
+     */
+    @Override
+    public List<ProductInfoVo> getListByProductIds(List<Long> productIds) {
+        return baseMapper.getListByProductIds(productIds);
+    }
+
+    /**
+     * 根据产品类型获取产品
+     * @param productType
+     * @return
+     */
+    @Override
+    public List<ProductInfoVo> getListByProductType(Integer productType) {
+        return baseMapper.getListByProductType(productType);
+    }
+
 }

+ 28 - 0
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -19,4 +19,32 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getListByProductIds" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
+        SELECT
+            t1.*,
+            t2.`name` AS classifyName
+        FROM
+            product_info t1
+        LEFT JOIN product_classify t2 ON t1.product_classify_id = t2.id
+        <where>
+            <if test="productIds neq null and productIds.size() > 0">
+                <foreach collection="productIds" item="productId" open="t1.id IN (" separator="," close=")">
+                    #{productId}
+                </foreach>
+            </if>
+        </where>
+    </select>
+    <select id="getListByProductType" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
+        SELECT
+            t1.*,
+            t2.`name` AS classifyName
+        FROM
+            product_info t1
+        LEFT JOIN product_classify t2 ON t1.product_classify_id = t2.id
+        <where>
+            <if test="productType neq null ">
+               t1.type = #{productType}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 7 - 3
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java

@@ -1,5 +1,8 @@
 package com.fjhx.purchase.controller.subscribe;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
@@ -18,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @author 
  * @since 2023-04-03
  */
+@DS(SourceConstant.PURCHASE)
 @RestController
 @RequestMapping("/subscribe")
 public class SubscribeController {
@@ -37,7 +41,7 @@ public class SubscribeController {
      * 申购单明细
      */
     @PostMapping("/detail")
-    public SubscribeVo detail(@RequestBody BaseSelectDto dto) {
+    public Subscribe detail(@RequestBody BaseSelectDto dto) {
         return subscribeService.detail(dto.getId());
     }
 
@@ -45,8 +49,8 @@ public class SubscribeController {
      * 申购单新增
      */
     @PostMapping("/add")
-    public void add(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.add(subscribeDto);
+    public void add(@RequestBody Subscribe subscribe) {
+        subscribeService.add(subscribe);
     }
 
     /**

+ 3 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java

@@ -1,5 +1,7 @@
 package com.fjhx.purchase.controller.subscribe;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
@@ -18,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @author 
  * @since 2023-04-03
  */
+@DS(SourceConstant.PURCHASE)
 @RestController
 @RequestMapping("/subscribeDetail")
 public class SubscribeDetailController {

+ 0 - 71
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeFlow.java

@@ -1,71 +0,0 @@
-package com.fjhx.purchase.controller.subscribe;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.fjhx.purchase.service.subscribe.SubscribeService;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-/**
- * <p>
- * 申购单流程 前端控制器
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-@RestController
-@RequestMapping("/subscribe/flow")
-public class SubscribeFlow {
-
-    @Autowired
-    private SubscribeService subscribeService;
-
-    /**
-     * 申购单分页
-     */
-    @PostMapping("/page")
-    public Page<SubscribeVo> page(@RequestBody SubscribeSelectDto dto) {
-        return subscribeService.getPage(dto);
-    }
-
-    /**
-     * 申购单明细
-     */
-    @PostMapping("/detail")
-    public SubscribeVo detail(@RequestBody BaseSelectDto dto) {
-        return subscribeService.detail(dto.getId());
-    }
-
-    /**
-     * 申购单新增
-     */
-    @PostMapping("/add")
-    public void add(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.add(subscribeDto);
-    }
-
-    /**
-     * 申购单编辑
-     */
-    @PostMapping("/edit")
-    public void edit(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.edit(subscribeDto);
-    }
-
-    /**
-     * 申购单删除
-     */
-    @PostMapping("/delete")
-    public void delete(@RequestBody BaseSelectDto dto) {
-        subscribeService.delete(dto.getId());
-    }
-
-}

+ 9 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java

@@ -14,4 +14,13 @@ import lombok.Setter;
 @Setter
 public class SubscribeDetailSelectDto extends BaseSelectDto {
 
+    /**
+     * 产品类型
+     */
+    private Integer productType;
+
+    /**
+     * 状态
+     */
+    private String status;
 }

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeSelectDto.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,4 +15,9 @@ import lombok.Setter;
 @Setter
 public class SubscribeSelectDto extends BaseSelectDto {
 
+    /**
+     * 货品类型
+     */
+    @TableField(exist = false)
+    private Integer productType;
 }

+ 52 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeDetailStatusEnum.java

@@ -0,0 +1,52 @@
+package com.fjhx.purchase.entity.subscribe.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 申购状态枚举
+ */
+public enum SubscribeDetailStatusEnum {
+    UNDER_REVIEW(10, "审批中"),
+    PAID_AMOUNT(15,"待采购"),
+    LITT_PAID_AMOUNT(30,"部分采购"),
+    PURCHASED(20,"已采购"),
+    CENCELLATION(99,"已作废")
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SubscribeDetailStatusEnum(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 (SubscribeDetailStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 50 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeStatusEnum.java

@@ -0,0 +1,50 @@
+package com.fjhx.purchase.entity.subscribe.enums;
+
+import org.apache.commons.collections4.MapUtils;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 申购状态枚举
+ */
+public enum SubscribeStatusEnum {
+    DRAFT(0, "草稿"),
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"通过"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SubscribeStatusEnum(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 (SubscribeStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 4 - 16
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java

@@ -1,5 +1,6 @@
 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;
@@ -63,27 +64,14 @@ public class Subscribe extends BasePo {
     private String processInstanceId;
 
     /**
-     * 下个节点名称
-     */
-    private String processInstanceName;
-
-    /**
-     * 下个节点处理人id
-     */
-    private String processInstanceUserId;
-
-    /**
-     * 下个节点处理人名称
-     */
-    private String processInstanceUserName;
-
-    /**
      * 是否删除
      */
-    private Integer isDelete;
+    private Integer delFlag;
 
     /**
      * 申购明细列表
      */
+    @TableField(exist = false)
     private List<SubscribeDetail> subscribeDetailList;
+
 }

+ 32 - 2
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.po;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.util.Date;
@@ -22,7 +23,7 @@ public class SubscribeDetail extends BasePo {
     /**
      * 关联ID  产品ID/货品ID
      */
-    private String bussinessId;
+    private Long bussinessId;
 
     /**
      * 申购单ID
@@ -52,6 +53,35 @@ public class SubscribeDetail extends BasePo {
     /**
      * 是否删除
      */
-    private Integer isDelete;
+    private Integer delFlag;
 
+    /**
+     * 货品类型
+     */
+    @TableField(exist = false)
+    private Integer productType;
+
+    /**
+     * 所属分类
+     */
+    @TableField(exist = false)
+    private String productCategory;
+
+    /**
+     * 货品编码
+     */
+    @TableField(exist = false)
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    @TableField(exist = false)
+    private String productName;
+
+    /**
+     * 单位
+     */
+    @TableField(exist = false)
+    private String productUnit;
 }

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

@@ -14,4 +14,23 @@ import lombok.Setter;
 @Setter
 public class SubscribeDetailVo extends SubscribeDetail {
 
+    /**
+     * 申购单号
+     */
+    private String subscribeCode;
+
+    /**
+     * 申购事由
+     */
+    private String subscribeContent;
+
+    /**
+     * 申购时间
+     */
+    private String subcribeTime;
+
+    /**
+     * 申购人
+     */
+    private String subcribeName;
 }

+ 1 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeVo.java

@@ -14,4 +14,5 @@ import lombok.Setter;
 @Setter
 public class SubscribeVo extends Subscribe {
 
+
 }

+ 36 - 4
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -3,16 +3,20 @@ package com.fjhx.purchase.flow;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
 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.fjhx.purchase.util.code.CodeEnum;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.obs.services.internal.ServiceException;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,12 +32,19 @@ public class SubscribeFlow extends FlowDelegate {
     }
 
 
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 申购数据
+     * @return
+     */
     @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.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
         subscribeService.save(subscribe);
         List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
         if(CollectionUtils.isNotEmpty(SubscribeDetails)){
@@ -45,8 +56,29 @@ public class SubscribeFlow extends FlowDelegate {
         return subscribe.getId();
     }
 
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
     @Override
-    public void end(Long aLong, Long aLong1, JSONObject jsonObject) {
-
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
+        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+        //通过业务ID查询申购数据
+        Subscribe subscribe = subscribeService.getById(businessId);
+        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()));
     }
 }

+ 0 - 26
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeFlowService.java

@@ -1,26 +0,0 @@
-package com.fjhx.purchase.service.subscribe;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.po.Subscribe;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.ruoyi.common.core.service.BaseService;
-
-
-/**
- * <p>
- * 申购单 服务类
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-public interface SubscribeFlowService  {
-
-    /**
-     * 发起流程
-     * @param subscribe
-     */
-    void start(Subscribe subscribe);
-}

+ 2 - 2
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java

@@ -26,12 +26,12 @@ public interface SubscribeService extends BaseService<Subscribe> {
     /**
      * 申购单明细
      */
-    SubscribeVo detail(Long id);
+    Subscribe detail(Long id);
 
     /**
      * 申购单新增
      */
-    void add(SubscribeDto subscribeDto);
+    void add(Subscribe subscribe);
 
     /**
      * 申购单编辑

+ 55 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -1,9 +1,17 @@
 package com.fjhx.purchase.service.subscribe.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
@@ -12,6 +20,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import java.util.*;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -24,11 +35,54 @@ import cn.hutool.core.bean.BeanUtil;
 @Service
 public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMapper, SubscribeDetail> implements SubscribeDetailService {
 
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    /**
+     * 分页
+     * @param dto
+     * @return
+     */
     @Override
     public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
+        Map<Long,List<ProductInfoVo>> productMap;
+        List<Long> productIds = new ArrayList<>();
         IWrapper<SubscribeDetail> wrapper = getWrapper();
-        wrapper.orderByDesc("sd", SubscribeDetail::getId);
+        //搜索条件-----当产品数据量多得情况下会影响查询得速度。超过1000条mybatisplus在in查询得时候会报错
+        if(ObjectUtil.isNotEmpty(dto.getProductType())){//如果类型存在带入类型查询
+            List<ProductInfoVo> productList = productInfoService.getListByProductType(dto.getProductType());
+            if(CollectionUtils.isEmpty(productList)){
+                return new Page<>();
+            }else{
+                productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
+                productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
+            }
+        }else{//不存在查所有
+            List<ProductInfoVo> productList = productInfoService.getListByProductType(null);
+            productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
+        }
+        if(ObjectUtil.isNotEmpty(dto.getStatus())){
+            wrapper.in("t1",SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
+        }
+        if(CollectionUtils.isNotEmpty(productIds)){
+            wrapper.in("t1",SubscribeDetail::getBussinessId,productIds);
+        }
+        wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<SubscribeDetailVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)&&MapUtils.isNotEmpty(productMap)){
+            for(SubscribeDetailVo s:list){
+                List<ProductInfoVo> productInfos = productMap.getOrDefault(s.getBussinessId(), null);
+                if(ObjectUtil.isNotEmpty(productInfos)){
+                    ProductInfoVo vo = productInfos.get(0);
+                    s.setProductCode(vo.getCode());
+                    s.setProductName(vo.getName());
+                    s.setProductType(vo.getType());
+                    s.setProductCategory(vo.getClassifyName());
+                    s.setProductUnit(vo.getUnit());
+                }
+            }
+        }
         return page;
     }
 

+ 0 - 38
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeFlowServiceImpl.java

@@ -1,38 +0,0 @@
-package com.fjhx.purchase.service.subscribe.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.po.Subscribe;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.fjhx.purchase.mapper.subscribe.SubscribeMapper;
-import com.fjhx.purchase.service.subscribe.SubscribeFlowService;
-import com.fjhx.purchase.service.subscribe.SubscribeService;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import org.springframework.stereotype.Service;
-
-
-/**
- * <p>
- * 申购单 服务实现类
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-@Service
-public class SubscribeFlowServiceImpl implements SubscribeFlowService {
-
-    /**
-     * 发起审批
-     * @param subscribe
-     */
-    @Override
-    public void start(Subscribe subscribe) {
-
-    }
-}

+ 69 - 7
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -1,16 +1,31 @@
 package com.fjhx.purchase.service.subscribe.impl;
 
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.subscribe.SubscribeMapper;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -24,6 +39,12 @@ import cn.hutool.core.bean.BeanUtil;
 @Service
 public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe> implements SubscribeService {
 
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
     @Override
     public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
         IWrapper<Subscribe> wrapper = getWrapper();
@@ -32,16 +53,57 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
         return page;
     }
 
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
     @Override
-    public SubscribeVo detail(Long id) {
-        Subscribe Subscribe = this.getById(id);
-        SubscribeVo result = BeanUtil.toBean(Subscribe, SubscribeVo.class);
-        return result;
+    public Subscribe detail(Long id) {
+        if(ObjectUtils.isEmpty(id)){
+            throw new ServiceException("参数异常");
+        }
+        Subscribe subscribe = this.getById(id);
+        if(ObjectUtils.isEmpty(subscribe)){
+            throw new ServiceException("数据不存在");
+        }
+        //处理申购产品
+        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(
+                Wrappers.<SubscribeDetail>query().lambda()
+                        .eq(SubscribeDetail::getSubscribeId,id));
+        if(CollectionUtils.isNotEmpty(subscribeDetailList)){
+            //根据申购businessId取出所有产品
+            List<Long> productIds = subscribeDetailList.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
+            List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
+            Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
+            for(SubscribeDetail s:subscribeDetailList){
+                if(MapUtils.isNotEmpty(productMap)){
+                    ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
+                    s.setProductCategory(p.getClassifyName());
+                    s.setProductCode(p.getCode());
+                    s.setProductUnit(p.getUnit());
+                    s.setProductType(p.getType());
+                    s.setProductName(p.getName());
+                }
+            }
+        }
+        subscribe.setSubscribeDetailList(subscribeDetailList);
+        return subscribe;
     }
 
     @Override
-    public void add(SubscribeDto subscribeDto) {
-        this.save(subscribeDto);
+    public void add(Subscribe subscribe) {
+        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
+        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribeService.save(subscribe);
+        List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
+        if(CollectionUtils.isNotEmpty(SubscribeDetails)){
+            for(SubscribeDetail s : SubscribeDetails){
+                s.setSubscribeId(subscribe.getId());
+            }
+            subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
+        }
     }
 
     @Override

+ 9 - 15
hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml

@@ -2,21 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper">
     <select id="getPage" resultType="com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo">
-        select
-            sd.id,
-            sd.code,
-            sd.bussiness_id,
-            sd.subscribe_id,
-            sd.count,
-            sd.content,
-            sd.status,
-            sd.remark,
-            sd.is_delete,
-            sd.create_user,
-            sd.create_time,
-            sd.update_user,
-            sd.update_time
-        from subscribe_detail sd
+        SELECT
+            t1.*,
+            t2.`code` AS subscribeCode,
+            t2.subcribe_content AS subscribeContent,
+            t2.subcribe_time AS subcribeTime,
+            t2.subcribe_name AS subcribeName
+        FROM
+            subscribe_detail t1
+        LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id
             ${ew.customSqlSegment}
     </select>
 

+ 1 - 4
hx-purchase/src/main/resources/mapper/subscribe/SubscribeMapper.xml

@@ -12,10 +12,7 @@
             s.subcribe_status,
             s.approved_date,
             s.process_instance_id,
-            s.process_instance_name,
-            s.process_instance_user_id,
-            s.process_instance_user_name,
-            s.is_delete,
+            s.del_flag,
             s.create_user,
             s.create_time,
             s.update_user,

+ 6 - 0
pom.xml

@@ -113,6 +113,12 @@
                 <artifactId>hx-customer</artifactId>
                 <version>${hx.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>hx-purchase</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>