Browse Source

订单评审

yzc 11 tháng trước cách đây
mục cha
commit
4271119618

+ 11 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.flow.entity.flow.dto.FlowResult;
 import com.fjhx.item.entity.product.bo.ProductAnalysisBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
@@ -389,4 +390,14 @@ public class ContractController {
         contractService.createWaitMaterial(dto.getId());
     }
 
+    /**
+     * 创建评审
+     *
+     * @return
+     */
+    @PostMapping("/createReview")
+    public FlowResult createReview(@RequestBody ContractDto dto) {
+        return contractService.createReview(dto);
+    }
+
 }

+ 13 - 6
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractProductController.java

@@ -1,13 +1,13 @@
 package com.fjhx.sale.controller.contract;
 
-import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.sale.entity.contract.vo.ContractProductVo;
-import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
+import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.service.contract.ContractProductService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -17,7 +17,7 @@ import java.util.List;
  * 外销合同-产品 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @RestController
@@ -34,13 +34,15 @@ public class ContractProductController {
     public Page<ContractProductVo> page(@RequestBody ContractProductSelectDto dto) {
         return contractProductService.getPage(dto);
     }
+
     /**
      * 根据合同ID和客户ID查询未包装的产品
      */
     @GetMapping("/getNoPackContractProductById")
-    public List<ContractProductVo> getNoPackContractProductById(@RequestParam("customerId")String customerId, @RequestParam("contractIds")String contractIds) {
+    public List<ContractProductVo> getNoPackContractProductById(@RequestParam("customerId") String customerId, @RequestParam("contractIds") String contractIds) {
         return contractProductService.getNoPackContractProductById(customerId, contractIds);
     }
+
     /**
      * 外销合同-产品ID集合查询产品
      */
@@ -81,4 +83,9 @@ public class ContractProductController {
         contractProductService.delete(dto.getId());
     }
 
+    @PostMapping("/reviewDetail")
+    public ContractProductVo reviewDetail(@RequestBody BaseSelectDto dto) {
+        return contractProductService.reviewDetail(dto.getId());
+    }
+
 }

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractDto.java

@@ -2,6 +2,7 @@ package com.fjhx.sale.entity.contract.dto;
 
 import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.file.entity.ObsFile;
+import com.fjhx.flow.entity.flow.dto.FlowResult;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import lombok.Getter;
@@ -108,4 +109,9 @@ public class ContractDto extends Contract implements SetCustomizeAreaId {
      * 合同附件
      */
     private List<ObsFile> contractFileList;
+
+    /**
+     * 下发订单评审 流程用户选择
+     */
+    private List<FlowResult.SelectUser> selectUserList;
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -567,6 +567,11 @@ public class Contract extends BasePo {
      * 待采购状态
      */
     private Integer waitPurchaseStatus;
+
+    /**
+     * 评审状态
+     */
+    private Integer reviewStatus;
     //========================================================================
     /**
      * 交接单附件列表

+ 163 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProduct.java

@@ -2,12 +2,14 @@ package com.fjhx.sale.entity.contract.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fjhx.file.entity.ObsFile;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -111,6 +113,167 @@ public class ContractProduct extends BasePo {
     private Long oldContractProductId;
 
     private BigDecimal businessCostPrice;
+    //====订单评审表======================================================================================================
+    /**
+     * 评审状态
+     */
+    private Integer reviewStatus;
+    private Long reviewFlowId;
+
+    /**
+     * 评审表-样品承认 1是 0否
+     */
+    private Integer isSampleRecognize;
+
+    /**
+     * 评审表-工程变更 1是 0否
+     */
+    private Integer isProjectChang;
+
+    /**
+     * 评审表-环保要求 1环保产品 0非环保产品
+     */
+    private Integer isEcoFriendly;
+
+    /**
+     * 评审表-运输方式 字典
+     */
+    private String transportMethod;
+
+    /**
+     * 评审表-附出货报告 1是 0否
+     */
+    private Integer isShippingReport;
+
+    /**
+     * 评审表-BOM表 1是 0否
+     */
+    private Integer isBomTable;
+
+    /**
+     * 评审表-样品确认 1是 0否
+     */
+    private Integer isSampleConfirm;
+
+    /**
+     * 评审表-工艺流程图 1是 0否
+     */
+    private Integer isTechnologyProcess;
+
+    /**
+     * 评审表-刀模完成 1是 0否
+     */
+    private Integer isKnifeMold;
+
+    /**
+     * 评审表-图纸完成 1是 0否
+     */
+    private Integer isDrawing;
+
+    /**
+     * 评审表-颜色样品 1是 0否
+     */
+    private Integer isColorSample;
+
+    /**
+     * 评审表-包装要求 1是 0否
+     */
+    private Integer isPackInfo;
+
+    /**
+     * 评审表-特殊要求
+     */
+    private String specialRemark;
+
+    /**
+     * 评审表-主材交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date mainMaterialTime;
+
+    /**
+     * 评审表-包材交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date packMaterialTime;
+
+    /**
+     * 评审表-辅材交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date auxMaterialTime;
+
+    /**
+     * 评审表-其他交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date otherMaterialTime;
+
+    /**
+     * 评审表-采购注意事项
+     */
+    private String purchaseRemark;
+
+    /**
+     * 评审表-人员评估 10人员满足 20人员不足
+     */
+    private String personnelEval;
+
+    /**
+     * 评审表-设备评估 10设备满足 20设备不足
+     */
+    private String deviceEval;
+
+    /**
+     * 评审表-工艺评估 10工艺满足 20工艺不满足
+     */
+    private String technologyEval;
+
+    /**
+     * 评审表-瓶颈工序说明
+     */
+    private String bottleneckProcessRemark;
+
+    /**
+     * 评审表-检验标准 10客户标准 20行业标准 30公司标准
+     */
+    private String inspectStandard;
+
+    /**
+     * 评审表-抽样标准 10客户要求 20公司标准
+     */
+    private String samplingStandard;
+
+    /**
+     * 评审表-检验设备 10满足要求 20不满足要求
+     */
+    private String inspectDevice;
+
+    /**
+     * 评审表-生产注意事项
+     */
+    private String productionRemark;
+
+    /**
+     * 评审表-评审结果 10同意 20不同意
+     */
+    private String reviewResult;
+
+    /**
+     * 评审表-最终交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date finalDeliveryTime;
+
+    /**
+     * 评审表-外部支持 10外协 20外购
+     */
+    private String externalSupport;
+
+    /**
+     * 评审表-供应链管理部备注
+     */
+    private String supplyRemark;
 
     //==========================================================================================================
     /**

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProductBom.java

@@ -2,12 +2,14 @@ package com.fjhx.sale.entity.contract.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fjhx.file.entity.ObsFile;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -111,6 +113,12 @@ public class ContractProductBom extends BasePo {
      */
     private Integer lossRate;
 
+    /**
+     * 订单评审表 交期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date deliveryTime;
+
 
     /**
      * BOM附件

+ 52 - 41
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.entity.contract.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import lombok.Getter;
 import lombok.Setter;
@@ -70,47 +71,47 @@ public class ContractProductVo extends ContractProduct {
 
     /**
      * 货品规格型号
-	 */
-	private String productSpec;
-
-	/**
-	 * 货品类型
-	 */
-	private String productType;
-
-	private String productColor;
-
-	private String productClassifyName;
-
-	/**
-	 * 正面纹路
-	 */
-	private String productFrontalTexture;
-	/**
-	 * 反面纹路
-	 */
-	private String productReverseTexture;
-	/**
-	 * 净重
-	 */
-	private BigDecimal productNetWeight;
-	/**
-	 * 净重
-	 */
-	private BigDecimal netWeight;
-	/**
-	 * 单位
-	 */
-	private String unit;
-	/**
-	 * 产品图片地址
-	 */
-	private String productImgUrl;
-
-	/**
-	 * 所属分类id
-	 */
-	private Long productCategoryId;
+     */
+    private String productSpec;
+
+    /**
+     * 货品类型
+     */
+    private String productType;
+
+    private String productColor;
+
+    private String productClassifyName;
+
+    /**
+     * 正面纹路
+     */
+    private String productFrontalTexture;
+    /**
+     * 反面纹路
+     */
+    private String productReverseTexture;
+    /**
+     * 净重
+     */
+    private BigDecimal productNetWeight;
+    /**
+     * 净重
+     */
+    private BigDecimal netWeight;
+    /**
+     * 单位
+     */
+    private String unit;
+    /**
+     * 产品图片地址
+     */
+    private String productImgUrl;
+
+    /**
+     * 所属分类id
+     */
+    private Long productCategoryId;
 
     /**
      * 合同产品数量
@@ -221,6 +222,7 @@ public class ContractProductVo extends ContractProduct {
      * 业务员id
      */
     private Long salesmanId;
+    private String salesmanName;
 
     /**
      * 流程id
@@ -268,4 +270,13 @@ public class ContractProductVo extends ContractProduct {
      */
     private BigDecimal finishQuantity;
 
+    //订单评审表
+    private Integer contractPlaceOrderType;
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date contractCreateTime;
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date contractDeliveryTime;
+    private BigDecimal contractQualityLv;
+    private String productMaterial;
+
 }

+ 96 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/ContractReviewFlow.java

@@ -0,0 +1,96 @@
+package com.fjhx.sale.flow;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import com.fjhx.flow.enums.NodeTypeEnum;
+import com.fjhx.sale.entity.contract.dto.ContractProductDto;
+import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import com.fjhx.sale.service.contract.ContractProductBomService;
+import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.sale.service.contract.ContractService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class ContractReviewFlow extends FlowDelegate {
+
+    private final ContractService contractService;
+    private final ContractProductService contractProductService;
+    private final ContractProductBomService contractProductBomService;
+
+    public ContractReviewFlow(ContractService contractService, ContractProductService contractProductService, ContractProductBomService contractProductBomService) {
+        this.contractService = contractService;
+        this.contractProductService = contractProductService;
+        this.contractProductBomService = contractProductBomService;
+    }
+
+    @Override
+    public String getFlowKey() {
+        return "contract_review_flow";
+    }
+
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        ContractProductDto dto = submitData.toJavaObject(ContractProductDto.class);
+
+        //赋值流程信息
+        contractProductService.update(q -> q
+                .eq(ContractProduct::getId, dto.getId())
+                .set(ContractProduct::getReviewStatus, FlowStatusEnum1.UNDER_REVIEW.getKey())
+                .set(ContractProduct::getReviewFlowId, flowId)
+        );
+
+        return dto.getId();
+    }
+
+    @Override
+    public void defaultMethod(Long flowId, Long businessId, NodeTypeEnum handleNodeType, FlowStatusEnum flowStatus, JSONObject submitData) {
+        //修改数据
+        ContractProductDto dto = submitData.toJavaObject(ContractProductDto.class);
+        contractProductService.updateById(dto);
+        List<ContractProductBom> contractProductBomList = dto.getContractProductBomList();
+        contractProductBomService.updateBatchById(contractProductBomList);
+
+        //执行原本的方法
+        super.defaultMethod(flowId, businessId, handleNodeType, flowStatus, submitData);
+    }
+
+    @Override
+    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        contractProductService.update(q -> q
+                .eq(ContractProduct::getId, businessId)
+                .set(ContractProduct::getReviewStatus, FlowStatusEnum1.REJECT.getKey())
+        );
+    }
+
+    @Override
+    public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        contractProductService.update(q -> q
+                .eq(ContractProduct::getId, businessId)
+                .set(ContractProduct::getReviewStatus, FlowStatusEnum1.CANCELLATION.getKey())
+        );
+    }
+
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        contractProductService.update(q -> q
+                .eq(ContractProduct::getId, businessId)
+                .set(ContractProduct::getReviewStatus, FlowStatusEnum1.PASS.getKey())
+        );
+
+        //所有产品都评审 将合同改为已评审
+        ContractProduct contractProduct = contractProductService.getById(businessId);
+        long count = contractProductService.count(q -> q
+                .eq(ContractProduct::getContractId, contractProduct.getContractId())
+                .ne(ContractProduct::getReviewStatus, FlowStatusEnum1.PASS.getKey())
+        );
+        if (count == 0) {
+            contractService.update(q -> q.eq(Contract::getId, contractProduct.getId()).set(Contract::getReviewStatus, FlowStatusEnum1.PASS.getKey()));
+        }
+    }
+}

