Parcourir la source

杰生重构 合同生成

home il y a 2 ans
Parent
commit
db8c4a7c7f
25 fichiers modifiés avec 814 ajouts et 5 suppressions
  1. 7 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBack.java
  2. 10 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/constants/ConfigConstant.java
  3. 5 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/apply/ApplyPurchaseDetails.java
  4. 123 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/contract/Contract.java
  5. 95 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/contract/ContractDetails.java
  6. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractDetailsEx.java
  7. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractDetailsVo.java
  8. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractEx.java
  9. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractVo.java
  10. 56 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/contract/ContractController.java
  11. 56 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/contract/ContractDetailsController.java
  12. 16 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractDetailsMapper.java
  13. 5 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractDetailsMapper.xml
  14. 16 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.java
  15. 5 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.xml
  16. 17 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/common/CommonConfigService.java
  17. 28 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/ContractDetailsService.java
  18. 36 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/ContractService.java
  19. 54 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractDetailsServiceImpl.java
  20. 177 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java
  21. 18 2
      hx-service/storage-restructure/src/main/java/com/fjhx/service/flow/InitiateApplyFlowService.java
  22. 10 0
      hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java
  23. 1 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.xml
  24. 1 1
      hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackService.java
  25. 10 2
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

+ 7 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBack.java

@@ -2,6 +2,7 @@ package com.fjhx.entity.stock;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -62,5 +63,11 @@ public class StockBack implements Serializable {
      */
     private Date checkerTime;
 
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableLogic
+    private Integer delFlag;
+
 
 }

+ 10 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/constants/ConfigConstant.java

@@ -10,4 +10,14 @@ public interface ConfigConstant {
      */
     String DELAY_PERIOD = "delayPeriod";
 
+    /**
+     * 收货人
+     */
+    String CONSIGNEE = "consignee";
+
+    /**
+     * 增值税
+     */
+    String TAX_RATE = "taxRate";
+
 }

+ 5 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/apply/ApplyPurchaseDetails.java

