guarantee-lsq 3 жил өмнө
parent
commit
ca30caeadc
21 өөрчлөгдсөн 1950 нэмэгдсэн , 84 устгасан
  1. 114 0
      platform-dao/src/main/java/com/platform/dao/dto/store/PurchaseStoreFormDTO.java
  2. 108 0
      platform-dao/src/main/java/com/platform/dao/dto/store/PurchaseStoreFormDetailDTO.java
  3. 88 0
      platform-dao/src/main/java/com/platform/dao/entity/store/PurchaseStoreForm.java
  4. 100 0
      platform-dao/src/main/java/com/platform/dao/entity/store/PurchaseStoreFormDetail.java
  5. 27 0
      platform-dao/src/main/java/com/platform/dao/enums/PurchaseStoreFormDetailDelFlagEnum.java
  6. 43 0
      platform-dao/src/main/java/com/platform/dao/enums/PurchaseStoreFormStatusEnum.java
  7. 28 0
      platform-dao/src/main/java/com/platform/dao/mapper/store/PurchaseStoreFormDetailMapper.java
  8. 26 0
      platform-dao/src/main/java/com/platform/dao/mapper/store/PurchaseStoreFormMapper.java
  9. 104 0
      platform-dao/src/main/java/com/platform/dao/vo/export/store/ExportPurchaseStoreFormDetailVO.java
  10. 88 0
      platform-dao/src/main/java/com/platform/dao/vo/export/store/ExportPurchaseStoreFormVO.java
  11. 90 0
      platform-dao/src/main/java/com/platform/dao/vo/query/store/PurchaseStoreFormDetailVO.java
  12. 81 0
      platform-dao/src/main/java/com/platform/dao/vo/query/store/PurchaseStoreFormVO.java
  13. 105 0
      platform-dao/src/main/resources/mapper/store/PurchaseStoreFormDetailMapper.xml
  14. 89 0
      platform-dao/src/main/resources/mapper/store/PurchaseStoreFormMapper.xml
  15. 181 0
      platform-rest/src/main/java/com/platform/rest/controller/store/PurchaseStoreFormController.java
  16. 156 0
      platform-rest/src/main/java/com/platform/rest/controller/store/PurchaseStoreFormDetailController.java
  17. 43 0
      platform-service/src/main/java/com/platform/service/store/PurchaseStoreFormDetailService.java
  18. 53 0
      platform-service/src/main/java/com/platform/service/store/PurchaseStoreFormService.java
  19. 79 84
      platform-service/src/main/java/com/platform/service/store/impl/InStoreFormServiceImpl.java
  20. 127 0
      platform-service/src/main/java/com/platform/service/store/impl/PurchaseStoreFormDetailServiceImpl.java
  21. 220 0
      platform-service/src/main/java/com/platform/service/store/impl/PurchaseStoreFormServiceImpl.java

+ 114 - 0
platform-dao/src/main/java/com/platform/dao/dto/store/PurchaseStoreFormDTO.java

@@ -0,0 +1,114 @@
+package com.platform.dao.dto.store;
+
+import com.platform.common.bean.BaseDTO;
+import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.entity.store.PurchaseStoreFormDetail;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description 采购入库表DTO
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseStoreFormDTO extends BaseDTO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 添加时间开始
+     */
+    private LocalDateTime createdTimeStart;
+    /**
+     * 添加时间结束
+     */
+    private LocalDateTime createdTimeEnd;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 修改时间开始
+     */
+    private LocalDateTime updateTimeStart;
+    /**
+     * 修改时间结束
+     */
+    private LocalDateTime updateTimeEnd;
+    /**
+     * 采购入库单状态
+     */
+    private Integer status;
+    /**
+     * 采购总金额
+     */
+    private BigDecimal totalAmount;
+    /**
+     * 采购备件总数
+     */
+    private BigDecimal totalNum;
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 关键字
+     */
+    private String keyword;
+
+    /**
+     * 仓库ID
+     */
+    private String spareStoreId;
+    /**
+     * 仓库名称
+     */
+    private String spareStoreName;
+
+    /**
+     * 备件ID
+     */
+    private String spareId;
+
+    /**
+     * 备件数目
+     */
+    private BigDecimal num;
+
+    private BigDecimal price;
+
+}

+ 108 - 0
platform-dao/src/main/java/com/platform/dao/dto/store/PurchaseStoreFormDetailDTO.java

@@ -0,0 +1,108 @@
+package com.platform.dao.dto.store;
+
+import com.platform.common.bean.BaseDTO;
+import com.platform.common.validation.group.UpdateGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Transient;
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库单明细DTO
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseStoreFormDetailDTO extends BaseDTO implements Serializable {
+
+    /**
+     * 主键
+     */
+    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 添加时间开始
+     */
+    private LocalDateTime createdTimeStart;
+    /**
+     * 添加时间结束
+     */
+    private LocalDateTime createdTimeEnd;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 修改时间开始
+     */
+    private LocalDateTime updateTimeStart;
+    /**
+     * 修改时间结束
+     */
+    private LocalDateTime updateTimeEnd;
+    /**
+     * 价值
+     */
+    private BigDecimal price;
+    /**
+     * 价值小计
+     */
+    private BigDecimal totalPrice;
+    /**
+     * 数量小计
+     */
+    private BigDecimal num;
+    /**
+     * 采购入库单
+     */
+    private String purchaseStoreFormId;
+    /**
+     * 备件
+     */
+    private String sparePartInfoId;
+    /**
+     * 关键字
+     */
+    private String keyword;
+
+    /**
+     * 是否删除 0 否 1 是
+     */
+    private Integer deleteFlag;
+
+    /**
+     * 前端修改标识 0 no 1 yes
+     */
+    @Transient
+    private Integer updateFlag;
+
+}

+ 88 - 0
platform-dao/src/main/java/com/platform/dao/entity/store/PurchaseStoreForm.java

@@ -0,0 +1,88 @@
+package com.platform.dao.entity.store;
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+import lombok.experimental.Accessors;
+import com.platform.common.bean.DataScope;
+
+import javax.persistence.Transient;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库表实体类
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@Table(name = "t_purchase_store_form")
+public class PurchaseStoreForm implements Serializable {
+
+    /**
+     * 主键
+     */
+    @Id
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 采购入库单状态
+     */
+    private Integer status;
+    /**
+     * 采购总金额
+     */
+    private BigDecimal totalAmount;
+    /**
+     * 采购备件总数
+     */
+    private BigDecimal totalNum;
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 仓库ID
+     */
+    private String spareStoreId;
+    /**
+     * 仓库名称
+     */
+    private String spareStoreName;
+
+    /**
+     * 数据权限
+     */
+    @Transient
+    private DataScope dataScope;
+
+}

+ 100 - 0
platform-dao/src/main/java/com/platform/dao/entity/store/PurchaseStoreFormDetail.java

@@ -0,0 +1,100 @@
+package com.platform.dao.entity.store;
+
+import com.platform.dao.enums.PurchaseStoreFormDetailDelFlagEnum;
+import lombok.Data;
+
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+import lombok.experimental.Accessors;
+import com.platform.common.bean.DataScope;
+
+import javax.persistence.Transient;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库单明细实体类
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@Table(name = "t_purchase_store_form_detail")
+public class PurchaseStoreFormDetail implements Serializable {
+
+    /**
+     * 主键
+     */
+    @Id
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 价值
+     */
+    private BigDecimal price;
+    /**
+     * 价值小计
+     */
+    private BigDecimal totalPrice;
+    /**
+     * 数量小计
+     */
+    private BigDecimal num;
+    /**
+     * 采购入库单
+     */
+    private String purchaseStoreFormId;
+    /**
+     * 备件
+     */
+    private String sparePartInfoId;
+
+    /**
+     * 是否删除 0 否 1 是
+     */
+    private Integer deleteFlag;
+
+    /**
+     * 数据权限
+     */
+    @Transient
+    private DataScope dataScope;
+
+    public PurchaseStoreFormDetail(){
+        this.createdTime = LocalDateTime.now();
+        this.deleteFlag = PurchaseStoreFormDetailDelFlagEnum.NORMAL.getValue();
+    }
+    /**
+     * 前端修改标识 0 no 1 yes
+     */
+    @Transient
+    private Integer updateFlag;
+
+}

+ 27 - 0
platform-dao/src/main/java/com/platform/dao/enums/PurchaseStoreFormDetailDelFlagEnum.java

