caozj 2 жил өмнө
parent
commit
6d950a8d29
30 өөрчлөгдсөн 973 нэмэгдсэн , 8 устгасан
  1. 69 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java
  2. 68 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseDetailController.java
  3. 4 2
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java
  4. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailDto.java
  5. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailSelectDto.java
  6. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java
  7. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseSelectDto.java
  8. 50 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDetailStatusEnum.java
  9. 51 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseStatusEnum.java
  10. 75 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/Purchase.java
  11. 54 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java
  12. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  13. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java
  14. 7 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java
  15. 12 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  16. 90 0
      hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java
  17. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java
  18. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseMapper.java
  19. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/subscribe/SubscribeDetailMapper.java
  20. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java
  21. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java
  22. 57 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java
  23. 82 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  24. 3 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeDetailService.java
  25. 28 4
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  26. 1 0
      hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java
  27. 22 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml
  28. 25 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml
  29. 19 1
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml
  30. 1 0
      pom.xml

+ 69 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java

@@ -0,0 +1,69 @@
+package com.fjhx.purchase.controller.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 采购 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/purchase")
+public class PurchaseController {
+
+    @Autowired
+    private PurchaseService purchaseService;
+
+    /**
+     * 采购分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseVo> page(@RequestBody PurchaseSelectDto dto) {
+        return purchaseService.getPage(dto);
+    }
+
+    /**
+     * 采购明细
+     */
+    @PostMapping("/detail")
+    public PurchaseVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseService.detail(dto.getId());
+    }
+
+    /**
+     * 采购新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody Purchase purchase) {
+        purchaseService.add(purchase);
+    }
+
+    /**
+     * 采购编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody PurchaseDto purchaseDto) {
+        purchaseService.edit(purchaseDto);
+    }
+
+    /**
+     * 采购删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        purchaseService.delete(dto.getId());
+    }
+
+}

+ 68 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseDetailController.java

@@ -0,0 +1,68 @@
+package com.fjhx.purchase.controller.purchase;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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 com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 申购单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/purchaseDetail")
+public class PurchaseDetailController {
+
+    @Autowired
+    private PurchaseDetailService purchaseDetailService;
+
+    /**
+     * 申购单分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseDetailVo> page(@RequestBody PurchaseDetailSelectDto dto) {
+        return purchaseDetailService.getPage(dto);
+    }
+
+    /**
+     * 申购单明细
+     */
+    @PostMapping("/detail")
+    public PurchaseDetailVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 申购单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody PurchaseDetailDto purchaseDetailDto) {
+        purchaseDetailService.add(purchaseDetailDto);
+    }
+
+    /**
+     * 申购单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody PurchaseDetailDto purchaseDetailDto) {
+        purchaseDetailService.edit(purchaseDetailDto);
+    }
+
+    /**
+     * 申购单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        purchaseDetailService.delete(dto.getId());
+    }
+
+}

+ 4 - 2
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java

@@ -11,6 +11,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -40,8 +42,8 @@ public class SubscribeDetailController {
      * 申购单明细
      */
     @PostMapping("/detail")
-    public SubscribeDetailVo detail(@RequestBody BaseSelectDto dto) {
-        return subscribeDetailService.detail(dto.getId());
+    public List<SubscribeDetailVo> detail(@RequestBody SubscribeDetailSelectDto dto) {
+        return subscribeDetailService.detail(dto.getIds());
     }
 
     /**

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailDto extends PurchaseDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDto extends Purchase {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseSelectDto extends BaseSelectDto {
+
+}

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

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

+ 51 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseStatusEnum.java

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

+ 75 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/Purchase.java

@@ -0,0 +1,75 @@
+package com.fjhx.purchase.entity.purchase.po;
+
+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;
+
+/**
+ * <p>
+ * 采购
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("purchase")
+public class Purchase extends BasePo {
+
+    /**
+     * 申购明细单ID
+     */
+    private Long subscribeDetailId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 申购人名称
+     */
+    private String purchaseName;
+
+    /**
+     * 申购时间
+     */
+    private Date purchaseTime;
+
+    /**
+     * 采购编码
+     */
+    private String code;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplyId;
+
+    /**
+     * 采购说明
+     */
+    private String purchaseContent;
+
+    /**
+     * 采购状态 0草稿 10、审批中;20、驳回  30、通过
+     */
+    private Integer purchaseStatus;
+
+    /**
+     * 审核通过时间
+     */
+    private Date approvedDate;
+
+    /**
+     * 流程id
+     */
+    private String processInstanceId;
+
+    private List<PurchaseDetail> purchaseDetailList;
+}

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