+ 8 - 2
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java

@@ -29,7 +29,6 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
 
     List<ContractProductVo> getList(@Param("ew") IWrapper<ContractProduct> wrapper);
 
-
     /**
      * 根据合同产品ID集合查询合同产品
      */
@@ -42,6 +41,7 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
 
     /**
      * ehsd交接单列表
+     *
      * @param page
      * @param wrapper
      * @return
@@ -50,18 +50,24 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
 
     /**
      * ehsd待质检列表
+     *
      * @param page
      * @param wrapper
      * @return
      */
     Page<ContractProductVo> getEHSDQualityPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper);
 
-
     /**
      * 合同交接单
+     *
      * @param page
      * @param wrapper
      * @return
      */
     Page<ContractProductVo> contractHandoverPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper);
+
+    /**
+     * 明细
+     */
+    ContractProductVo detail(@Param("id") Long id);
 }

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductService.java

@@ -61,4 +61,5 @@ public interface ContractProductService extends BaseService<ContractProduct> {
      */
     List<ContractProductVo> getNoPackContractProductById(String customerId, String contractIds);
 
+    ContractProductVo reviewDetail(Long id);
 }

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
+import com.fjhx.flow.entity.flow.dto.FlowResult;
 import com.fjhx.item.entity.product.bo.ProductAnalysisBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