@@ -0,0 +1,27 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 采购入库单状态
+ * @Author liangshiqian
+ * @Date 2020/05/05
+ * @Version Copyright (c) 2019,安徽阡陌网络科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum PurchaseStoreFormDetailDelFlagEnum {
+
+    /**
+     * 正常
+     */
+    NORMAL(0),
+    /**
+     * 删除
+     */
+    DELETED(1);
+
+    private final Integer value;
+
+}

+ 43 - 0
platform-dao/src/main/java/com/platform/dao/enums/PurchaseStoreFormStatusEnum.java

@@ -0,0 +1,43 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 采购入库单状态
+ * @Author liangshiqian
+ * @Date 2020/05/05
+ * @Version Copyright (c) 2019,安徽阡陌网络科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum PurchaseStoreFormStatusEnum {
+
+    /**
+     * 已创建
+     */
+    CREATED(0),
+    /**
+     * 采购中
+     */
+    PURCHASING(1),
+    /**
+     * 入库中
+     */
+    STORING(2),
+    /**
+     * 已完成
+     */
+    COMPLETED(3),
+    /**
+     * 暂时封存
+     */
+    STASH(4),
+    /**
+     * 入库失败
+     */
+    STORE_FAIL(5);
+
+    private final Integer value;
+
+}

+ 28 - 0
platform-dao/src/main/java/com/platform/dao/mapper/store/PurchaseStoreFormDetailMapper.java

@@ -0,0 +1,28 @@
+package com.platform.dao.mapper.store;
+
+import com.platform.dao.config.MyMapper;
+import com.platform.dao.dto.store.PurchaseStoreFormDetailDTO;
+import com.platform.dao.entity.store.PurchaseStoreFormDetail;
+import com.platform.dao.vo.query.store.PurchaseStoreFormDetailVO;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @Description 采购入库单明细 mapper
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Component
+public interface PurchaseStoreFormDetailMapper extends MyMapper<PurchaseStoreFormDetail> {
+    /**
+     * 分页查询
+     * @param dto
+     * @return
+     */
+    List<PurchaseStoreFormDetailVO> selectList(PurchaseStoreFormDetailDTO dto);
+
+    void updateBatch(List<PurchaseStoreFormDetail> updateDetailList);
+}

+ 26 - 0
platform-dao/src/main/java/com/platform/dao/mapper/store/PurchaseStoreFormMapper.java

@@ -0,0 +1,26 @@
+package com.platform.dao.mapper.store;
+
+import com.platform.dao.dto.store.PurchaseStoreFormDTO;
+import com.platform.dao.config.MyMapper;
+import com.platform.dao.entity.store.PurchaseStoreForm;
+import com.platform.dao.vo.query.store.PurchaseStoreFormVO;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+
+/**
+ * @Description 采购入库表 mapper
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Component
+public interface PurchaseStoreFormMapper extends MyMapper<PurchaseStoreForm> {
+    /**
+     * 分页查询
+     * @param dto
+     * @return
+     */
+    List<PurchaseStoreFormVO> selectList(PurchaseStoreFormDTO dto);
+
+}

+ 104 - 0
platform-dao/src/main/java/com/platform/dao/vo/export/store/ExportPurchaseStoreFormDetailVO.java

@@ -0,0 +1,104 @@
+package com.platform.dao.vo.export.store;
+
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库单明细导出VO
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+public class ExportPurchaseStoreFormDetailVO implements Serializable {
+
+    /**
+   * 主键
+   */
+          @Excel(name = "主键", orderNum = "1")
+      private String id;
+    
+    /**
+   * 采购人ID
+   */
+          @Excel(name = "采购人ID", orderNum = "2")
+      private String createdUserId;
+    
+    /**
+   * 修改人ID
+   */
+          @Excel(name = "修改人ID", orderNum = "3")
+      private String updateUserId;
+    
+    /**
+   * 采购人
+   */
+          @Excel(name = "采购人", orderNum = "4")
+      private String createdUserName;
+    
+    /**
+   * 修改人
+   */
+          @Excel(name = "修改人", orderNum = "5")
+      private String updateUserName;
+    
+    /**
+   * 添加时间
+   */
+          @Excel(name = "添加时间", orderNum = "6")
+      private LocalDateTime createdTime;
+    
+    /**
+   * 修改时间
+   */
+          @Excel(name = "修改时间", orderNum = "7")
+      private LocalDateTime updateTime;
+    
+    /**
+   * 价值
+   */
+          @Excel(name = "价值", orderNum = "8")
+      private BigDecimal price;
+    
+    /**
+   * 价值小计
+   */
+          @Excel(name = "价值小计", orderNum = "9")
+      private BigDecimal totalPrice;
+    
+    /**
+   * 数量小计
+   */
+          @Excel(name = "数量小计", orderNum = "10")
+      private Integer num;
+    
+    /**
+   * 采购入库单
+   */
+          @Excel(name = "采购入库单", orderNum = "11")
+      private String purchaseStoreFormId;
+      /**
+       * 采购入库单 -名称
+       */
+      @Excel(name = "采购入库单", orderNum = "11")
+      private String purchaseStoreFormName;
+    
+    /**
+   * 备件
+   */
+          @Excel(name = "备件", orderNum = "12")
+      private String sparePartInfoId;
+      /**
+       * 备件 -名称
+       */
+      @Excel(name = "备件", orderNum = "12")
+      private String sparePartInfoName;
+    
+  
+}

+ 88 - 0
platform-dao/src/main/java/com/platform/dao/vo/export/store/ExportPurchaseStoreFormVO.java

@@ -0,0 +1,88 @@
+package com.platform.dao.vo.export.store;
+
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库表导出VO
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+public class ExportPurchaseStoreFormVO implements Serializable {
+
+    /**
+   * 主键
+   */
+          @Excel(name = "主键", orderNum = "1")
+      private String id;
+    
+    /**
+   * 采购人ID
+   */
+          @Excel(name = "采购人ID", orderNum = "2")
+      private String createdUserId;
+    
+    /**
+   * 修改人ID
+   */
+          @Excel(name = "修改人ID", orderNum = "3")
+      private String updateUserId;
+    
+    /**
+   * 采购人
+   */
+          @Excel(name = "采购人", orderNum = "4")
+      private String createdUserName;
+    
+    /**
+   * 修改人
+   */
+          @Excel(name = "修改人", orderNum = "5")
+      private String updateUserName;
+    
+    /**
+   * 添加时间
+   */
+          @Excel(name = "添加时间", orderNum = "6")
+      private LocalDateTime createdTime;
+    
+    /**
+   * 修改时间
+   */
+          @Excel(name = "修改时间", orderNum = "7")
+      private LocalDateTime updateTime;
+    
+    /**
+   * 采购入库单状态
+   */
+          @Excel(name = "采购入库单状态", orderNum = "8")
+      private Integer status;
+    
+    /**
+   * 采购总金额
+   */
+          @Excel(name = "采购总金额", orderNum = "9")
+      private BigDecimal totalAmount;
+    
+    /**
+   * 采购备件总数
+   */
+          @Excel(name = "采购备件总数", orderNum = "10")
+      private Integer totalNum;
+    
+    /**
+   * 名称
+   */
+          @Excel(name = "名称", orderNum = "11")
+      private String name;
+    
+  
+}

+ 90 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/store/PurchaseStoreFormDetailVO.java

@@ -0,0 +1,90 @@
+package com.platform.dao.vo.query.store;
+
+import lombok.Data;
+import com.platform.common.bean.BaseVO;
+import com.platform.common.bean.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.math.BigDecimal;
+
+/**
+ * @Description 采购入库单明细VO结果类
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseStoreFormDetailVO extends BaseVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 价值
+     */
+    private BigDecimal price;
+    /**
+     * 价值小计
+     */
+    private BigDecimal totalPrice;
+    /**
+     * 数量小计
+     */
+    private BigDecimal num;
+    /**
+     * 采购入库单
+     */
+    private String purchaseStoreFormId;
+    /**
+     * 采购入库单 -名称
+     */
+    private String purchaseStoreFormName;
+    /**
+     * 备件
+     */
+    private String sparePartInfoId;
+    /**
+     * 备件 -名称
+     */
+    private String sparePartInfoName;
+
+    /**
+     * 是否删除 0 否 1 是
+     */
+    private Integer deleteFlag;
+
+
+}

+ 81 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/store/PurchaseStoreFormVO.java