@@ -0,0 +1,54 @@
+package com.fjhx.purchase.entity.purchase.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 申购单
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("purchase_detail")
+public class PurchaseDetail extends BasePo {
+
+    /**
+     * 关联ID  产品ID/货品ID
+     */
+    private Long bussinessId;
+
+    private Integer subscribeDetailId;
+
+    /**
+     * 申购单ID
+     */
+    private Long purchaseId;
+
+    /**
+     * 申购数量
+     */
+    private Integer count;
+
+    /**
+     * 申购事由
+     */
+    private String content;
+
+    /**
+     * 状态 10、审批中 15:待采购 20、已采购  30、部分采购  40、已采购  99 作废
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.vo;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailVo extends PurchaseDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.vo;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseVo extends Purchase {
+
+}

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

@@ -4,6 +4,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 申购单列表查询入参实体
  *
@@ -23,4 +25,9 @@ public class SubscribeDetailSelectDto extends BaseSelectDto {
      * 状态
      */
     private String status;
+
+    /**
+     * id集合
+     */
+    private List<Long> ids;
 }

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

@@ -4,6 +4,8 @@ import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 申购单列表查询返回值实体
  *
@@ -33,4 +35,14 @@ public class SubscribeDetailVo extends SubscribeDetail {
      * 申购人
      */
     private String subcribeName;
+
+    /**
+     * 申购单ID
+     */
+    private Long subcribeId;
+
+    /**
+     * 采购数量
+     */
+    private String purchaseCount;
 }

+ 90 - 0
hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java

@@ -0,0 +1,90 @@
+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.purchase.enums.PurchaseDetailStatusEnum;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+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.purchase.PurchaseDetailService;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeService;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 采购流程
+ * @Author:caozj
+ * @DATE:2023/4/3 17:38
+ */
+@Component
+public class PurchaseFlow extends FlowDelegate {
+
+    @Override
+    public String getFlowKey() {
+        return "purchase_flow";
+    }
+
+
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 申购数据
+     * @return
+     */
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        Purchase purchase = submitData.toJavaObject(Purchase.class);
+        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.save(purchase);
+        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
+            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
+        }
+        return purchase.getId();
+    }
+
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        //通过业务ID查询申购数据
+        Purchase purchase = purchaseService.getById(businessId);
+        if(ObjectUtils.isEmpty(purchase)){
+            throw new ServiceException("采购单不存在");
+        }
+        //修改申购状态为审批通过
+        purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
+        purchase.setApprovedDate(new Date());
+        purchaseService.updateById(purchase);
+        //修改申购明细为待采购
+        PurchaseDetail detail = new PurchaseDetail();
+        detail.setStatus(PurchaseDetailStatusEnum.PASS.getKey());
+        purchaseDetailService.update(detail,Wrappers.<PurchaseDetail>query()
+                .lambda().eq(PurchaseDetail::getPurchaseId,purchase.getId()));
+    }
+}

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

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 采购单明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseDetailMapper extends BaseMapper<PurchaseDetail> {
+
+    /**
+     * 申购单分页
+     */
+    Page<PurchaseDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseDetail> wrapper);
+
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 采购 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseMapper extends BaseMapper<Purchase> {
+
+    /**
+     * 采购分页
+     */
+    Page<PurchaseVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Purchase> wrapper);
+
+}

+ 9 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/subscribe/SubscribeDetailMapper.java

@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 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 +26,10 @@ public interface SubscribeDetailMapper extends BaseMapper<SubscribeDetail> {
      */
     Page<SubscribeDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SubscribeDetail> wrapper);
 
+    /**
+     * 根据IDS查询明细
+     * @param ids
+     * @return
+     */
+    List<SubscribeDetailVo> getDetail(@Param("ids")List<Long> ids);
 }

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

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+
+
+/**
+ * <p>
+ * 申购单 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseDetailService extends BaseService<PurchaseDetail> {
+
+    /**
+     * 申购单分页
+     */
+    Page<PurchaseDetailVo> getPage(PurchaseDetailSelectDto dto);
+
+    /**
+     * 申购单明细
+     */
+    PurchaseDetailVo detail(Long id);
+
+    /**
+     * 申购单新增
+     */
+    void add(PurchaseDetailDto purchaseDetailDto);
+
+    /**
+     * 申购单编辑
+     */
+    void edit(PurchaseDetailDto purchaseDetailDto);
+
+    /**
+     * 申购单删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+
+
+/**
+ * <p>
+ * 采购 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseService extends BaseService<Purchase> {
+
+    /**
+     * 采购分页
+     */
+    Page<PurchaseVo> getPage(PurchaseSelectDto dto);
+
+    /**
+     * 采购明细
+     */
+    PurchaseVo detail(Long id);
+
+    /**
+     * 采购新增
+     */
+    void add(Purchase purchase);
+
+    /**
+     * 采购编辑
+     */
+    void edit(PurchaseDto purchaseDto);
+
+    /**
+     * 采购删除
+     */
+    void delete(Long id);
+
+}

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