@@ -271,4 +272,6 @@ public interface ContractService extends BaseService<Contract> {
     void editSettleDateRange(ContractDto dto);
 
     void createWaitMaterial(Long contractId);
+
+    FlowResult createReview(ContractDto dto);
 }

+ 17 - 2
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -14,8 +14,11 @@ import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
+import com.fjhx.sale.service.contract.ContractProductBomService;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.tenant.utils.DeptUstil;
 import com.ruoyi.common.exception.ServiceException;
@@ -52,6 +55,8 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     private PurchaseDetailService purchaseDetailService;
     @Autowired
     private FlowExampleService flowExampleService;
+    @Autowired
+    private ContractProductBomService contractProductBomService;
 
     /**
      * 分页
@@ -199,8 +204,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     @Override
     public ContractProductVo detail(Long id) {
-        ContractProduct ContractProduct = this.getById(id);
-        return BeanUtil.toBean(ContractProduct, ContractProductVo.class);
+        return BeanUtil.copyProperties(this.getById(id), ContractProductVo.class);
     }
 
     @Override
@@ -218,4 +222,15 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         this.removeById(id);
     }
 
+    @Override
+    public ContractProductVo reviewDetail(Long id) {
+        ContractProductVo result = baseMapper.detail(id);
+        List<ContractProductBom> list = contractProductBomService.list(q -> q
+                .eq(ContractProductBom::getContractProductId, id)
+                .eq(ContractProductBom::getType, 3)
+        );
+        result.setContractProductBomList(BeanUtil.copyToList(list, ContractProductBomVo.class));
+        return result;
+    }
+
 }

+ 34 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -46,9 +46,12 @@ import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.FileInfoVo;
 import com.fjhx.file.service.FileInfoService;
 import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.flow.entity.flow.dto.FlowResult;
+import com.fjhx.flow.entity.flow.dto.InitiateDto;
 import com.fjhx.flow.entity.flow.po.FlowExample;
 import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.flow.service.flow.FlowExampleService;
+import com.fjhx.flow.service.flow.FlowProcessService;
 import com.fjhx.item.entity.product.bo.ProductAnalysisBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
@@ -234,6 +237,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private CodingRuleService codingRuleService;
     @Autowired
     private EhsdPurchaseProductMapper ehsdPurchaseProductMapper;
+    @Autowired
+    private FlowProcessService flowProcessService;
 
     /**
      * 合同和样品单 下拉分页
@@ -3678,4 +3683,33 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         //---------------------------------------------------------------
     }
 
+    /**
+     * 创建订单评审
+     *
+     * @return
+     */
+    @DSTransactional
+    @Override
+    public FlowResult createReview(ContractDto dto) {
+        Assert.notEmpty(dto.getId(), "合同Id不能为空!");
+
+        //改为进行中
+        this.update(q -> q.eq(Contract::getId, dto.getId()).set(Contract::getReviewStatus, FlowStatusEnum1.UNDER_REVIEW.getKey()));
+
+        List<ContractProduct> list = contractProductService.list(q -> q.eq(ContractProduct::getContractId, dto.getId()));
+        for (ContractProduct contractProduct : list) {
+            String contractProductJsonStr = JSONObject.toJSONString(contractProduct);
+            //发起流程
+            InitiateDto initiateDto = new InitiateDto();
+            initiateDto.setFlowKey("contract_review_flow");
+            initiateDto.setData(com.alibaba.fastjson.JSONObject.parseObject(contractProductJsonStr));
+            initiateDto.setSelectUserList(dto.getSelectUserList());
+            FlowResult initiate = flowProcessService.initiate(initiateDto);
+            if (!initiate.getSuccess()) {
+                return initiate;
+            }
+        }
+        return null;
+    }
+
 }