@@ -0,0 +1,81 @@
+package com.platform.dao.vo.query.store;
+
+import com.platform.common.bean.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Description 采购入库表VO结果类
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseStoreFormVO extends BaseVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 采购人ID
+     */
+    private String createdUserId;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 采购人
+     */
+    private String createdUserName;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 添加时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 采购入库单状态
+     */
+    private Integer status;
+    /**
+     * 采购总金额
+     */
+    private BigDecimal totalAmount;
+    /**
+     * 采购备件总数
+     */
+    private BigDecimal totalNum;
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 仓库ID
+     */
+    private String spareStoreId;
+    /**
+     * 仓库名称
+     */
+    private String spareStoreName;
+
+    private List<PurchaseStoreFormDetailVO> detailList;
+
+
+}

+ 105 - 0
platform-dao/src/main/resources/mapper/store/PurchaseStoreFormDetailMapper.xml

@@ -0,0 +1,105 @@
+<?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.platform.dao.mapper.store.PurchaseStoreFormDetailMapper">
+    <sql id="Base_Column_List">
+                             store.id,
+                                     store.created_user_id,
+                                     store.update_user_id,
+                                     store.created_user_name,
+                                     store.update_user_name,
+                                     store.created_time,
+                                     store.update_time,
+                                     store.price,
+                                     store.total_price,
+                                     store.num,
+                                     store.purchase_store_form_id,
+                                     store.spare_part_info_id,
+                                     store.delete_flag
+                        </sql>
+    <sql id="Ref_Column_List">
+                                                                                                                                                                                                                                                                                                                                                 store.price,
+                                     store.total_price,
+                                     store.num,
+                                     store.purchase_store_form_id,
+                                     store.spare_part_info_id
+                                </sql>
+    <sql id="List_Condition">
+        <if test="id != null and id != ''">
+            and store.id = #{id}
+        </if>
+        <if test="createdUserId != null and createdUserId != ''">
+            and store.created_user_id = #{createdUserId}
+        </if>
+        <if test="updateUserId != null and updateUserId != ''">
+            and store.update_user_id = #{updateUserId}
+        </if>
+        <if test="createdUserName != null and createdUserName != ''">
+            and store.created_user_name = #{createdUserName}
+        </if>
+        <if test="updateUserName != null and updateUserName != ''">
+            and store.update_user_name = #{updateUserName}
+        </if>
+        <if test="createdTimeStart != null">
+            and store.created_time <![CDATA[>=]]>; #{createdTimeStart}
+        </if>
+        <if test="createdTimeEnd != null">
+            and store.created_time <![CDATA[<=]]> #{createdTimeEnd}
+        </if>
+        <if test="createdTime != null">
+            and store.created_time = #{createdTime}
+        </if>
+        <if test="updateTimeStart != null">
+            and store.update_time <![CDATA[>=]]>; #{updateTimeStart}
+        </if>
+        <if test="updateTimeEnd != null">
+            and store.update_time <![CDATA[<=]]> #{updateTimeEnd}
+        </if>
+        <if test="updateTime != null">
+            and store.update_time = #{updateTime}
+        </if>
+        <if test="price != null">
+            and store.price = #{price}
+        </if>
+        <if test="totalPrice != null">
+            and store.total_price = #{totalPrice}
+        </if>
+        <if test="num != null">
+            and store.num = #{num}
+        </if>
+        <if test="purchaseStoreFormId != null and purchaseStoreFormId != ''">
+            and store.purchase_store_form_id = #{purchaseStoreFormId}
+        </if>
+        <if test="sparePartInfoId != null and sparePartInfoId != ''">
+            and store.spare_part_info_id = #{sparePartInfoId}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and store.id like concat(concat('%',#{keyword}),'%')
+        </if>
+        <if test="deleteFlag != null">
+            and store.delete_flag = #{deleteFlag}
+        </if>
+    </sql>
+    <select id="selectList" parameterType="com.platform.dao.dto.store.PurchaseStoreFormDetailDTO"
+            resultType="com.platform.dao.vo.query.store.PurchaseStoreFormDetailVO">
+        select store.*
+        ,t1.name as purchaseStoreFormName
+        ,t2.name as sparePartInfoName
+        from t_purchase_store_form_detail as store
+        join t_purchase_store_form t1 on store.purchase_store_form_id = t1.id
+        join t_spare_part_info t2 on store.spare_part_info_id = t2.id
+        <where>
+            <include refid="List_Condition"/>
+        </where>
+    </select>
+
+    <update id="updateBatch" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            update t_purchase_store_form_detail
+            <set>
+                num = #{item.num},
+                total_price = #{item.totalPrice}
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+</mapper>

+ 89 - 0
platform-dao/src/main/resources/mapper/store/PurchaseStoreFormMapper.xml

@@ -0,0 +1,89 @@
+<?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.platform.dao.mapper.store.PurchaseStoreFormMapper">
+    <sql id="Base_Column_List">
+                             store.id,
+                                     store.created_user_id,
+                                     store.update_user_id,
+                                     store.created_user_name,
+                                     store.update_user_name,
+                                     store.created_time,
+                                     store.update_time,
+                                     store.status,
+                                     store.total_amount,
+                                     store.total_num,
+                                     store.name,
+                                     store.spare_store_id,
+                                     store.spare_store_name
+                        </sql>
+    <sql id="Ref_Column_List">
+                                                                                                                                                                                                                                                                                                                                                 store.status,
+                                     store.total_amount,
+                                     store.total_num,
+                                     store.name
+                                </sql>
+    <sql id="List_Condition">
+        <if test="id != null and id != ''">
+            and store.id = #{id}
+        </if>
+        <if test="createdUserId != null and createdUserId != ''">
+            and store.created_user_id = #{createdUserId}
+        </if>
+        <if test="updateUserId != null and updateUserId != ''">
+            and store.update_user_id = #{updateUserId}
+        </if>
+        <if test="createdUserName != null and createdUserName != ''">
+            and store.created_user_name = #{createdUserName}
+        </if>
+        <if test="updateUserName != null and updateUserName != ''">
+            and store.update_user_name = #{updateUserName}
+        </if>
+        <if test="createdTimeStart != null">
+            and store.created_time <![CDATA[>=]]>; #{createdTimeStart}
+        </if>
+        <if test="createdTimeEnd != null">
+            and store.created_time <![CDATA[<=]]> #{createdTimeEnd}
+        </if>
+        <if test="createdTime != null">
+            and store.created_time = #{createdTime}
+        </if>
+        <if test="updateTimeStart != null">
+            and store.update_time <![CDATA[>=]]>; #{updateTimeStart}
+        </if>
+        <if test="updateTimeEnd != null">
+            and store.update_time <![CDATA[<=]]> #{updateTimeEnd}
+        </if>
+        <if test="updateTime != null">
+            and store.update_time = #{updateTime}
+        </if>
+        <if test="status != null">
+            and store.status = #{status}
+        </if>
+        <if test="totalAmount != null">
+            and store.total_amount = #{totalAmount}
+        </if>
+        <if test="totalNum != null">
+            and store.total_num = #{totalNum}
+        </if>
+        <if test="name != null and name != ''">
+            and store.name = #{name}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and store.id like concat(concat('%',#{keyword}),'%')
+        </if>
+        <if test="spareStoreId != null">
+            and store.spare_store_id = #{spareStoreId}
+        </if>
+        <if test="spareStoreName != null">
+            and store.spare_store_name = #{spareStoreName}
+        </if>
+    </sql>
+    <select id="selectList" parameterType="com.platform.dao.dto.store.PurchaseStoreFormDTO"
+            resultType="com.platform.dao.vo.query.store.PurchaseStoreFormVO">
+        select store.*
+        from t_purchase_store_form as store
+        <where>
+            <include refid="List_Condition"/>
+        </where>
+    </select>
+</mapper>

+ 181 - 0
platform-rest/src/main/java/com/platform/rest/controller/store/PurchaseStoreFormController.java

