浏览代码

杰生重构 退货出库报废出库

home 2 年之前
父节点
当前提交
512dd194e2

+ 0 - 1
hx-service-api/service-flow-api/src/main/java/com/fjhx/utils/FlowConstructor.java

@@ -89,7 +89,6 @@ public class FlowConstructor {
         jumpVo.setRemarks(remarks);
         jumpVo.setCacheDataStr(cacheDataStr);
 
-
         result = flowJump(jumpVo);
         result.setDeleteExample(true);
 

+ 1 - 1
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/enums/OutTypeEnum.java

@@ -19,7 +19,7 @@ public enum OutTypeEnum {
     BINDING_ERROR(24, "绑定错误"),
     TAG_DAMAGE(25, "标签损坏出库"),
     RETURN_ISSUE(26, "退货出库"),
-    Scrap_issue(27, "报废出库"),
+    SCRAP_ISSUE(27, "报废出库"),
     WAREHOUSE_ADJUSTMENT(28, "调仓出库");
 
     private final Integer type;

+ 2 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterVo.java

@@ -18,4 +18,6 @@ public class WaterVo extends Water {
 
     private List<Long> waterTagIdList;
 
+    private Integer flowFlag;
+
 }

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

@@ -29,9 +29,9 @@ public class InspectionExemptionFlowService {
     });
 
     @Transactional(rollbackFor = Exception.class)
-    public void create(Long qualityTestingId) {
+    public void create(Long qualityTestingId, String remark) {
         String title = Objects.requireNonNull(AuthUtil.getUser()).getUserName() + "的免检申请";
-        flowConstructor.create(qualityTestingId, title, null, qualityTestingId);
+        flowConstructor.create(qualityTestingId, title, remark, qualityTestingId);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 1 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/service/flow/MaterialUpdateFlowService.java

@@ -35,7 +35,7 @@ public class MaterialUpdateFlowService {
 
     @Transactional(rollbackFor = Exception.class)
     public void create(Material material) {
-        flowConstructor.create(material.getId(), "物料修改", "", material);
+        flowConstructor.create(material.getId(), "物料修改", null, material);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 50 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/flow/ReturnOrScrapIssueFlowService.java

@@ -0,0 +1,50 @@
+package com.fjhx.service.flow;
+
+import com.fjhx.params.JumpVo;
+import com.fjhx.params.water.WaterVo;
+import com.fjhx.service.water.WaterService;
+import com.fjhx.utils.ExampleAbstract;
+import com.fjhx.utils.FlowConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+/**
+ * 退货报废审批流
+ */
+@Service
+public class ReturnOrScrapIssueFlowService {
+
+    @Autowired
+    private WaterService waterService;
+
+    private final FlowConstructor flowConstructor = FlowConstructor.init(new ExampleAbstract() {
+
+        @Override
+        public String getCode() {
+            return "js_returnOrScrapIssue";
+        }
+
+        @Override
+        public void end() {
+            WaterVo waterVo = getCacheData(WaterVo.class);
+            waterService.add(waterVo);
+        }
+
+    });
+
+    @Transactional(rollbackFor = Exception.class)
+    public void create(WaterVo waterVo) {
+        String title = Objects.requireNonNull(AuthUtil.getUser()).getUserName() + "的退货/报损申请";
+        flowConstructor.create(waterVo.getId(), title, waterVo.getRemark(), waterVo);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void jump(JumpVo jumpVo) {
+        flowConstructor.jump(jumpVo);
+    }
+
+}

+ 6 - 3
hx-service/storage-restructure/src/main/java/com/fjhx/service/quality/impl/QualityTestingServiceImpl.java

@@ -215,8 +215,10 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
     public void submit(Condition condition) {
         Long qualityTestingId = condition.getLong("qualityTestingId", "质检id不能为空");
         Integer isInspectionExemption = condition.getInt("isInspectionExemption", "是否免检不能为空");
+        String remark = condition.getStr("remark");
+
         if (StatusConstant.YES.equals(isInspectionExemption)) {
-            inspectionExemptionFlowService.create(qualityTestingId);
+            inspectionExemptionFlowService.create(qualityTestingId, remark);
         }
 
         Date date = new Date();
@@ -242,6 +244,7 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
 
         if (qualityTestingDetailsList.size() > 0) {
 
+            // 循环质检明细列表
             for (QualityTestingDetails qualityTestingDetails : qualityTestingDetailsList) {
                 // 质检数量
                 checkQuantity = checkQuantity.add(qualityTestingDetails.getQuantity());
@@ -274,7 +277,7 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
         // 同批次其他标签改为无需质检
         waterTagService.update(Wrappers.<WaterTag>lambdaUpdate()
                 .eq(WaterTag::getWaterBatchId, qualityTesting.getWaterBatchId())
-                .notIn(tagIdList.size() > 0, StorageBaseEntity::getId, tagIdList)
+                .eq(WaterTag::getCheckStatus, CheckStatusEnum.NO_QUALITY_INSPECTION.getType())
                 .set(WaterTag::getCheckStatus, CheckStatusEnum.NO_QUALITY_INSPECTION_REQUIRED.getType())
                 .set(StorageBaseEntity::getUpdateTime, date)
                 .set(StorageBaseEntity::getUpdateUser, userId));
@@ -302,7 +305,7 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
         if (day <= 3) {
             return 100;
         }
-        
+
         return Math.max(Convert.toInt(100 - (day - 3) * 5), 0);
     }
 

+ 16 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fjhx.service.water.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.water.Water;
@@ -10,6 +11,7 @@ import com.fjhx.enums.OutTypeEnum;
 import com.fjhx.mapper.water.WaterMapper;
 import com.fjhx.params.water.WaterVo;
 import com.fjhx.service.contract.ContractDetailsService;
+import com.fjhx.service.flow.ReturnOrScrapIssueFlowService;
 import com.fjhx.service.quality.QualityTestingService;
 import com.fjhx.service.stock.StockService;
 import com.fjhx.service.water.WaterDetailService;
@@ -49,6 +51,9 @@ public class WaterServiceImpl extends ServiceImpl<WaterMapper, Water> implements
     @Autowired
     private QualityTestingService qualityTestingService;
 
+    @Autowired
+    private ReturnOrScrapIssueFlowService returnOrScrapIssueFlowService;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(WaterVo waterVo) {
@@ -59,6 +64,16 @@ public class WaterServiceImpl extends ServiceImpl<WaterMapper, Water> implements
         // 出库或入库类型枚举
         Enum<?> typeEnum = getInOutType(waterVo.getType());
 
+        // 如果是退货或者报废,审批通过后再出库
+        if (typeEnum instanceof OutTypeEnum
+                && (typeEnum.equals(OutTypeEnum.RETURN_ISSUE) || typeEnum.equals(OutTypeEnum.SCRAP_ISSUE))
+                && waterVo.getFlowFlag() == null) {
+            waterVo.setId(IdWorker.getId());
+            waterVo.setFlowFlag(StatusConstant.YES);
+            returnOrScrapIssueFlowService.create(waterVo);
+            return;
+        }
+
         // 获取变更标签
         List<WaterTag> waterTagList = getWaterTagList(waterVo.getWaterTagIdList());
 
@@ -94,7 +109,7 @@ public class WaterServiceImpl extends ServiceImpl<WaterMapper, Water> implements
      * 必填字段校验
      */
     private void requiredFieldVerification(WaterVo waterVo) {
-        Assert.notEmpty(waterVo.getStockHouseId(), "仓库id不能为空");
+        // Assert.notEmpty(waterVo.getStockHouseId(), "仓库id不能为空");
         Assert.notEmpty(waterVo.getOperUserId(), "操作人id不能为空");
         Assert.notEmpty(waterVo.getType(), "库存变更类型不能为空");
         Assert.notEmpty(waterVo.getDevice(), "出入库设备类型不能为空");

+ 17 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockWaterController.java

@@ -118,6 +118,23 @@ public class StockWaterController {
         return R.success(result);
     }
 
+    /**
+     * 合同付款列表关联
+     */
+    @PostMapping("contractPaymentList")
+    public R contractPaymentList(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = stockWaterService.contractPaymentList(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 入库单列表关联
+     */
+    @PostMapping("receiptList")
+    public R receiptList(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = stockWaterService.receiptList(condition);
+        return R.success(result);
+    }
 
 }
 

+ 7 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockWaterMapper.java

@@ -57,4 +57,11 @@ public interface StockWaterMapper extends BaseMapper<StockWater> {
     @InterceptorIgnore(tenantLine = "1")
     @TenantIgnore
     Page<Map<String, Object>> receiptSequence(@Param("page") Page<StockWater> page, @Param("condition") Map<String, String> condition);
+
+    @TenantIgnore
+    List<Map<String, Object>> contractPaymentList(@Param("balancePurBillNo") String balancePurBillNo);
+
+    @TenantIgnore
+    List<Map<String, Object>> receiptList(@Param("purchaseBillNo") String purchaseBillNo);
+
 }

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

@@ -251,5 +251,40 @@
         asod.BalancePurBillNo)
     </select>
 
+    <select id="contractPaymentList" resultType="java.util.Map">
+        SELECT left(asod.CreatedTime, 10) outDate,
+               asod.BalancePurBillNo,
+               asod.MaterialCode,
+               asot.BatchNo,
+               round(asot.Quantity) AS    Quantity,
+               asot.Price,
+               asot.Amount,
+               asot.ApplyReason
+        FROM apply_stockoutdetail asod
+                 LEFT JOIN apply_stockouttag asot ON asod.ID = asot.LinkBackDetailId
+        WHERE asod.BalanceAcount = 0
+          AND asod.BackMaterialProgress = 4
+          AND asod.balancePurBillNo = #{balancePurBillNo}
+    </select>
+
+    <select id="receiptList" resultType="java.util.Map">
+        SELECT ifnull(asod.BalancePurBillNo, '未关联'),
+               CASE
+                   asod.BalanceAcount
+                   WHEN 0 THEN
+                       '未冲抵'
+                   WHEN 1 THEN
+                       '已冲抵'
+                   END              AS balanceState,
+               asot.PurchaseBillNo,
+               round(asot.Quantity) AS Quantity,
+               asot.ApplyReason
+        FROM apply_stockoutdetail asod
+                 LEFT JOIN apply_stockouttag asot ON asod.ID = asot.LinkBackDetailId
+        WHERE BackMaterialType = 1
+          AND asot.PurchaseBillNo = #{purchaseBillNo}
+          AND asod.BackMaterialProgress >= 4
+    </select>
+
 
 </mapper>

+ 4 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockWaterService.java

@@ -37,4 +37,8 @@ public interface StockWaterService extends BaseService<StockWater> {
 
     Page<Map<String, Object>> receiptSequence(Map<String, String> condition);
 
+    List<Map<String, Object>> contractPaymentList(Map<String, String> condition);
+
+    List<Map<String, Object>> receiptList(Map<String, String> condition);
+
 }

+ 12 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockWaterServiceImpl.java

@@ -523,6 +523,18 @@ public class StockWaterServiceImpl extends ServiceImpl<StockWaterMapper, StockWa
         return baseMapper.receiptSequence(createPage(condition), condition);
     }
 
+    @Override
+    public List<Map<String, Object>> contractPaymentList(Map<String, String> condition) {
+        String balancePurBillNo = condition.get("balancePurBillNo");
+        return baseMapper.contractPaymentList(balancePurBillNo);
+    }
+
+    @Override
+    public List<Map<String, Object>> receiptList(Map<String, String> condition) {
+        String purchaseBillNo = condition.get("purchaseBillNo");
+        return baseMapper.receiptList(purchaseBillNo);
+    }
+
 
     private QueryWrapper<?> createRemainingTodayWrapper(Map<String, String> condition) {
         QueryWrapper<?> wrapper = WrapperUtil.init(condition)