+ 130 - 118
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -4,19 +4,19 @@
 
     <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT t1.id,
-               t2.create_time     AS contractTime,
+               t2.create_time AS contractTime,
                t1.contract_id,
                t1.product_id,
-               t2.`code`          AS contractCode,
-               t2.user_name       AS userName,
-               t2.create_user     AS salesmanId,
-               t2.version         AS contractVersion,
+               t2.`code`      AS contractCode,
+               t2.user_name   AS userName,
+               t2.create_user AS salesmanId,
+               t2.version     AS contractVersion,
                t1.expend_quantity AS expendQuantity,
                (SELECT create_time
                 FROM claim_contract
                 WHERE contract_id = t2.id
                 ORDER BY create_time DESC
-                                     LIMIT 1)               AS claimTime,
+                                 LIMIT 1)               AS claimTime,
                t2.contract_template_id AS contractTemplateId,
                t1.quantity,
                t2.company_id,
@@ -30,118 +30,108 @@
     </select>
 
     <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
-        SELECT
-            *
-        FROM
-            (
-                SELECT
-                    IFNULL(t3.`status`,0) AS qualityStatus,
-                    t1.create_time AS ct,
-                    "外销合同" AS orderType,
-                    t1.id,
-                    t1.product_model AS productModel,
-                    t1.product_name AS productName,
-                    t1.contract_id,
-                    t1.product_id,
-                    t2.`code` AS `contractCode`,
-                    t2.user_name AS userName,
-                    t2.version AS contractVersion,
-                    t1.expend_quantity AS expendQuantity,
-                    t2.sell_corporation_id,
-                    t2.buy_corporation_id,
-                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
-                    t1.quantity
-                FROM
+        SELECT *
+        FROM (SELECT IFNULL(t3.`status`, 0) AS  qualityStatus,
+                     t1.create_time         AS  ct,
+                     "外销合同"             AS  orderType,
+                     t1.id,
+                     t1.product_model       AS  productModel,
+                     t1.product_name        AS  productName,
+                     t1.contract_id,
+                     t1.product_id,
+                     t2.`code`              AS  `contractCode`,
+                     t2.user_name           AS  userName,
+                     t2.version             AS  contractVersion,
+                     t1.expend_quantity     AS  expendQuantity,
+                     t2.sell_corporation_id,
+                     t2.buy_corporation_id,
+                     (SELECT create_time
+                      FROM claim_contract
+                      WHERE contract_id = t2.id
+                      ORDER BY create_time DESC LIMIT 1) AS claimTime,
+             t1.quantity FROM
                     contract_product t1
-                LEFT JOIN contract t2 ON t1.contract_id = t2.id
-                LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
-                WHERE
-                    t2.`status` &gt;= 30
-                    AND t2.`status` &lt; 88
+                LEFT JOIN contract t2
+        ON t1.contract_id = t2.id
+            LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
+        WHERE
+            t2.`status` &gt;= 30
+          AND t2.`status`
+         &lt; 88
         UNION ALL
-                SELECT
-                    IFNULL(t3.`status`,0) AS qualityStatus,
-                    t1.create_time AS ct,
-                    "样品单" AS orderType,
-                    t1.id,
-                    t1.product_model AS productModel,
-                    t1.product_name AS productName,
-                    t1.sample_id,
-                    t1.product_id,
-                    t2.`code` AS `contractCode`,
-                    t2.user_name AS userName,
-                    t2.versions AS contractVersion,
-                    t1.expend_quantity AS expendQuantity,
-                    t2.sell_corporation_id,
-                    t2.buy_corporation_id,
-                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
+        SELECT IFNULL(t3.`status`, 0) AS                                                                   qualityStatus,
+               t1.create_time         AS                                                                   ct,
+               "样品单"               AS                                                                   orderType,
+               t1.id,
+               t1.product_model       AS                                                                   productModel,
+               t1.product_name        AS                                                                   productName,
+               t1.sample_id,
+               t1.product_id,
+               t2.`code`              AS                                                                   `contractCode`,
+               t2.user_name           AS                                                                   userName,
+               t2.versions            AS                                                                   contractVersion,
+               t1.expend_quantity     AS                                                                   expendQuantity,
+               t2.sell_corporation_id,
+               t2.buy_corporation_id,
+               (SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
                     t1.quantity
-                FROM
-                    sample_product t1
-                    LEFT JOIN sample t2 ON t1.sample_id = t2.id
-                    LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
-                    WHERE
-                    t2.`status` &gt;= 30
-                    AND t2.`status` &lt; 88
-        ) t1
-            ${ew.customSqlSegment}
-    </select>
-
-    <select id="getEHSDQualityPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
-        SELECT
-            *
         FROM
-            (
-                SELECT
-                    t1.create_time AS ct,
-                    "外销合同" AS orderType,
-                    t1.id,
-                    t1.product_model AS productModel,
-                    t1.product_name AS productName,
-                    t1.contract_id,
-                    t1.product_id,
-                    t2.`code` AS `contractCode`,
-                    t2.user_name AS userName,
-                    t2.version AS contractVersion,
-                    t1.expend_quantity AS expendQuantity,
-                    t3.`status` AS qualityStatus,
-                    t3.create_time AS qualityTime,
-                    t3.user_name AS qualityUserName,
-                    t2.buy_corporation_id,
-                    t3.summary AS summary
-                FROM
-                    contract_product t1
-            LEFT JOIN contract t2 ON t1.contract_id = t2.id
-            LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
-            WHERE
-                t2.`status` &gt;= 30
-              AND t2.`status` &lt; 88
-        UNION ALL
-        SELECT
-            t1.create_time AS ct,
-            "样品单" AS orderType,
-            t1.id,
-            t1.product_model AS productModel,
-            t1.product_name AS productName,
-            t1.sample_id,
-            t1.product_id,
-            t2.`code` AS `contractCode`,
-            t2.user_name AS userName,
-            t2.versions AS contractVersion,
-            t1.expend_quantity AS expendQuantity,
-            t3.`status` AS qualityStatus,
-            t3.create_time AS qualityTime,
-            t3.user_name AS qualityUserName,
-            t2.buy_corporation_id
-            t3.summary AS summary
-                FROM
             sample_product t1
-            LEFT JOIN sample t2 ON t1.sample_id = t2.id
+            LEFT JOIN sample t2
+        ON t1.sample_id = t2.id
             LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
         WHERE
             t2.`status` &gt;= 30
-          AND t2.`status` &lt; 88
-            ) t1
+          AND t2.`status`
+         &lt; 88
+            ) t1 ${ew.customSqlSegment}
+    </select>
+
+    <select id="getEHSDQualityPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT *
+        FROM (SELECT t1.create_time     AS ct,
+                     "外销合同"         AS orderType,
+                     t1.id,
+                     t1.product_model   AS productModel,
+                     t1.product_name    AS productName,
+                     t1.contract_id,
+                     t1.product_id,
+                     t2.`code`          AS `contractCode`,
+                     t2.user_name       AS userName,
+                     t2.version         AS contractVersion,
+                     t1.expend_quantity AS expendQuantity,
+                     t3.`status`        AS qualityStatus,
+                     t3.create_time     AS qualityTime,
+                     t3.user_name       AS qualityUserName,
+                     t2.buy_corporation_id,
+                     t3.summary         AS summary
+              FROM contract_product t1
+                       LEFT JOIN contract t2 ON t1.contract_id = t2.id
+                       LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
+              WHERE t2.`status` &gt;= 30
+                AND t2.`status` &lt; 88
+              UNION ALL
+              SELECT t1.create_time     AS ct,
+                     "样品单"           AS orderType,
+                     t1.id,
+                     t1.product_model   AS productModel,
+                     t1.product_name    AS productName,
+                     t1.sample_id,
+                     t1.product_id,
+                     t2.`code`          AS `contractCode`,
+                     t2.user_name       AS userName,
+                     t2.versions        AS contractVersion,
+                     t1.expend_quantity AS expendQuantity,
+                     t3.`status`        AS qualityStatus,
+                     t3.create_time     AS qualityTime,
+                     t3.user_name       AS qualityUserName,
+                     t2.buy_corporation_id
+                  t3.summary AS summary
+              FROM sample_product t1
+                       LEFT JOIN sample t2 ON t1.sample_id = t2.id
+                       LEFT JOIN ehsd_quality t3 ON t1.id = t3.business_id
+              WHERE t2.`status` &gt;= 30
+                AND t2.`status` &lt; 88) t1
             ${ew.customSqlSegment}
     </select>
 
@@ -205,15 +195,16 @@
         t2.buy_corporation_id buyCorporationId,
         t1.quantity,
         <!-- 待采购数量-->
-            t1.expend_quantity AS expendQuantity,
-            <!-- 交接单时间-->
-            t3.sampleTime,
-            <!-- 合同审批通过后的时间(每次合同审批后都会修改时间 所以取update_time) -->
-            t2.update_time updateTime,
+        t1.expend_quantity AS expendQuantity,
+        <!-- 交接单时间-->
+        t3.sampleTime,
+        <!-- 合同审批通过后的时间(每次合同审批后都会修改时间 所以取update_time) -->
+        t2.update_time updateTime,
 
-            <!-- 合同到账时间-->
-            ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
-            t2.create_user
+        <!-- 合同到账时间-->
+        ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS
+        claimTime,
+        t2.create_user
         FROM
         contract_product t1
         LEFT JOIN contract t2 ON t1.contract_id = t2.id
@@ -242,4 +233,25 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="detail" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT cp.*,
+               c.place_order_type,
+               c.create_time   AS contractCreateTime,
+               c.`code`        AS contractCode,
+               c.delivery_time AS contractDeliveryTime,
+               c.salesman_id,
+               su.nick_name    AS salesmanName,
+               c.quality_lv    AS contractQualityLv,
+               cu.`name`       AS customerName,
+               pi.custom_code  AS productCode,
+               pi.color        AS productColor,
+               pi.material     AS productMaterial
+        FROM contract_product cp
+                 JOIN contract c ON cp.contract_id = c.id
+                 LEFT JOIN customer cu ON c.buy_corporation_id = cu.id
+                 LEFT JOIN product_info pi ON cp.product_id = pi.id
+                 LEFT JOIN sys_user su ON c.salesman_id = su.user_id
+        WHERE cp.id = #{id}
+    </select>
+
 </mapper>