@@ -0,0 +1,181 @@
+package com.platform.rest.controller.store;
+
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.util.R;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.dto.store.PurchaseStoreFormDTO;
+import com.platform.dao.entity.store.PurchaseStoreForm;
+import com.platform.dao.util.ExcelUtil;
+import com.platform.dao.vo.export.store.ExportPurchaseStoreFormVO;
+import com.platform.dao.vo.query.store.PurchaseStoreFormVO;
+import com.platform.rest.log.annotation.SysLog;
+import com.platform.service.store.PurchaseStoreFormService;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @Description 采购入库表 控制器
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/purchase/store-forms")
+public class PurchaseStoreFormController {
+
+    private final PurchaseStoreFormService purchaseStoreFormService;
+
+    /**
+     * 通过id查询单条记录
+     *
+     * @param id 主键
+     * @return R
+     */
+    @GetMapping("/{id}")
+    public R<PurchaseStoreFormVO> getById(@PathVariable("id") String id) {
+        return new R<>(purchaseStoreFormService.getVOById(id));
+    }
+
+    /**
+     * 新增记录
+     *
+     * @param purchaseStoreFormDTO 采购入库表DTO
+     * @return R
+     */
+    @SysLog("新增采购入库表")
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-add')")
+    public R save(@Validated({AddGroup.class}) @RequestBody PurchaseStoreFormDTO purchaseStoreFormDTO) {
+        return new R<>(purchaseStoreFormService.saveModelByDTO(purchaseStoreFormDTO));
+    }
+
+    /**
+     * 修改记录
+     *
+     * @param purchaseStoreFormDTO 采购入库表DTO
+     * @return R
+     */
+    @SysLog("修改采购入库表")
+    @PutMapping("/{id}")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-edit')")
+    public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PurchaseStoreFormDTO purchaseStoreFormDTO) {
+        purchaseStoreFormService.modModelByDTO(purchaseStoreFormDTO);
+        return new R<>();
+    }
+
+
+    /**
+     * 根据主键 修改select类型值
+     *
+     * @param id
+     * @param status
+     * @return R
+     */
+    @SysLog("修改采购入库表")
+    @PutMapping("/status/{id}")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-edit')")
+    public R updateStatusById(@PathVariable("id") String id, Integer status) {
+        purchaseStoreFormService.updateStatusById(id, status);
+        return new R<>();
+    }
+
+    /**
+     * 通过id删除一条记录
+     *
+     * @param id 主键
+     * @return R
+     */
+    @SysLog("删除采购入库表")
+    @DeleteMapping("/{id}")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-del')")
+    public R removeById(@PathVariable String id) {
+        purchaseStoreFormService.deleteByPrimaryKey(id);
+        return new R<>();
+    }
+
+    /**
+     * 批量记录
+     *
+     * @param ids 主键
+     * @return R
+     */
+    @SysLog("批量删除采购入库表")
+    @DeleteMapping("")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-del')")
+    public R removeIds(@RequestBody List<String> ids) {
+        purchaseStoreFormService.batchDelete(ids);
+        return new R<>();
+    }
+
+    /**
+     * 获取分页
+     *
+     * @param pageNum              当前页码
+     * @param pageSize             每页条数
+     * @param purchaseStoreFormDTO 采购入库表DTO
+     * @return R
+     */
+    @GetMapping("/page")
+    public R<AbstractPageResultBean<PurchaseStoreFormVO>> query(PurchaseStoreFormDTO purchaseStoreFormDTO, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
+        return new R<>(purchaseStoreFormService.selectPageList(purchaseStoreFormDTO, pageNum, pageSize));
+    }
+
+    /**
+     * 获取列表
+     *
+     * @param purchaseStoreFormDTO 采购入库表DTO
+     * @return R
+     */
+    @GetMapping("")
+    public R query(PurchaseStoreFormDTO purchaseStoreFormDTO) {
+        return new R<>(purchaseStoreFormService.getModelListByDTO(purchaseStoreFormDTO));
+    }
+
+    /**
+     * 采购入库表导出
+     *
+     * @param purchaseStoreFormDTO 采购入库表DTO
+     * @return R
+     */
+    @GetMapping("/export")
+    @SysLog("采购入库表导出")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-export')")
+    public void export(HttpServletResponse response, PurchaseStoreFormDTO purchaseStoreFormDTO) {
+        List<PurchaseStoreForm> list = purchaseStoreFormService.getModelListByDTO(purchaseStoreFormDTO);
+        ExcelUtil.exportResponseDict(response, ExportPurchaseStoreFormVO.class, BeanConverterUtil.copyListProperties(list, ExportPurchaseStoreFormVO.class), "采购入库表");
+    }
+
+    /**
+     * 加入采购单
+     * @param purchaseStoreFormDTO
+     * @return
+     */
+    @SysLog("加入采购单表")
+    @PutMapping("/joinForm")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-edit')")
+    public R joinForm(@Validated({UpdateGroup.class}) @RequestBody PurchaseStoreFormDTO purchaseStoreFormDTO) {
+        return purchaseStoreFormService.handleSpareInfo(purchaseStoreFormDTO);
+    }
+
+    /**
+     * 采购单提交入库申请
+     * @param id
+     * @return R
+     */
+    @SysLog("采购单入库申请")
+    @PutMapping("/apply/inStore/{id}")
+    @PreAuthorize("@pms.hasPermission('purchase-store-forms-edit')")
+    public R applyInStore(@PathVariable("id") String id) {
+        purchaseStoreFormService.transferInStoreForm(id);
+        return new R<>();
+    }
+
+}

+ 156 - 0
platform-rest/src/main/java/com/platform/rest/controller/store/PurchaseStoreFormDetailController.java

@@ -0,0 +1,156 @@
+package com.platform.rest.controller.store;
+
+import com.platform.common.util.R;
+import com.platform.dao.dto.store.PurchaseStoreFormDetailDTO;
+import com.platform.dao.entity.store.PurchaseStoreFormDetail;
+import com.platform.service.store.PurchaseStoreFormDetailService;
+import com.platform.dao.util.ExcelUtil;
+import com.platform.dao.vo.export.store.ExportPurchaseStoreFormDetailVO;
+import com.platform.dao.vo.query.store.PurchaseStoreFormDetailVO;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import lombok.AllArgsConstructor;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.rest.log.annotation.SysLog;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @Description 采购入库单明细 控制器
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/purchase/form-details")
+public class PurchaseStoreFormDetailController {
+
+  private final  PurchaseStoreFormDetailService purchaseStoreFormDetailService;
+
+  /**
+   * 通过id查询单条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @GetMapping("/{id}")
+  public R<PurchaseStoreFormDetail> getById(@PathVariable("id") String id){
+      return new R<>(purchaseStoreFormDetailService.getModelById(id));
+  }
+
+  /**
+   * 新增记录
+   *
+   * @param purchaseStoreFormDetailDTO 采购入库单明细DTO
+   * @return R
+   */
+  @SysLog("新增采购入库单明细")
+  @PostMapping
+  //@PreAuthorize("@pms.hasPermission('purchase-form-details-add')")
+  public R save(@Validated({AddGroup.class}) @RequestBody PurchaseStoreFormDetailDTO purchaseStoreFormDetailDTO) {
+      return new R<>(purchaseStoreFormDetailService.saveModelByDTO(purchaseStoreFormDetailDTO));
+  }
+
+  /**
+   * 修改记录
+   *
+   * @param purchaseStoreFormDetailDTO 采购入库单明细DTO
+   * @return R
+   */
+  @SysLog("修改采购入库单明细")
+  @PutMapping("/{id}")
+  //@PreAuthorize("@pms.hasPermission('purchase-form-details-edit')")
+  public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PurchaseStoreFormDetailDTO purchaseStoreFormDetailDTO) {
+      purchaseStoreFormDetailDTO.setId(id);
+      purchaseStoreFormDetailService.modModelByDTO(purchaseStoreFormDetailDTO);
+      return new R<>();
+  }
+
+
+                                                                          
+  /**
+   * 通过id删除一条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @SysLog("删除采购入库单明细")
+  @DeleteMapping("/{id}")
+  //@PreAuthorize("@pms.hasPermission('purchase-form-details-del')")
+  public R removeById(@PathVariable String id){
+    purchaseStoreFormDetailService.deleteOne(id);
+    return new R<>();
+  }
+
+    /**
+     * 批量记录
+     *
+     * @param ids 主键
+     * @return R
+     */
+    @SysLog("批量删除采购入库单明细")
+    @DeleteMapping("")
+    //@PreAuthorize("@pms.hasPermission('purchase-form-details-del')")
+    public R removeIds(@RequestBody List<String> ids){
+        purchaseStoreFormDetailService.batchDelete(ids);
+        return new R<>();
+    }
+
+  /**
+   * 获取分页
+   *
+   * @param pageNum 当前页码
+   * @param pageSize 每页条数
+   * @param purchaseStoreFormDetailDTO 采购入库单明细DTO
+   * @return R
+   */
+  @GetMapping("/page")
+  public R<AbstractPageResultBean<PurchaseStoreFormDetailVO>> query(PurchaseStoreFormDetailDTO purchaseStoreFormDetailDTO, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
+      return new R<>(purchaseStoreFormDetailService.selectPageList(purchaseStoreFormDetailDTO, pageNum, pageSize));
+  }
+
+  /**
+   * 获取列表
+   *
+   * @param purchaseStoreFormDetailDTO 采购入库单明细DTO
+   * @return R
+   */
+  @GetMapping("")
+  public R query(PurchaseStoreFormDetailDTO purchaseStoreFormDetailDTO) {
+      return new R<>(purchaseStoreFormDetailService.getModelListByDTO(purchaseStoreFormDetailDTO));
+  }
+
+  /**
+     * 采购入库单明细导出
+     *
+     * @param purchaseStoreFormDetailDTO 采购入库单明细DTO
+     * @return R
+     */
+  @GetMapping("/export")
+  @SysLog("采购入库单明细导出")
+  //@PreAuthorize("@pms.hasPermission('purchase-form-details-export')")
+  public void export(HttpServletResponse response, PurchaseStoreFormDetailDTO purchaseStoreFormDetailDTO) {
+    List<PurchaseStoreFormDetail> list = purchaseStoreFormDetailService.getModelListByDTO(purchaseStoreFormDetailDTO);
+    ExcelUtil.exportResponseDict(response, ExportPurchaseStoreFormDetailVO.class, BeanConverterUtil.copyListProperties(list, ExportPurchaseStoreFormDetailVO.class), "采购入库单明细");
+  }
+
+  /**
+   * 修改记录集合
+   *
+   * @param records 采购入库单明细DTO
+   * @return R
+   */
+  @SysLog("修改明细集合")
+  @PutMapping("/updateList/{id}")
+  //@PreAuthorize("@pms.hasPermission('purchase-form-details-edit')")
+  public R updateList(@PathVariable String id,@Validated({UpdateGroup.class}) @RequestBody List<PurchaseStoreFormDetailDTO> records) {
+    purchaseStoreFormDetailService.modModelByDTOList(id,records);
+    return new R<>();
+  }
+
+}