@@ -0,0 +1,57 @@
+package com.fjhx.purchase.service.purchase.impl;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.mapper.purchase.PurchaseDetailMapper;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 采购单明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Service
+public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper, PurchaseDetail> implements PurchaseDetailService {
+
+    @Override
+    public Page<PurchaseDetailVo> getPage(PurchaseDetailSelectDto dto) {
+        IWrapper<PurchaseDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("pd", PurchaseDetail::getId);
+        Page<PurchaseDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public PurchaseDetailVo detail(Long id) {
+        PurchaseDetail PurchaseDetail = this.getById(id);
+        PurchaseDetailVo result = BeanUtil.toBean(PurchaseDetail, PurchaseDetailVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(PurchaseDetailDto purchaseDetailDto) {
+        this.save(purchaseDetailDto);
+    }
+
+    @Override
+    public void edit(PurchaseDetailDto purchaseDetailDto) {
+        this.updateById(purchaseDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 82 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -0,0 +1,82 @@
+package com.fjhx.purchase.service.purchase.impl;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.mapper.purchase.PurchaseMapper;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.util.code.CodeEnum;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 采购 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Service
+public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> implements PurchaseService {
+
+    @Override
+    public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
+        IWrapper<Purchase> wrapper = getWrapper();
+        wrapper.orderByDesc("p", Purchase::getId);
+        Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    @Override
+    public PurchaseVo detail(Long id) {
+        Purchase Purchase = this.getById(id);
+        PurchaseVo result = BeanUtil.toBean(Purchase, PurchaseVo.class);
+        return result;
+    }
+
+    /**
+     * 采购新增
+     * @param purchase
+     */
+    @Override
+    public void add(Purchase purchase) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.save(purchase);
+        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
+            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
+        }
+    }
+
+    @Override
+    public void edit(PurchaseDto purchaseDto) {
+        this.updateById(purchaseDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 3 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeDetailService.java

@@ -7,6 +7,8 @@ import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -26,7 +28,7 @@ public interface SubscribeDetailService extends BaseService<SubscribeDetail> {
     /**
      * 申购单明细
      */
-    SubscribeDetailVo detail(Long id);
+    List<SubscribeDetailVo> detail(List<Long> ids);
 
     /**
      * 申购单新增

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

@@ -10,6 +10,7 @@ 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 com.obs.services.internal.ServiceException;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -86,11 +87,34 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         return page;
     }
 
+    /**
+     * 根据IDS获取明细
+     * @param ids
+     * @return
+     */
     @Override
-    public SubscribeDetailVo detail(Long id) {
-        SubscribeDetail SubscribeDetail = this.getById(id);
-        SubscribeDetailVo result = BeanUtil.toBean(SubscribeDetail, SubscribeDetailVo.class);
-        return result;
+    public List<SubscribeDetailVo> detail(List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            throw new ServiceException("参数异常");
+        }
+        List<SubscribeDetailVo> list = baseMapper.getDetail(ids);
+        if(CollectionUtils.isNotEmpty(list)){
+            //根据申购businessId取出所有产品
+            List<Long> productIds = list.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:list){
+                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());
+                }
+            }
+        }
+        return list;
     }
 
     @Override

+ 1 - 0
hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java

@@ -18,6 +18,7 @@ public enum CodeEnum {
 
     //申购
     SUBSCRIBE("PR", "yyMM-", "code", 3, SubscribeService.class),
+    PURCHASE("PO", "yyMM-", "code", 3, SubscribeService.class),
     ;
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {

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

@@ -0,0 +1,22 @@
+<?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.purchase.mapper.purchase.PurchaseDetailMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
+        select
+            pd.id,
+            pd.bussiness_id,
+            pd.subscribe_detail_id,
+            pd.purchase_id,
+            pd.count,
+            pd.content,
+            pd.status,
+            pd.remark,
+            pd.create_user,
+            pd.create_time,
+            pd.update_user,
+            pd.update_time
+        from purchase_detail pd
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 25 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -0,0 +1,25 @@
+<?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.purchase.mapper.purchase.PurchaseMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseVo">
+        select
+            p.id,
+            p.subscribe_detail_id,
+            p.dept_name,
+            p.purchase_name,
+            p.purchase_time,
+            p.code,
+            p.supply_id,
+            p.purchase_content,
+            p.purchase_status,
+            p.approved_date,
+            p.process_instance_id,
+            p.create_user,
+            p.create_time,
+            p.update_user,
+            p.update_time
+        from purchase p
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 19 - 1
hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml

@@ -7,11 +7,29 @@
             t2.`code` AS subscribeCode,
             t2.subcribe_content AS subscribeContent,
             t2.subcribe_time AS subcribeTime,
-            t2.subcribe_name AS subcribeName
+            t2.subcribe_name AS subcribeName,
+            t2.id AS subcribeId
         FROM
             subscribe_detail t1
         LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getDetail" resultType="com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo">
+        SELECT
+            t1.*,
+            IFNULL( SUM( t2.count ), 0 ) AS purchaseCount
+        FROM
+            subscribe_detail t1
+        LEFT JOIN purchase_detail t2 ON t1.id = t2.subscribe_detail_id
+        <where>
+            <if test="ids neq null and ids.size() > 0">
+                <foreach collection="ids" item="id" open="t1.id IN (" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            t1.id
+    </select>
 </mapper>

+ 1 - 0
pom.xml

@@ -24,6 +24,7 @@
         <module>hx-wms</module>
         <module>hx-common</module>
         <module>hx-oa</module>
+        <module>hx-purchase</module>
     </modules>
 
     <properties>