@@ -28,6 +28,11 @@ public class ApplyPurchaseDetails extends StorageBaseEntity {
     private Long applyPurchaseId;
 
     /**
+     * 申购编码
+     */
+    private String applyPurchaseCode;
+
+    /**
      * 物料id
      */
     private Long materialId;

+ 123 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/contract/Contract.java

@@ -0,0 +1,123 @@
+package com.fjhx.entity.contract;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.fjhx.base.StorageBaseEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 采购合同
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Contract extends StorageBaseEntity {
+
+
+    /**
+     * 采购合同编号
+     */
+    private String code;
+
+    /**
+     * 供应商id
+     */
+    private Long supplierId;
+
+    /**
+     * 帐期
+     */
+    private Integer accountDate;
+
+    /**
+     * 签约时间
+     */
+    private Date signTime;
+
+    /**
+     * 交付时间
+     */
+    private Date deliverTime;
+
+    /**
+     * 审核时间
+     */
+    private Date approvalTime;
+
+    /**
+     * 采购金额
+     */
+    private BigDecimal amountMoney;
+
+    /**
+     * 质检修正金额
+     */
+    private BigDecimal adjustAmount;
+
+    /**
+     * 退货金额
+     */
+    private BigDecimal backAmount;
+
+    /**
+     * 申请付款金额
+     */
+    private BigDecimal payAmount;
+
+    /**
+     * 已付金额
+     */
+    private BigDecimal hadPayAmount;
+
+    /**
+     * 增值税
+     */
+    private BigDecimal taxValue;
+
+    /**
+     * 发票类型(0专用,1普通)
+     */
+    private Integer invoiceType;
+
+    /**
+     * 合同审批状态(0待审批,1审批中,2已审批,3已驳回,4已撤回)
+     */
+    private Integer flowStatus;
+
+    /**
+     * 供应商出货状态(0进行中,1已完成)
+     */
+    private Integer shipmentStatus;
+
+    /**
+     * 合同付款状态(0审批中,1进行中,2已完成)
+     */
+    private Integer payStatus;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+    private String oldId;
+
+
+}

+ 95 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/contract/ContractDetails.java

@@ -0,0 +1,95 @@
+package com.fjhx.entity.contract;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.StorageBaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 采购合同明细
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractDetails extends StorageBaseEntity {
+
+
+    /**
+     * 采购合同id
+     */
+    private Long contractId;
+
+    /**
+     * 采购合同编号
+     */
+    private String contractCode;
+
+    /**
+     * 申购单id
+     */
+    private Long applyPurchaseId;
+
+    /**
+     * 申购单编码
+     */
+    private String applyPurchaseCode;
+
+    /**
+     * 申购明细id
+     */
+    private Long applyPurchaseDetailsId;
+
+    /**
+     * 物料id
+     */
+    private Long materialId;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 在途数量
+     */
+    private BigDecimal afloatQuantity;
+
+    /**
+     * 到货数量
+     */
+    private BigDecimal arrivalQuantity;
+
+    /**
+     * 质检修正数量
+     */
+    private BigDecimal adjustQuantity;
+
+    /**
+     * 退货数量
+     */
+    private BigDecimal backQuantity;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+    private String oldId;
+
+
+}

+ 17 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractDetailsEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.contract;
+
+import com.fjhx.entity.contract.ContractDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购合同明细
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractDetailsEx extends ContractDetails {
+
+}

+ 17 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractDetailsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.contract;
+
+import com.fjhx.entity.contract.ContractDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购合同明细
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractDetailsVo extends ContractDetails {
+
+}

+ 17 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.contract;
+
+import com.fjhx.entity.contract.Contract;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购合同
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractEx extends Contract {
+
+}

+ 17 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/contract/ContractVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.contract;
+
+import com.fjhx.entity.contract.Contract;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购合同
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractVo extends Contract {
+
+}

+ 56 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/contract/ContractController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.contract;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.contract.Contract;
+import com.fjhx.params.contract.ContractVo;
+import com.fjhx.service.contract.ContractService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@RestController
+@RequestMapping("/contract")
+public class ContractController {
+
+    @Autowired
+    private ContractService contractService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition){
+        Page<Contract> result = contractService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody ContractVo contractVo){
+        contractService.add(contractVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody ContractVo contractVo){
+        contractService.edit(contractVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody ContractVo contractVo){
+        contractService.delete(contractVo);
+        return R.success();
+    }
+
+}
+

+ 56 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/contract/ContractDetailsController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.contract;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.contract.ContractDetails;
+import com.fjhx.params.contract.ContractDetailsVo;
+import com.fjhx.service.contract.ContractDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同明细 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@RestController
+@RequestMapping("/contractDetails")
+public class ContractDetailsController {
+
+    @Autowired
+    private ContractDetailsService contractDetailsService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition){
+        Page<ContractDetails> result = contractDetailsService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody ContractDetailsVo contractDetailsVo){
+        contractDetailsService.add(contractDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody ContractDetailsVo contractDetailsVo){
+        contractDetailsService.edit(contractDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody ContractDetailsVo contractDetailsVo){
+        contractDetailsService.delete(contractDetailsVo);
+        return R.success();
+    }
+
+}
+

+ 16 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractDetailsMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.contract;
+
+import com.fjhx.entity.contract.ContractDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 采购合同明细 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+public interface ContractDetailsMapper extends BaseMapper<ContractDetails> {
+
+}

+ 5 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractDetailsMapper.xml

@@ -0,0 +1,5 @@
+<?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.mapper.contract.ContractDetailsMapper">
+
+</mapper>

+ 16 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.contract;
+
+import com.fjhx.entity.contract.Contract;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 采购合同 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+public interface ContractMapper extends BaseMapper<Contract> {
+
+}

+ 5 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.xml

@@ -0,0 +1,5 @@
+<?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.mapper.contract.ContractMapper">
+
+</mapper>

+ 17 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/common/CommonConfigService.java

@@ -1,8 +1,11 @@
 package com.fjhx.service.common;
 
+import cn.hutool.core.convert.Convert;
 import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.common.CommonConfig;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 公共配置 服务类
@@ -15,6 +18,20 @@ public interface CommonConfigService extends StorageBaseService<CommonConfig> {
 
     String getValue(String key);
 
+    /**
+     * int类型配置
+     */
+    default Integer getValueToInt(String key) {
+        return Convert.toInt(getValue(key));
+    }
+
+    /**
+     * BigDecimal类型配置
+     */
+    default BigDecimal getValueToBigDecimal(String key) {
+        return Convert.toBigDecimal(getValue(key));
+    }
+
     void updateValue(String key, String value);
 
 }

+ 28 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/ContractDetailsService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.contract;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.contract.ContractDetails;
+import com.fjhx.params.contract.ContractDetailsVo;
+import com.fjhx.base.StorageBaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同明细 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+public interface ContractDetailsService extends StorageBaseService<ContractDetails> {
+
+    Page<ContractDetails> getPage(Map<String, String> condition);
+
+    void add(ContractDetailsVo contractDetailsVo);
+
+    void edit(ContractDetailsVo contractDetailsVo);
+
+    void delete(ContractDetailsVo contractDetailsVo);
+
+}

+ 36 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/ContractService.java

@@ -0,0 +1,36 @@
+package com.fjhx.service.contract;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.StorageBaseService;
+import com.fjhx.entity.contract.Contract;
+import com.fjhx.params.apply.ApplyPurchaseVo;
+import com.fjhx.params.contract.ContractVo;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+public interface ContractService extends StorageBaseService<Contract> {
+
+    Page<Contract> getPage(Map<String, String> condition);
+
+    void add(ContractVo contractVo);
+
+    void edit(ContractVo contractVo);
+
+    void delete(ContractVo contractVo);
+
+    /**
+     * 生成合同
+     *
+     * @param applyVo 申购明细
+     */
+    void create(ApplyPurchaseVo applyVo);
+
+}

+ 54 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractDetailsServiceImpl.java

@@ -0,0 +1,54 @@
+package com.fjhx.service.contract.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.utils.WrapperUtil;
+import com.fjhx.entity.contract.ContractDetails;
+import com.fjhx.params.contract.ContractDetailsVo;
+import com.fjhx.mapper.contract.ContractDetailsMapper;
+import com.fjhx.service.contract.ContractDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同明细 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Service
+public class ContractDetailsServiceImpl extends ServiceImpl<ContractDetailsMapper, ContractDetails> implements ContractDetailsService {
+
+    @Override
+    public Page<ContractDetails> getPage(Map<String, String> condition) {
+
+        QueryWrapper<ContractDetails> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<ContractDetails> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(ContractDetailsVo contractDetailsVo) {
+        save(contractDetailsVo);
+    }
+
+    @Override
+    public void edit(ContractDetailsVo contractDetailsVo) {
+        updateById(contractDetailsVo);
+    }
+
+    @Override
+    public void delete(ContractDetailsVo contractDetailsVo) {
+        removeById(contractDetailsVo.getId());
+    }
+
+}

+ 177 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java

@@ -0,0 +1,177 @@
+package com.fjhx.service.contract.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.constants.ConfigConstant;
+import com.fjhx.entity.apply.ApplyPurchaseDetails;
+import com.fjhx.entity.contract.Contract;
+import com.fjhx.entity.contract.ContractDetails;
+import com.fjhx.enums.FlowStatusEnum;
+import com.fjhx.mapper.contract.ContractMapper;
+import com.fjhx.params.apply.ApplyPurchaseVo;
+import com.fjhx.params.contract.ContractVo;
+import com.fjhx.service.common.CommonConfigService;
+import com.fjhx.service.contract.ContractDetailsService;
+import com.fjhx.service.contract.ContractService;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-19
+ */
+@Service
+public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
+
+    @Autowired
+    private CommonConfigService commonConfigService;
+
+    @Autowired
+    private ContractDetailsService contractDetailsService;
+
+    @Override
+    public Page<Contract> getPage(Map<String, String> condition) {
+
+        QueryWrapper<Contract> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<Contract> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(ContractVo contractVo) {
+        save(contractVo);
+    }
+
+    @Override
+    public void edit(ContractVo contractVo) {
+        updateById(contractVo);
+    }
+
+    @Override
+    public void delete(ContractVo contractVo) {
+        removeById(contractVo.getId());
+    }
+
+    @Override
+    public synchronized void create(ApplyPurchaseVo applyVo) {
+        List<ContractDetails> contractDetailsList = new ArrayList<>();
+
+        // 合同编号前缀(PO220914)
+        String codePrefix = codePrefix();
+
+        // 当天已加最大合同后缀
+        Integer codeSuffix = getCodeSuffix(codePrefix);
+
+        List<ApplyPurchaseDetails> applyDetailsList = applyVo.getApplyDetailsList();
+        for (ApplyPurchaseDetails applyPurchaseDetails : applyDetailsList) {
+            codeSuffix++;
+
+            // 合同编码
+            String code = getCodeSuffixFormat(codePrefix, codeSuffix);
+
+            Contract contract = new Contract();
+            contract.setCode(code);
+            contract.setAmountMoney(BigDecimal.ZERO);
+            contract.setAdjustAmount(BigDecimal.ZERO);
+            contract.setBackAmount(BigDecimal.ZERO);
+            contract.setPayAmount(BigDecimal.ZERO);
+            contract.setHadPayAmount(BigDecimal.ZERO);
+            contract.setTaxValue(commonConfigService.getValueToBigDecimal(ConfigConstant.TAX_RATE));
+            contract.setInvoiceType(0);
+            contract.setFlowStatus(FlowStatusEnum.WAIT.getType());
+            save(contract);
+
+            Long contractId = contract.getId();
+            Long applyPurchaseId = applyPurchaseDetails.getApplyPurchaseId();
+            String applyPurchaseCode = applyPurchaseDetails.getApplyPurchaseCode();
+            Long applyPurchaseDetailsId = applyPurchaseDetails.getId();
+            Long materialId = applyPurchaseDetails.getMaterialId();
+            BigDecimal quantity = applyPurchaseDetails.getQuantity();
+
+            ContractDetails contractDetails = new ContractDetails();
+            contractDetails.setContractId(contractId);
+            contractDetails.setContractCode(code);
+            contractDetails.setApplyPurchaseId(applyPurchaseId);
+            contractDetails.setApplyPurchaseCode(applyPurchaseCode);
+            contractDetails.setApplyPurchaseDetailsId(applyPurchaseDetailsId);
+            contractDetails.setMaterialId(materialId);
+            contractDetails.setPrice(BigDecimal.ZERO);
+            contractDetails.setQuantity(quantity);
+            contractDetails.setArrivalQuantity(BigDecimal.ZERO);
+            contractDetails.setAfloatQuantity(quantity);
+            contractDetails.setAdjustQuantity(quantity);
+            contractDetails.setBackQuantity(BigDecimal.ZERO);
+            contractDetailsList.add(contractDetails);
+        }
+        contractDetailsService.saveBatch(contractDetailsList);
+
+    }
+
+    /**
+     * 获取当天合同编号前缀
+     *
+     * @return 合同编号前缀
+     */
+    private String codePrefix() {
+        return "PO" + DateUtil.format(new Date(), "yyMMdd-");
+    }
+
+    /**
+     * 获取最新合同编号后缀
+     *
+     * @param prefix 合同编号前缀
+     * @return 合同编号后缀
+     */
+    private Integer getCodeSuffix(String prefix) {
+        Contract contract = getOne(Wrappers.<Contract>lambdaQuery()
+                .likeRight(Contract::getCode, prefix)
+                .orderByDesc(Contract::getCode)
+                .last("limit 1")
+        );
+        if (contract == null) {
+            return 0;
+        }
+
+        return Convert.toInt(contract.getCode().replace(prefix, ""));
+    }
+
+    /**
+     * 合同格式化
+     *
+     * @param codePrefix 合同前缀
+     * @param codeSuffix 合同后缀
+     * @return 格式化之后的合同编码
+     */
+    private String getCodeSuffixFormat(String codePrefix, Integer codeSuffix) {
+        String codeSuffixStr;
+
+        if (codeSuffix < 10) {
+            codeSuffixStr = "00" + codeSuffix;
+        } else if (codeSuffix < 100) {
+            codeSuffixStr = "0" + codeSuffix;
+        } else {
+            codeSuffixStr = codeSuffix.toString();
+        }
+        return codePrefix + codeSuffixStr;
+    }
+
+}

+ 18 - 2
hx-service/storage-restructure/src/main/java/com/fjhx/service/flow/InitiateApplyFlowService.java

@@ -7,12 +7,14 @@ import com.fjhx.params.JumpVo;
 import com.fjhx.params.apply.ApplyPurchaseVo;
 import com.fjhx.service.apply.ApplyPurchaseDetailsService;
 import com.fjhx.service.apply.ApplyPurchaseService;
+import com.fjhx.service.contract.ContractService;
 import com.fjhx.utils.ExampleAbstract;
 import com.fjhx.utils.FlowConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -27,6 +29,9 @@ public class InitiateApplyFlowService {
     @Autowired
     private ApplyPurchaseDetailsService applyPurchaseDetailsService;
 
+    @Autowired
+    private ContractService contractService;
+
     private final FlowConstructor flowConstructor = FlowConstructor.init(new ExampleAbstract() {
 
         @Override
@@ -39,6 +44,10 @@ public class InitiateApplyFlowService {
             ApplyPurchaseVo applyVo = getCacheData(ApplyPurchaseVo.class);
             applyVo.setFlowStatus(FlowStatusEnum.ADOPT.getType());
             applyPurchaseService.updateById(applyVo);
+
+            // 生成合同
+            contractService.create(applyVo);
+
         }
 
         @Override
@@ -61,17 +70,24 @@ public class InitiateApplyFlowService {
     @Transactional(rollbackFor = Exception.class)
     public void create(ApplyPurchaseVo applyPurchaseVo) {
 
+        String code = applyPurchaseService.getCode();
+
         // 添加申购
         applyPurchaseVo.setFlowStatus(FlowStatusEnum.WAIT.getType());
         applyPurchaseVo.setSafetyStockCreate(StatusConstant.NO);
-        applyPurchaseVo.setCode(applyPurchaseService.getCode());
+        applyPurchaseVo.setCode(code);
         applyPurchaseService.save(applyPurchaseVo);
 
         Long id = applyPurchaseVo.getId();
 
         // 添加申购明细
         List<ApplyPurchaseDetails> applyDetailsList = applyPurchaseVo.getApplyDetailsList();
-        applyDetailsList.forEach(item -> item.setApplyPurchaseId(id));
+        applyDetailsList.forEach(item -> {
+            item.setApplyPurchaseId(id);
+            item.setApplyPurchaseCode(code);
+            item.setArrivalQuantity(BigDecimal.ZERO);
+            item.setAfloatQuantity(BigDecimal.ZERO);
+        });
         applyPurchaseDetailsService.saveBatch(applyDetailsList);
 
         flowConstructor.create(id, "发起申购", applyPurchaseVo.getRemark(), applyPurchaseVo);

+ 10 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java

@@ -74,6 +74,16 @@ public class StockBackController {
     }
 
     /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    public R delete(@RequestBody Map<String, Long> condition) {
+        Long stockBackId = condition.get("stockBackId");
+        stockBackService.delete(stockBackId);
+        return R.success();
+    }
+
+    /**
      * 退仓复核详情
      */
     @PostMapping("/checkDetails")

+ 1 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.xml

@@ -31,6 +31,7 @@
         from stock_back sb
                  left join u_user uu on sb.operator_id = uu.ID
         where sb.status = 0
+          and sb.del_flag = 0
     </select>
 
     <select id="userStatistics" resultType="java.util.Map">

+ 1 - 1
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackService.java

@@ -28,7 +28,7 @@ public interface StockBackService extends BaseService<StockBack> {
 
     void edit(StockBackVo stockBackVo);
 
-    void delete(StockBackVo stockBackVo);
+    void delete(Long stockBackId);
 
     List<Map<String, Object>> getPickingToday(Map<String, String> condition);
 

+ 10 - 2
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

@@ -74,9 +74,16 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
         updateById(stockBackVo);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void delete(StockBackVo stockBackVo) {
-        removeById(stockBackVo.getId());
+    public void delete(Long stockBackId) {
+        removeById(stockBackId);
+
+        stockBackDetailsService.update(Wrappers.<StockBackDetails>lambdaUpdate()
+                .eq(StockBackDetails::getStockBackId, stockBackId)
+                .set(StockBackDetails::getMaterialMeters, BigDecimal.ZERO)
+        );
+
     }
 
     @Override
@@ -132,6 +139,7 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
             stockBack.setOperationNum(materialMetersList.size());
             stockBack.setOperationMeters(materialMetersList.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
             stockBack.setStatus(StatusConstant.NO);
+            stockBack.setDelFlag(0);
             save(stockBack);
 
             // 退仓详情