+ 43 - 0
platform-service/src/main/java/com/platform/service/store/PurchaseStoreFormDetailService.java

@@ -0,0 +1,43 @@
+package com.platform.service.store;
+
+import com.platform.dao.vo.query.store.PurchaseStoreFormDetailVO;
+import com.platform.dao.dto.store.PurchaseStoreFormDetailDTO;
+import com.platform.dao.entity.store.PurchaseStoreFormDetail;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.service.base.IBaseService;
+import java.util.List;
+
+/**
+ * @Description 采购入库单明细 service
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+public interface PurchaseStoreFormDetailService extends IBaseService<PurchaseStoreFormDetail, PurchaseStoreFormDetailDTO> {
+
+   /**
+    * 批量删除
+    *
+    * @param ids :
+    * @return :
+    */
+    int batchDelete(List<String> ids);
+
+    /**
+     * 分页查询
+     * @param record
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    AbstractPageResultBean<PurchaseStoreFormDetailVO> selectPageList(PurchaseStoreFormDetailDTO record, int pageNum, int pageSize);
+
+    /**
+     * 修正数据detail
+     * @param list
+     */
+    void modModelByDTOList(String id,List<PurchaseStoreFormDetailDTO> list);
+
+    void deleteOne(String id);
+
+                                                                                                                                                    }

+ 53 - 0
platform-service/src/main/java/com/platform/service/store/PurchaseStoreFormService.java

@@ -0,0 +1,53 @@
+package com.platform.service.store;
+
+import com.platform.common.util.R;
+import com.platform.dao.vo.query.store.PurchaseStoreFormVO;
+import com.platform.dao.dto.store.PurchaseStoreFormDTO;
+import com.platform.dao.entity.store.PurchaseStoreForm;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.service.base.IBaseService;
+
+import java.util.List;
+
+/**
+ * @Description 采购入库表 service
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+public interface PurchaseStoreFormService extends IBaseService<PurchaseStoreForm, PurchaseStoreFormDTO> {
+
+    /**
+     * 批量删除
+     *
+     * @param ids :
+     * @return :
+     */
+    int batchDelete(List<String> ids);
+
+    /**
+     * 分页查询
+     *
+     * @param record
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    AbstractPageResultBean<PurchaseStoreFormVO> selectPageList(PurchaseStoreFormDTO record, int pageNum, int pageSize);
+
+    void updateStatusById(String id, Integer status);
+
+    /**
+     * 处理备件
+     * @param record
+     */
+    R handleSpareInfo(PurchaseStoreFormDTO record);
+
+    /**
+     * 将采购入库单转化为入库单
+     * @param id
+     */
+    void transferInStoreForm(String id);
+
+    PurchaseStoreFormVO getVOById(String id);
+}

+ 79 - 84
platform-service/src/main/java/com/platform/service/store/impl/InStoreFormServiceImpl.java

@@ -1,6 +1,5 @@
 package com.platform.service.store.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
@@ -9,32 +8,22 @@ import com.platform.common.exception.BusinessException;
 import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
-import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.dto.store.*;
-import com.platform.dao.entity.purchase.PurchaseDispatchOrder;
-import com.platform.dao.entity.purchase.PurchaseDispatchOrderList;
-import com.platform.dao.entity.purchase.PurchaseList;
-import com.platform.dao.entity.purchase.PurchaseOrder;
 import com.platform.dao.entity.sb.SbCheckDetail;
 import com.platform.dao.entity.sb.SbCheckForm;
-import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
 import com.platform.dao.entity.store.*;
 import com.platform.dao.enums.*;
-import com.platform.dao.mapper.purchase.PurchaseDispatchOrderListMapper;
-import com.platform.dao.mapper.purchase.PurchaseDispatchOrderMapper;
-import com.platform.dao.mapper.purchase.PurchaseListMapper;
+import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
 import com.platform.dao.mapper.store.*;
 import com.platform.dao.util.MessageTemplateUtil;
 import com.platform.dao.vo.query.store.*;
-import com.platform.dao.vo.repair.RepairApplicationFormVO;
 import com.platform.service.base.impl.BaseServiceImpl;
-import com.platform.service.business.PurchaseBusinessService;
 import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.store.InStoreFormService;
 import com.platform.service.store.StoreService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.autoconfigure.session.StoreType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -69,8 +58,9 @@ public class InStoreFormServiceImpl extends BaseServiceImpl<InStoreFormMapper, I
     private InStoreFormMapper inStoreFormMapper;
     private OutStoreFormMapper outStoreFormMapper;
     private StoreMapper storeMapper;
-//    private PurchaseStoreFormDetailMapper purchaseStoreFormDetailMapper;
-//    private PurchaseStoreFormMapper purchaseStoreFormMapper;
+    private SparePartInfoMapper sparePartInfoMapper;
+    private PurchaseStoreFormDetailMapper purchaseStoreFormDetailMapper;
+    private PurchaseStoreFormMapper purchaseStoreFormMapper;
 
 
     @Override
@@ -557,10 +547,10 @@ public class InStoreFormServiceImpl extends BaseServiceImpl<InStoreFormMapper, I
         UserInfo userInfo = SecurityUtils.getUserInfo();
         InStoreForm model = this.getModelById(id);
         // 采购单入库的路由至新流程
