Ver Fonte

申购优化

24282 há 1 ano atrás
pai
commit
bfb7d02786

+ 10 - 0
sd-business/src/main/java/com/sd/business/controller/apply/ApplyBuyController.java

@@ -1,6 +1,7 @@
 package com.sd.business.controller.apply;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.flow.enums.FlowStatusEnum;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.sd.business.entity.apply.dto.ApplyBuyDto;
 import com.sd.business.entity.apply.dto.ApplyBuySelectDto;
@@ -48,6 +49,15 @@ public class ApplyBuyController {
     /**
      * 申购单修改
      */
+    @PostMapping("/add")
+    public void add(@Validated @RequestBody ApplyBuyDto dto) {
+        dto.setFlowStatus(FlowStatusEnum.READY_START.getKey());
+        applyBuyService.add(dto);
+    }
+
+    /**
+     * 申购单修改
+     */
     @PostMapping("/edit")
     public void edit(@Validated @RequestBody ApplyBuyDto dto) {
         applyBuyService.edit(dto);

+ 1 - 8
sd-business/src/main/java/com/sd/business/entity/apply/dto/ApplyBuyDto.java

@@ -2,7 +2,6 @@ package com.sd.business.entity.apply.dto;
 
 import com.sd.business.entity.apply.po.ApplyBuy;
 import com.sd.business.entity.apply.po.ApplyBuyBom;
-import com.sd.business.entity.apply.vo.ApplyBuyBomVo;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -22,13 +21,7 @@ public class ApplyBuyDto extends ApplyBuy {
     /**
      * 申购bom
      */
-    @NotEmpty(message = "申购明细不能为空")
+    @NotEmpty(message = "申购清单不能为空")
     private List<ApplyBuyBom> applyBuyBomList;
 
-    /**
-     * 申购bom
-     */
-    @NotEmpty(message = "申购明细不能为空")
-    private List<ApplyBuyBomVo> applyBuyBomVoList;
-
 }

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/apply/dto/ApplyBuySelectDto.java

@@ -20,7 +20,7 @@ public class ApplyBuySelectDto extends BaseSelectDto {
     private String code;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回
      */
     private Integer flowStatus;
 

+ 5 - 1
sd-business/src/main/java/com/sd/business/entity/apply/po/ApplyBuy.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 
 /**
@@ -28,11 +30,13 @@ public class ApplyBuy extends BasePo {
     /**
      * 申购人
      */
+    @NotBlank(message = "申购人不能为空")
     private String applyName;
 
     /**
      * 申购时间
      */
+    @NotNull(message = "申购时间不能为空")
     private Date applyTime;
 
     /**
@@ -46,7 +50,7 @@ public class ApplyBuy extends BasePo {
     private Long flowId;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回 4已采购
      */
     private Integer flowStatus;
 

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/apply/po/ApplyBuyBom.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 
 /**
@@ -28,11 +30,14 @@ public class ApplyBuyBom extends BasePo {
     /**
      * bom规格id
      */
+    @NotNull(message = "bom规格Id不能为空")
     private Long bomSpecId;
 
     /**
      * 申购数量
      */
+    @NotNull(message = "申购数量不能为空")
+    @DecimalMin(value = "0.01", message = "申购数量不能为空")
     private BigDecimal quantity;
 
     /**

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/apply/vo/ApplyBuyVo.java

@@ -19,6 +19,6 @@ public class ApplyBuyVo extends ApplyBuy {
     /**
      * 申购明细
      */
-    private List<ApplyBuyBomVo> applyBuyBomVoList;
+    private List<ApplyBuyBomVo> applyBuyBomList;
 
 }

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/lend/dto/LendSelectDto.java

@@ -20,7 +20,7 @@ public class LendSelectDto extends BaseSelectDto {
     private String code;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回
      */
     private Integer flowStatus;
 

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/lend/po/Lend.java

@@ -56,7 +56,7 @@ public class Lend extends BasePo {
     private Long flowId;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回
      */
     private Integer flowStatus;
 

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseSelectDto.java

@@ -19,7 +19,7 @@ public class PurchaseSelectDto extends BaseSelectDto {
     private String code;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回
      */
     private Integer flowStatus;
 

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/purchase/po/Purchase.java

@@ -167,7 +167,7 @@ public class Purchase extends BasePo {
     private Long flowId;
 
     /**
-     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回
      */
     private Integer flowStatus;
 

+ 45 - 24
sd-business/src/main/java/com/sd/business/flow/ApplyBuyFlow.java

@@ -1,9 +1,6 @@
 package com.sd.business.flow;
 
-import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
 import com.fjhx.flow.enums.FlowStatusEnum;
@@ -13,16 +10,11 @@ import com.ruoyi.common.utils.SecurityUtils;
 import com.sd.business.entity.apply.dto.ApplyBuyDto;
 import com.sd.business.entity.apply.po.ApplyBuy;
 import com.sd.business.entity.apply.po.ApplyBuyBom;
-import com.sd.business.entity.apply.vo.ApplyBuyBomVo;
-import com.sd.business.service.apply.ApplyBuyBomService;
 import com.sd.business.service.apply.ApplyBuyService;
-import com.sd.business.util.CodeEnum;
 import com.sd.framework.util.Assert;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -35,9 +27,6 @@ public class ApplyBuyFlow extends FlowDelegate {
     @Autowired
     private ApplyBuyService applyBuyService;
 
-    @Autowired
-    private ApplyBuyBomService applyBuyBomService;
-
     @Override
     public String getFlowKey() {
         return "apply_buy";
@@ -49,24 +38,16 @@ public class ApplyBuyFlow extends FlowDelegate {
         ApplyBuyDto applyBuyDto = submitData.toJavaObject(ApplyBuyDto.class);
         validated(applyBuyDto);
 
-        Long applyBuyId = IdWorker.getId();
-
-        applyBuyDto.setId(applyBuyId);
-        applyBuyDto.setCode(CodeEnum.APPLY_BUY_CODE.getCode());
         applyBuyDto.setFlowId(flowId);
         applyBuyDto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
 
-        List<ApplyBuyBomVo> applyBuyBomVoList = applyBuyDto.getApplyBuyBomVoList();
-        List<ApplyBuyBom> applyBuyBomList = BeanUtil.copyToList(applyBuyBomVoList, ApplyBuyBom.class);
-        for (ApplyBuyBom applyBuyBom : applyBuyBomList) {
-            applyBuyBom.setApplyBuyId(applyBuyId);
-            applyBuyBom.setPurchaseQuantity(BigDecimal.ZERO);
+        if (applyBuyDto.getId() == null) {
+            applyBuyService.add(applyBuyDto);
+        } else {
+            applyBuyService.edit(applyBuyDto);
         }
 
-        applyBuyService.save(applyBuyDto);
-        applyBuyBomService.saveBatch(applyBuyBomList);
-
-        return applyBuyId;
+        return applyBuyDto.getId();
     }
 
     @Override
@@ -79,6 +60,46 @@ public class ApplyBuyFlow extends FlowDelegate {
         );
     }
 
+    /**
+     * 流程退回到发起人
+     *
+     * @param flowId     流程id
+     * @param businessId 业务id
+     * @param flowStatus 流程状态枚举
+     */
+    @Override
+    public void returnToOriginator(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        applyBuyService.update(q -> q
+                .eq(BaseIdPo::getId, FlowThreadLocalUtil.getBusinessId())
+                .set(ApplyBuy::getFlowStatus, flowStatus.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    /**
+     * 流程重新发起
+     *
+     * @param flowId     流程id
+     * @param businessId 业务id
+     * @param flowStatus 流程状态枚举
+     * @param submitData 发起参数
+     */
+    @Override
+    public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
+        ApplyBuyDto applyBuyDto = submitData.toJavaObject(ApplyBuyDto.class);
+        validated(applyBuyDto);
+        applyBuyDto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
+        applyBuyService.edit(applyBuyDto);
+    }
+
+    /**
+     * 流程驳回
+     *
+     * @param flowId     流程id
+     * @param businessId 业务id
+     * @param flowStatus 流程状态枚举
+     */
     @Override
     public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
         applyBuyService.update(q -> q

+ 15 - 24
sd-business/src/main/java/com/sd/business/flow/PurchaseFlow.java

@@ -10,13 +10,11 @@ import com.sd.business.entity.apply.po.ApplyBuyBom;
 import com.sd.business.entity.purchase.enums.PurchaseEnums;
 import com.sd.business.entity.purchase.po.Purchase;
 import com.sd.business.entity.purchase.po.PurchaseBom;
-import com.sd.business.entity.purchase.vo.PurchaseBomVo;
 import com.sd.business.entity.purchase.vo.PurchaseVo;
 import com.sd.business.service.apply.ApplyBuyBomService;
 import com.sd.business.service.apply.ApplyBuyService;
 import com.sd.business.service.purchase.PurchaseBomService;
 import com.sd.business.service.purchase.PurchaseService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -52,34 +50,27 @@ public class PurchaseFlow  extends FlowDelegate {
 
     @Override
     public Long start(Long flowId, JSONObject submitData) {
+
         PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
+        purchase.setFlowStatus(PurchaseEnums.IN_PROGRESS.getKey());
+        purchase.setFlowId(flowId);
 
-        //判断是否存在采购ID,如果存在说明已经暂存
-        if (ObjectUtil.isNotEmpty(purchase.getId())){
-            purchase.setFlowStatus(PurchaseEnums.IN_PROGRESS.getKey());
-            purchase.setFlowId(flowId);
-            //修改采购暂存表的数据
-            purchaseService.updateById(purchase);
+        // 获取到采购bom表的数据
+        List<PurchaseBom> purchaseBomList = purchase.getPurchaseBomList();
 
-            //删除采购bom表的数据
-            purchaseBomService.remove(Wrappers.<PurchaseBom>lambdaQuery().eq(PurchaseBom::getPurchaseId,purchase.getId()));
+        // 添加采购bom表的数据
+        purchaseBomList.forEach(purchaseBom -> purchaseBom.setPurchaseId(purchase.getId()));
 
-            //获取到采购bom表的数据
-            List<PurchaseBom> purchaseBomList = purchase.getPurchaseBomList();
-            //添加采购bom表的数据
-            purchaseBomList.forEach(purchaseBom -> purchaseBom.setPurchaseId(purchase.getId()));
-            purchaseBomService.saveBatch(purchaseBomList);
-        }else {
-            //修改状态为进行中
-            purchase.setFlowStatus(PurchaseEnums.IN_PROGRESS.getKey());
-            purchase.setFlowId(flowId);
-            purchaseService.save(purchase);
-            //获取到采购bom表的数据
-            List<PurchaseBom> purchaseBomList = purchase.getPurchaseBomList();
-            //添加采购bom表的数据
-            purchaseBomList.forEach(purchaseBom -> purchaseBom.setPurchaseId(purchase.getId()));
+        // 判断是否存在采购ID,如果存在说明已经暂存
+        if (ObjectUtil.isNotEmpty(purchase.getId())) {
+            purchaseBomService.editLinked(purchaseBomList, PurchaseBom::getPurchaseId, purchase.getId());
+        } else {
             purchaseBomService.saveBatch(purchaseBomList);
         }
+
+        // 更新或修改
+        purchaseService.saveOrUpdate(purchase);
+
         return purchase.getId();
     }
 

+ 5 - 0
sd-business/src/main/java/com/sd/business/service/apply/ApplyBuyService.java

@@ -29,6 +29,11 @@ public interface ApplyBuyService extends BaseService<ApplyBuy> {
     ApplyBuyVo detail(Long id);
 
     /**
+     * 申购单添加
+     */
+    void add(ApplyBuyDto dto);
+
+    /**
      * 申购单修改
      */
     void edit(ApplyBuyDto dto);

+ 25 - 8
sd-business/src/main/java/com/sd/business/service/apply/impl/ApplyBuyServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sd.business.service.apply.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -14,11 +15,13 @@ import com.sd.business.mapper.apply.ApplyBuyMapper;
 import com.sd.business.service.apply.ApplyBuyBomService;
 import com.sd.business.service.apply.ApplyBuyService;
 import com.sd.business.service.bom.BomSpecService;
+import com.sd.business.util.CodeEnum;
 import com.sd.framework.util.Assert;
 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;
 
 
@@ -54,8 +57,7 @@ public class ApplyBuyServiceImpl extends ServiceImpl<ApplyBuyMapper, ApplyBuy> i
         // 申购结束时间
         wrapper.le("ab", ApplyBuy::getApplyTime, dto.getEndTime());
 
-        Page<ApplyBuyVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        return page;
+        return this.baseMapper.getPage(dto.getPage(), wrapper);
     }
 
     @Override
@@ -68,10 +70,10 @@ public class ApplyBuyServiceImpl extends ServiceImpl<ApplyBuyMapper, ApplyBuy> i
 
         // 申购明细
         List<ApplyBuyBom> list = applyBuyBomService.list(q -> q.eq(ApplyBuyBom::getApplyBuyId, id));
-        List<ApplyBuyBomVo> applyBuyBomVoList = BeanUtil.copyToList(list, ApplyBuyBomVo.class);
+        List<ApplyBuyBomVo> applyBuyBomList = BeanUtil.copyToList(list, ApplyBuyBomVo.class);
 
         // 赋值bom规格
-        bomSpecService.attributeAssign(applyBuyBomVoList, ApplyBuyBom::getBomSpecId, (item, bomSpec) -> {
+        bomSpecService.attributeAssign(applyBuyBomList, ApplyBuyBom::getBomSpecId, (item, bomSpec) -> {
             item.setBomSpecCode(bomSpec.getCode());
             item.setBomSpecName(bomSpec.getName());
             item.setBomSpecColour(bomSpec.getColour());
@@ -84,23 +86,38 @@ public class ApplyBuyServiceImpl extends ServiceImpl<ApplyBuyMapper, ApplyBuy> i
 
         // 赋值返回值
         ApplyBuyVo result = BeanUtil.toBean(ApplyBuy, ApplyBuyVo.class);
-        result.setApplyBuyBomVoList(applyBuyBomVoList);
+        result.setApplyBuyBomList(applyBuyBomList);
         return result;
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(ApplyBuyDto dto) {
+    public void add(ApplyBuyDto dto) {
+        Long applyBuyId = IdWorker.getId();
+
+        dto.setId(applyBuyId);
+        dto.setCode(CodeEnum.APPLY_BUY_CODE.getCode());
+
+        List<ApplyBuyBom> applyBuyBomList = dto.getApplyBuyBomList();
+        applyBuyBomList.forEach(item -> {
+            item.setApplyBuyId(applyBuyId);
+            item.setPurchaseQuantity(BigDecimal.ZERO);
+        });
 
+        save(dto);
+        applyBuyBomService.saveBatch(applyBuyBomList);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(ApplyBuyDto dto) {
         Long applyBuyId = dto.getId();
-        Assert.notNull(applyBuyId, "申购单id不能为空");
 
         List<ApplyBuyBom> applyBuyBomList = dto.getApplyBuyBomList();
         applyBuyBomList.forEach(item -> item.setApplyBuyId(applyBuyId));
 
         updateById(dto);
         applyBuyBomService.editLinked(applyBuyBomList, ApplyBuyBom::getApplyBuyId, applyBuyId);
-
     }
 
 }