-//        if(InStoreTypeEnum.CAIGOU_RUKU.getValue() == model.getType()){
-//            handlePurchaseInForm(model,userInfo);
-//            return;
-//        }
+        if(InStoreTypeEnum.CAIGOU_RUKU.getValue() == model.getType()){
+            handlePurchaseInForm(model,userInfo);
+            return;
+        }
         if(flag){
             model.setStatus(InStoreStatusEnum.NOT_EXECUTE.getValue());
         }else{
@@ -623,64 +613,69 @@ public class InStoreFormServiceImpl extends BaseServiceImpl<InStoreFormMapper, I
      * 处理采购入库单的入库操作
      * @param form
      */
-//    @Transactional(rollbackFor = Exception.class)
-//    void handlePurchaseInForm(InStoreForm form,UserInfo userInfo){
-//        PurchaseStoreForm storeForm = new PurchaseStoreForm();
-//        storeForm.setId(form.getPurchaseId());
-//        storeForm.setUpdateUserName(userInfo.getUsername());
-//        storeForm.setUpdateUserId(userInfo.getUserId());
-//        storeForm.setUpdateTime(LocalDateTime.now());
-//        try{
-//            String storeId = form.getStoreId();
-//            // 找到入库备件明细
-//            Weekend<PurchaseStoreFormDetail> detailWeekend = new Weekend<>(PurchaseStoreFormDetail.class);
-//            detailWeekend.weekendCriteria().andEqualTo(PurchaseStoreFormDetail::getPurchaseStoreFormId, form.getPurchaseId()).andEqualTo(PurchaseStoreFormDetail::getDeleteFlag,PurchaseStoreFormDetailDelFlagEnum.NORMAL.getValue());
-//            List<PurchaseStoreFormDetail> detailList = purchaseStoreFormDetailMapper.selectByExample(detailWeekend);
-//            // 更新库存
-//            for (PurchaseStoreFormDetail detail : detailList) {
-//                // 更新库存信息
-//                Weekend<SpareStore> spareStoreWeekend = new Weekend<>(SpareStore.class);
-//                spareStoreWeekend.weekendCriteria().andEqualTo(SpareStore::getSpareId, detail.getSparePartInfoId())
-//                        .andEqualTo(SpareStore::getStoreId, storeId);
-//                SpareStore spareStore = spareStoreMapper.selectOneByExample(spareStoreWeekend);
-//                if (ObjectUtil.isNull(spareStore)) {
-//                    spareStore = new SpareStore();
-//                    spareStore.setCreatedUserId(userInfo.getUserId());
-//                    spareStore.setCreatedUserName(userInfo.getRealName());
-//                    spareStore.setCreatedTime(LocalDateTime.now());
-//                    spareStore.setId(IdGeneratorUtils.getObjectId());
-//                    spareStore.setNum(detail.getNum());
-//                    spareStore.setSpareId(detail.getSparePartInfoId());
-//                    spareStore.setDelFlag(DelFlagEnum.NORMAL.getValue());
-//                    spareStore.setStoreId(storeId);
-//                    spareStore.setPrice(detail.getPrice());
-//                    spareStore.setInitPrice(detail.getPrice());
-//                    spareStore.setInitPurchasePrice(detail.getPrice());
-//                    spareStoreMapper.insertSelective(spareStore);
-//                } else {
-//                    // 重新计算商品库存价格
-//                    spareStore.setUpdateTime(LocalDateTime.now());
-//                    spareStore.setUpdateUserId(userInfo.getUserId());
-//                    spareStore.setUpdateUserName(userInfo.getRealName());
-//                    spareStore.setPrice(getNewPrice(spareStore, detail));
-//                    spareStore.setNum(BigDecimalUtil.add(spareStore.getNum(), detail.getNum()));
-//                    spareStoreMapper.updateByPrimaryKeySelective(spareStore);
-//                }
-//            }
-//            // 修改入库单状态
-//            InStoreForm updForm = new InStoreForm();
-//            updForm.setId(form.getId());
-//            updForm.setStatus(InStoreStatusEnum.EXECUTING.getValue());
-//            mapper.updateByPrimaryKey(updForm);
-//            // 修正采购入库单状态
-//            storeForm.setStatus(PurchaseStoreFormStatusEnum.COMPLETED.getValue());
-//        }catch (Exception e){
-//            log.error("采购入库失败----------------"+e.getCause().getMessage());
-//            storeForm.setStatus(PurchaseStoreFormStatusEnum.STORE_FAIL.getValue());
-//        }finally {
-//            purchaseStoreFormMapper.updateByPrimaryKey(storeForm);
-//        }
-//    }
+    @Transactional(rollbackFor = Exception.class)
+    void handlePurchaseInForm(InStoreForm form,UserInfo userInfo){
+        PurchaseStoreForm storeForm = new PurchaseStoreForm();
+        storeForm.setId(form.getPurchaseId());
+        storeForm.setUpdateUserName(userInfo.getUsername());
+        storeForm.setUpdateUserId(userInfo.getUserId());
+        storeForm.setUpdateTime(LocalDateTime.now());
+        try{
+            String storeId = form.getStoreId();
+            // 找到入库备件明细
+            Weekend<PurchaseStoreFormDetail> detailWeekend = new Weekend<>(PurchaseStoreFormDetail.class);
+            detailWeekend.weekendCriteria().andEqualTo(PurchaseStoreFormDetail::getPurchaseStoreFormId, form.getPurchaseId()).andEqualTo(PurchaseStoreFormDetail::getDeleteFlag,PurchaseStoreFormDetailDelFlagEnum.NORMAL.getValue());
+            List<PurchaseStoreFormDetail> detailList = purchaseStoreFormDetailMapper.selectByExample(detailWeekend);
+            // 更新库存
+            for (PurchaseStoreFormDetail detail : detailList) {
+                // 更新库存信息
+                Weekend<SpareStore> spareStoreWeekend = new Weekend<>(SpareStore.class);
+                spareStoreWeekend.weekendCriteria().andEqualTo(SpareStore::getSpareId, detail.getSparePartInfoId())
+                        .andEqualTo(SpareStore::getStoreId, storeId);
+                SpareStore spareStore = spareStoreMapper.selectOneByExample(spareStoreWeekend);
+                if (ObjectUtil.isNull(spareStore)) {
+                    spareStore = new SpareStore();
+                    spareStore.setCreatedUserId(userInfo.getUserId());
+                    spareStore.setCreatedUserName(userInfo.getRealName());
+                    spareStore.setCreatedTime(LocalDateTime.now());
+                    spareStore.setId(IdGeneratorUtils.getObjectId());
+                    spareStore.setNum(detail.getNum());
+                    spareStore.setSpareId(detail.getSparePartInfoId());
+                    spareStore.setDelFlag(DelFlagEnum.NORMAL.getValue());
+                    spareStore.setStoreId(storeId);
+                    spareStore.setPrice(detail.getPrice());
+                    spareStore.setInitPrice(detail.getPrice());
+                    spareStore.setInitPurchasePrice(detail.getPrice());
+                    spareStoreMapper.insertSelective(spareStore);
+                } else {
+                    // 重新计算商品库存价格
+                    spareStore.setUpdateTime(LocalDateTime.now());
+                    spareStore.setUpdateUserId(userInfo.getUserId());
+                    spareStore.setUpdateUserName(userInfo.getRealName());
+                    spareStore.setPrice(getNewPrice(spareStore, detail));
+                    spareStore.setNum(BigDecimalUtil.add(spareStore.getNum(), detail.getNum()));
+                    spareStoreMapper.updateByPrimaryKeySelective(spareStore);
+                }
+                // 修改备件状态
+                SparePartInfo info = new SparePartInfo();
+                info.setId(detail.getSparePartInfoId());
+                info.setWarnStatus(SparePartMinStoclWarnStatusEnum.NORMAL.getValue());
+                sparePartInfoMapper.updateByPrimaryKeySelective(info);
+            }
+            // 修改入库单状态
+            InStoreForm updForm = new InStoreForm();
+            updForm.setId(form.getId());
+            updForm.setStatus(InStoreStatusEnum.EXECUTING.getValue());
+            mapper.updateByPrimaryKeySelective(updForm);
+            // 修正采购入库单状态
+            storeForm.setStatus(PurchaseStoreFormStatusEnum.COMPLETED.getValue());
+        }catch (Exception e){
+            log.error("采购入库失败----------------"+e.getCause().getMessage());
+            storeForm.setStatus(PurchaseStoreFormStatusEnum.STORE_FAIL.getValue());
+        }finally {
+            purchaseStoreFormMapper.updateByPrimaryKeySelective(storeForm);
+        }
+    }
 
     /**
      * 软件修改后,可以通过新增来处理库存单价和数量不符的情况,首先看看库存数量,若是数量是对的,就入一个为0的数量进去,
@@ -701,13 +696,13 @@ public class InStoreFormServiceImpl extends BaseServiceImpl<InStoreFormMapper, I
         return price;
     }
 
-//    private BigDecimal getNewPrice(SpareStore spareStore, PurchaseStoreFormDetail detail) {
-//        BigDecimal totalStorePrice = BigDecimalUtil.mul(spareStore.getPrice(), spareStore.getNum());
-//        BigDecimal totalPrice = BigDecimalUtil.add(totalStorePrice, detail.getTotalPrice());
-//        BigDecimal totalNum = BigDecimalUtil.add(spareStore.getNum(), detail.getNum());
-//        BigDecimal price = BigDecimalUtil.div(totalPrice, totalNum);
-//        return price;
-//    }
+    private BigDecimal getNewPrice(SpareStore spareStore, PurchaseStoreFormDetail detail) {
+        BigDecimal totalStorePrice = BigDecimalUtil.mul(spareStore.getPrice(), spareStore.getNum());
+        BigDecimal totalPrice = BigDecimalUtil.add(totalStorePrice, detail.getTotalPrice());
+        BigDecimal totalNum = BigDecimalUtil.add(spareStore.getNum(), detail.getNum());
+        BigDecimal price = BigDecimalUtil.div(totalPrice, totalNum);
+        return price;
+    }
 
     @Override
     public InStoreForm saveModelByBackForm(SpareBackFormDTO sparePickFormDTO, List<SpareBackDetailVO> selectDetailList) {

+ 127 - 0
platform-service/src/main/java/com/platform/service/store/impl/PurchaseStoreFormDetailServiceImpl.java

@@ -0,0 +1,127 @@
+package com.platform.service.store.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.exception.DeniedException;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.dao.bean.MyPage;
+import com.platform.dao.dto.store.PurchaseStoreFormDetailDTO;
+import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
+import com.platform.dao.entity.store.PurchaseStoreForm;
+import com.platform.dao.entity.store.PurchaseStoreFormDetail;
+import com.platform.dao.enums.PurchaseStoreFormStatusEnum;
+import com.platform.dao.enums.SparePartMinStoclWarnStatusEnum;
+import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
+import com.platform.dao.mapper.store.PurchaseStoreFormDetailMapper;
+import com.platform.dao.mapper.store.PurchaseStoreFormMapper;
+import com.platform.dao.vo.query.store.PurchaseStoreFormDetailVO;
+import com.platform.service.base.impl.BaseServiceImpl;
+import com.platform.service.store.PurchaseStoreFormDetailService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description 采购入库单明细 service 实现类
+ * @Author lsq
+ * @Date 2022-05-16 17:00:29
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@AllArgsConstructor
+@Service("purchaseStoreFormDetailService")
+public class PurchaseStoreFormDetailServiceImpl extends BaseServiceImpl<PurchaseStoreFormDetailMapper, PurchaseStoreFormDetail, PurchaseStoreFormDetailDTO> implements PurchaseStoreFormDetailService {
+
+    private SparePartInfoMapper sparePartInfoMapper;
+    private PurchaseStoreFormMapper purchaseStoreFormMapper;
+    @Override
+    public int batchDelete(List<String> ids) {
+        Weekend<PurchaseStoreFormDetail> weekend = new Weekend<>(PurchaseStoreFormDetail.class);
+        WeekendCriteria<PurchaseStoreFormDetail, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andIn(PurchaseStoreFormDetail::getId, ids);
+        mapper.deleteByExample(weekend);
+        return 1;
+    }
+
+    @Override
+    public AbstractPageResultBean<PurchaseStoreFormDetailVO> selectPageList(PurchaseStoreFormDetailDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void modModelByDTOList(String id,List<PurchaseStoreFormDetailDTO> list) {
+        PurchaseStoreForm form = purchaseStoreFormMapper.selectByPrimaryKey(id);
+        // 采购单是入库中和已完成,不可修改
+        if(form.getStatus() == PurchaseStoreFormStatusEnum.COMPLETED.getValue() || form.getStatus() == PurchaseStoreFormStatusEnum.STORING.getValue()){
+            throw new DeniedException("入库中和已完成采购单不可修改,见谅");
+        }
+        BigDecimal totalPrice = new BigDecimal(0.0);
+        BigDecimal totalNum = new BigDecimal(0.0);
+        List<PurchaseStoreFormDetail> updateDetailList = new ArrayList<>();
+        boolean updFlag = Boolean.FALSE;
+        if(list != null) {
+            for (PurchaseStoreFormDetailDTO detail : list) {
+                if(detail.getUpdateFlag() != null && detail.getUpdateFlag() == 1){
+                    detail.setTotalPrice(detail.getNum().multiply(detail.getPrice()));
+                    totalPrice = totalPrice.add(detail.getTotalPrice());
+                    totalNum = totalNum.add(detail.getNum());
+                    PurchaseStoreFormDetail detailUpd = new PurchaseStoreFormDetail();
+                    BeanConverterUtil.copyObjectProperties(detail, detailUpd);
+                    updateDetailList.add(detailUpd);
+                    updFlag = Boolean.TRUE;
+                } else {
+                    totalPrice = totalPrice.add(detail.getTotalPrice());
+                    totalNum = totalNum.add(detail.getNum());
+                }
+            }
+            if (!CollectionUtils.isEmpty(updateDetailList)) {
+                mapper.updateBatch(updateDetailList);
+            }
+            if(updFlag){ // 修正采购单数据
+                PurchaseStoreForm updForm = new PurchaseStoreForm();
+                updForm.setId(id);
+                updForm.setTotalAmount(totalPrice);
+                updForm.setTotalNum(totalNum);
+                updForm.setUpdateTime(LocalDateTime.now());
+                purchaseStoreFormMapper.updateByPrimaryKeySelective(updForm);
+            }
+        }
+    }
+
+    @Override
+    public void deleteOne(String id) {
+        PurchaseStoreFormDetail detail = mapper.selectByPrimaryKey(id);
+        PurchaseStoreForm form = purchaseStoreFormMapper.selectByPrimaryKey(detail.getPurchaseStoreFormId());
+        // 采购单是入库中和已完成,不可修改
+        if(form.getStatus() == PurchaseStoreFormStatusEnum.COMPLETED.getValue() || form.getStatus() == PurchaseStoreFormStatusEnum.STORING.getValue()){
+            throw new DeniedException("入库中和已完成采购单不可删除,见谅");
+        }
+        SparePartInfo info = sparePartInfoMapper.selectByPrimaryKey(detail.getSparePartInfoId());
+        if(info.getWarnStatus() != null && info.getWarnStatus() == SparePartMinStoclWarnStatusEnum.PURCHASE.getValue()){
+            SparePartInfo infoUpd = new SparePartInfo();
+            infoUpd.setId(info.getId());
+            infoUpd.setWarnStatus(SparePartMinStoclWarnStatusEnum.WAIT_DEAL.getValue());
+            sparePartInfoMapper.updateByPrimaryKeySelective(infoUpd);
+        }
+        PurchaseStoreFormDetail detailUpd = new PurchaseStoreFormDetail();
+        detailUpd.setId(id);
+        detail.setDeleteFlag(1);
+        mapper.updateByPrimaryKeySelective(detailUpd);
+    }
+
+    @Override
+    public AbstractPageResultBean<PurchaseStoreFormDetail> selectPageInfo(PurchaseStoreFormDetailDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+                                                                                                                                                    }

+ 220 - 0
platform-service/src/main/java/com/platform/service/store/impl/PurchaseStoreFormServiceImpl.java

@@ -0,0 +1,220 @@
+package com.platform.service.store.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.exception.BusinessException;
+import com.platform.common.exception.DeniedException;
+import com.platform.common.model.UserInfo;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.R;
+import com.platform.common.util.SecurityUtils;
+import com.platform.dao.bean.MyPage;
+import com.platform.dao.dto.store.PurchaseStoreFormDTO;
+import com.platform.dao.dto.store.PurchaseStoreFormDetailDTO;
+import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
+import com.platform.dao.entity.store.*;
+import com.platform.dao.enums.*;
+import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
+import com.platform.dao.mapper.store.InStoreFormMapper;
+import com.platform.dao.mapper.store.PurchaseStoreFormDetailMapper;
+import com.platform.dao.mapper.store.PurchaseStoreFormMapper;
+import com.platform.dao.mapper.store.SpareStoreMapper;
+import com.platform.dao.vo.query.store.PurchaseStoreFormVO;
+import com.platform.service.base.impl.BaseServiceImpl;
+import com.platform.service.store.PurchaseStoreFormService;
+import com.platform.service.store.StoreService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Description 采购入库表 service 实现类
+ * @Author lsq
+ * @Date 2022-05-16 16:24:38
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@AllArgsConstructor
+@Service("purchaseStoreFormService")
+@Slf4j
+public class PurchaseStoreFormServiceImpl extends BaseServiceImpl<PurchaseStoreFormMapper, PurchaseStoreForm, PurchaseStoreFormDTO> implements PurchaseStoreFormService {
+    private final PurchaseStoreFormDetailMapper purchaseStoreFormDetailMapper;
+    private final SpareStoreMapper spareStoreMapper;
+    private final SparePartInfoMapper sparePartInfoMapper;
+    private final StoreService storeService;
+    private final InStoreFormMapper inStoreFormMapper;
+    @Override
+    public int batchDelete(List<String> ids) {
+        Weekend<PurchaseStoreForm> weekend = new Weekend<>(PurchaseStoreForm.class);
+        WeekendCriteria<PurchaseStoreForm, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andIn(PurchaseStoreForm::getId, ids);
+        mapper.deleteByExample(weekend);
+        return 1;
+    }
+
+    @Override
+    public AbstractPageResultBean<PurchaseStoreFormVO> selectPageList(PurchaseStoreFormDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    @Override
+    public AbstractPageResultBean<PurchaseStoreForm> selectPageInfo(PurchaseStoreFormDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateStatusById(String id, Integer status) {
+        PurchaseStoreForm updInfo = new PurchaseStoreForm();
+        updInfo.setId(id);
+        updInfo.setStatus(status);
+        mapper.updateByPrimaryKeySelective(updInfo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized R handleSpareInfo(PurchaseStoreFormDTO record) {
+        R r = R.success();
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+        try{
+            // 用户名下已创建单数
+            PurchaseStoreForm queryForm = new PurchaseStoreForm();
+            queryForm.setCreatedUserId(userInfo.getUserId());
+            queryForm.setStatus(PurchaseStoreFormStatusEnum.CREATED.getValue());
+            List<PurchaseStoreForm> formList = mapper.select(queryForm);
+            if(formList == null || formList.size() == 0 || formList.size() > 1){
+                throw new DeniedException("您尚未创建采购单或多个采购单");
+            }
+            queryForm = formList.get(0);
+            if(StringUtils.isBlank(record.getSpareId())){
+                throw new DeniedException("备件ID未携带");
+            }
+            // 进来的备件,是否已经勾选
+            PurchaseStoreFormDetail queryDTO = new PurchaseStoreFormDetail();
+            queryDTO.setPurchaseStoreFormId(record.getId());
+            queryDTO.setDeleteFlag(0);
+            queryDTO.setSparePartInfoId(record.getSpareId());
+            int count = purchaseStoreFormDetailMapper.selectCount(queryDTO);
+            if(count > 0) {
+                throw  new DeniedException("您选择的备件,已被您放入采购单中");
+            }
+            // 备件仓库和采购单是否匹配
+            SpareStore queryStore = new SpareStore();
+            queryStore.setSpareId(record.getSpareId());
+            queryStore.setStoreId(queryForm.getSpareStoreId());
+            queryStore = spareStoreMapper.selectOne(queryStore);
+            if(queryStore != null && queryForm.getSpareStoreId().equals(queryStore.getId())){
+                throw new DeniedException("采购单仓库和所选备件仓库不匹配");
+            }
+            SparePartInfo querySpare = sparePartInfoMapper.selectById(record.getSpareId());
+            record.setPrice(querySpare.getInitialValue()); // 备件价值
+            // 封装detail并保存
+            PurchaseStoreFormDetail detail = packageDetail(record,userInfo);
+            detail.setPurchaseStoreFormId(queryForm.getId());
+            purchaseStoreFormDetailMapper.insert(detail);
+            // 回写采购单
+            PurchaseStoreForm updForm = new PurchaseStoreForm();
+            updForm.setId(queryForm.getId());
+            updForm.setUpdateTime(LocalDateTime.now());
+            updForm.setUpdateUserId(userInfo.getUserId());
+            updForm.setUpdateUserName(userInfo.getUsername());
+            updForm.setTotalAmount(queryForm.getTotalAmount().add(detail.getTotalPrice()));
+            updForm.setTotalNum(queryForm.getTotalNum().add(detail.getNum()));
+            updForm.setStatus(PurchaseStoreFormStatusEnum.PURCHASING.getValue());
+            mapper.updateByPrimaryKeySelective(updForm);
+            // 修改备件状态
+            if(querySpare.getWarnStatus() == SparePartMinStoclWarnStatusEnum.WAIT_DEAL.getValue()){
+                SparePartInfo info = new SparePartInfo();
+                info.setId(record.getSpareId());
+                info.setWarnStatus(SparePartMinStoclWarnStatusEnum.PURCHASE.getValue());
+                sparePartInfoMapper.updateByPrimaryKeySelective(info);
+            }
+            r.setMessage("成功加入采购单");
+        }catch (Exception e){
+            if(e instanceof DeniedException){
+                throw e;
+            }
+            log.error("加入或者移除备件报错----"+e.getCause().getMessage());
+            e.printStackTrace();
+        }
+        return r;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void transferInStoreForm(String id) {
+        PurchaseStoreForm form = mapper.selectByPrimaryKey(id);
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+        InStoreForm model = new InStoreForm();
+        Weekend<InStoreForm> weekend = new Weekend<>(InStoreForm.class);
+        weekend.weekendCriteria().andIsNotNull(InStoreForm::getId);
+        Integer count = mapper.selectCountByExample(weekend);
+        model.setCreatedUserId(userInfo.getUserId());
+        model.setCreatedUserName(userInfo.getUsername());
+        model.setCreatedTime(LocalDateTime.now());
+        model.setInNo(IdGeneratorUtils.getInStoreNo(++count));
+        model.setType(InStoreTypeEnum.CAIGOU_RUKU.getValue());
+        model.setCreatedUserId(form.getCreatedUserId());
+        model.setCreatedTime(form.getCreatedTime());
+        model.setTotalPrice(form.getTotalAmount());
+        model.setPurchaseId(form.getId());
+        model.setStoreId(form.getSpareStoreId());
+        Store store = storeService.getModelById(model.getStoreId());
+        if (store == null) {
+            throw new BusinessException("找不到仓库,请给项目部设置总仓以及对应的负责人, storeId:" + model.getStoreId());
+        }
+        if (store.getUserId() == null) {
+            throw new BusinessException("找不到仓库的负责人,请设置负责人, storeId:" + store.getId());
+        }
+        model.setStatus(InStoreStatusEnum.NOT_EXECUTE.getValue());
+        model.setId(IdGeneratorUtils.getObjectId());
+        inStoreFormMapper.insertSelective(model);
+        // 回写采购入库单状态
+        PurchaseStoreForm formUpd = new PurchaseStoreForm();
+        formUpd.setId(id);
+        formUpd.setUpdateTime(LocalDateTime.now());
+        formUpd.setUpdateUserId(userInfo.getUserId());
+        formUpd.setUpdateUserName(userInfo.getUsername());
+        formUpd.setStatus(PurchaseStoreFormStatusEnum.STORING.getValue());
+        mapper.updateByPrimaryKeySelective(formUpd);
+    }
+
+    @Override
+    public PurchaseStoreFormVO getVOById(String id) {
+        PurchaseStoreForm entity = this.getModelById(id);
+        PurchaseStoreFormVO vo = BeanConverterUtil.copyObjectProperties(entity,PurchaseStoreFormVO.class);
+        // 获取明细集合
+        PurchaseStoreFormDetailDTO queryDTO = new PurchaseStoreFormDetailDTO();
+        queryDTO.setPurchaseStoreFormId(id);
+        queryDTO.setDeleteFlag(PurchaseStoreFormDetailDelFlagEnum.NORMAL.ordinal());
+        vo.setDetailList(purchaseStoreFormDetailMapper.selectList(queryDTO));
+        return vo;
+    }
+
+    /**
+     * 封装详情数据
+     * @param record
+     * @param userInfo
+     * @return
+     */
+    private PurchaseStoreFormDetail packageDetail(PurchaseStoreFormDTO record,UserInfo userInfo){
+        PurchaseStoreFormDetail detail = new PurchaseStoreFormDetail();
+        detail.setCreatedUserId(userInfo.getUserId());
+        detail.setCreatedUserName(userInfo.getUsername());
+        detail.setNum(record.getNum());
+        detail.setTotalPrice(record.getPrice().multiply(record.getNum()));
+        detail.setPrice(record.getPrice());
+        detail.setSparePartInfoId(record.getSpareId());
+        detail.setId(IdGeneratorUtils.getObjectId());
+        return detail;
+    }
+}