From bdde1c2c0cd6c33435f894c126dc71b4ad5528e4 Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期五, 16 一月 2026 15:26:17 +0800
Subject: [PATCH] 出库通知单逻辑修改

---
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java |  239 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 189 insertions(+), 50 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
index d5c9e2b..cfe719f 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -3,22 +3,23 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fzzy.igds.constant.AuditStatus;
 import com.fzzy.igds.constant.Constant;
-import com.fzzy.igds.data.ExportWordParam;
-import com.fzzy.igds.data.NoticeDto;
-import com.fzzy.igds.data.NoticeParam;
-import com.fzzy.igds.domain.Depot;
-import com.fzzy.igds.domain.Dept;
+import com.fzzy.igds.constant.InoutConstant;
+import com.fzzy.igds.data.*;
+import com.fzzy.igds.domain.*;
 import com.fzzy.igds.mapper.InoutNoticeInMapper;
 import com.fzzy.igds.mapper.InoutNoticeOutMapper;
-import com.fzzy.igds.domain.InoutNoticeIn;
-import com.fzzy.igds.domain.InoutNoticeOut;
 import com.fzzy.igds.utils.ContextUtil;
+import com.fzzy.work.data.WorkBizType;
+import com.fzzy.work.domain.WorkOrderConf;
+import com.fzzy.work.service.BizWorkService;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.transaction.annotation.Transactional;
+
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
@@ -42,8 +43,14 @@
     private DepotService depotService;
     @Resource
     private CoreDeptService coreDeptService;
+    @Resource
+    private PledgeContractService pledgeContractService;
+
+    @Resource
+    private BizWorkService workService;
 
     /*----------------------鍏ュ簱閫氱煡鍗曚俊鎭�-------------------------*/
+
     /**
      * 鍒嗛〉鏌ヨ鏁版嵁
      * @param page
@@ -52,19 +59,19 @@
     public void pageQueryIn(Page<InoutNoticeIn> page, NoticeParam param) {
         QueryWrapper<InoutNoticeIn> queryWrapper = new QueryWrapper<>();
 
-        if(null == param) {
+        if (null == param) {
             param = new NoticeParam();
         }
         param.setCompanyId(ContextUtil.getCompanyId());
 
         queryWrapper.eq("company_id", param.getCompanyId());
-        if(StringUtils.isNotBlank(param.getCustomerName())){
+        if (StringUtils.isNotBlank(param.getCustomerName())) {
             queryWrapper.like("customer_name", param.getCustomerName());
         }
-        if(StringUtils.isNotBlank(param.getFoodVariety())){
+        if (StringUtils.isNotBlank(param.getFoodVariety())) {
             queryWrapper.like("food_variety", param.getFoodVariety());
         }
-        if(StringUtils.isNotBlank(param.getCompleteStatus())){
+        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
             queryWrapper.like("complete_status", param.getCompleteStatus());
         }
 
@@ -78,20 +85,20 @@
     public List<InoutNoticeIn> getNoticeIn(NoticeParam param) {
 
         QueryWrapper<InoutNoticeIn> queryWrapper = new QueryWrapper<>();
-        if(StringUtils.isNotBlank(param.getCompanyId())){
+        if (StringUtils.isNotBlank(param.getCompanyId())) {
             queryWrapper.eq("company_id", param.getCompanyId());
         }
-        if(StringUtils.isNotBlank(param.getDeptId())){
+        if (StringUtils.isNotBlank(param.getDeptId())) {
             queryWrapper.eq("dept_id", param.getDeptId());
         }
-        if(StringUtils.isNotBlank(param.getCompleteStatus())){
+        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
             queryWrapper.eq("complete_status", param.getCompleteStatus());
         }
-        if(StringUtils.isNotBlank(param.getKey())){
+        if (StringUtils.isNotBlank(param.getKey())) {
             queryWrapper.like("name", param.getKey());
         }
         queryWrapper.orderByDesc("create_time");
-        
+
         return noticeInMapper.selectList(queryWrapper);
     }
 
@@ -128,22 +135,88 @@
      * @param data
      * @return
      */
-    public String saveOrUpdateIn(InoutNoticeIn data) {
+    @Transactional(rollbackFor = Exception.class)
+    public BaseResp saveOrUpdateIn(InoutNoticeIn data) {
+
+        //濡傛灉鏄簱鍖鸿嚜寤洪�氱煡鍗�
+        if (InoutConstant.NOTICE_IN_TYPE_10.equals(data.getType())) {
+            //鑾峰彇璐ㄦ娂鍚堝悓鏁版嵁
+            PledgeContract pledge = this.getPledgeByDepotId(data);
+            if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) {
+                return BaseResp.error("褰撳墠浠撳簱鏈夋湭瑙e帇鐨勮川鎶煎悎鍚岋紝璐ㄦ娂鍚堝悓=" + pledge.getName());
+            }
+        }
+
+        //濡傛灉璐ㄦ娂閫氱煡鍗�
+        if (InoutConstant.NOTICE_IN_TYPE_20.equals(data.getType())) {
+            //1.楠岃瘉閾惰鏄惁濉啓锛屾湭濉啓锛屽垯涓嶅厑璁镐繚瀛�
+            if (StringUtils.isEmpty(data.getBankId())) {
+                return BaseResp.error("璐ㄦ娂閾惰涓嶈兘涓虹┖锛�");
+            }
+            //2.楠岃瘉閾惰鍜屼粨搴撶殑瀵瑰簲鍏崇郴鏄惁姝g‘锛屼笉姝g‘鍒欎笉鍏佽淇濆瓨
+            PledgeContract pledge = this.getPledgeByDepotIdAndBankId(data);
+            if (null == pledge) {
+                return BaseResp.error("鏈幏鍙栧埌褰撳墠搴撳尯銆佷粨搴撳拰閾惰涔嬮棿鐨勮川鎶间俊鎭紒");
+            }
+        }
+
+        //淇敼鍜屾彁浜ゆ槸涓や釜閫昏緫鍒ゆ柇
         if (null == data.getUpdateBy()) {
-            data.setUpdateBy(ContextUtil.getLoginUserName());
-            data.setUpdateTime(new Date());
-            data.setCreateBy(ContextUtil.getLoginUserName());
-            data.setCreateTime(new Date());
-            data.setAuditStatus(AuditStatus.STATUS_10.getCode());
-            data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
-            noticeInMapper.insert(data);
+            return this.saveInAddStartWork(data);
         } else {
             data.setUpdateBy(ContextUtil.getLoginUserName());
             data.setUpdateTime(new Date());
             noticeInMapper.updateById(data);
+            return BaseResp.success();
+        }
+    }
+
+    private BaseResp saveInAddStartWork(InoutNoticeIn data) {
+        //鏁版嵁淇濆瓨
+        data.setUpdateBy(ContextUtil.getLoginUserName());
+        data.setUpdateTime(new Date());
+        data.setCreateBy(ContextUtil.getLoginUserName());
+        data.setCreateTime(new Date());
+        data.setAuditStatus(AuditStatus.STATUS_10.getCode());
+        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
+
+        //鎵ц娴佺▼
+        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
+        //娴佺▼涓嶅惎鐢�
+        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
+            data.setAuditStatus(AuditStatus.STATUS_20.getCode());
+            //data.setAuditDate(data.getCreateTime());
+        } else {
+            BaseResp resp = workService.startByNoticeIn(data, conf);
+            log.info("---------鍚姩宸ュ崟娴佺▼------{}", resp);
         }
 
-        return null;
+        noticeInMapper.insert(data);
+
+        return BaseResp.success();
+    }
+
+
+    /**
+     * 鍒ゆ柇褰撳墠浠撳簱鏄惁鍦ㄨ川鎶煎悎鍚屼腑鏈В鍘�
+     * @param data 褰撳墠鏁版嵁
+     * @return true-鍦ㄨ川鎶煎悎鍚屼腑鏈В鍘嬶紝false-鍦ㄨ川鎶煎悎鍚屼腑宸茶В鍘�
+     */
+    private PledgeContract getPledgeByDepotId(InoutNoticeIn data) {
+        IgdsBaseParam param = new IgdsBaseParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setDeptId(data.getDeptId());
+        param.setDepotId(data.getDepotId());
+        return pledgeContractService.getByDepotId(param);
+    }
+
+    private PledgeContract getPledgeByDepotIdAndBankId(InoutNoticeIn data) {
+        IgdsBaseParam param = new IgdsBaseParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setDeptId(data.getDeptId());
+        param.setDepotId(data.getDepotId());
+        param.setBankId(data.getBankId());
+        return pledgeContractService.getByDepotId(param);
     }
 
     /**
@@ -158,6 +231,7 @@
     }
 
     /*----------------------鍑哄簱閫氱煡鍗曚俊鎭�-------------------------*/
+
     /**
      * 鍒嗛〉鏌ヨ鏁版嵁
      * @param page
@@ -166,19 +240,19 @@
     public void pageQueryOut(Page<InoutNoticeOut> page, NoticeParam param) {
         QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
 
-        if(null == param) {
+        if (null == param) {
             param = new NoticeParam();
         }
         param.setCompanyId(ContextUtil.getCompanyId());
 
         queryWrapper.eq("company_id", param.getCompanyId());
-        if(StringUtils.isNotBlank(param.getCustomerName())){
+        if (StringUtils.isNotBlank(param.getCustomerName())) {
             queryWrapper.like("customer_name", param.getCustomerName());
         }
-        if(StringUtils.isNotBlank(param.getFoodVariety())){
+        if (StringUtils.isNotBlank(param.getFoodVariety())) {
             queryWrapper.like("food_variety", param.getFoodVariety());
         }
-        if(StringUtils.isNotBlank(param.getCompleteStatus())){
+        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
             queryWrapper.like("complete_status", param.getCompleteStatus());
         }
 
@@ -191,16 +265,16 @@
      */
     public List<InoutNoticeOut> getNoticeOut(NoticeParam param) {
         QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
-        if(StringUtils.isNotBlank(param.getCompanyId())){
+        if (StringUtils.isNotBlank(param.getCompanyId())) {
             queryWrapper.eq("company_id", param.getCompanyId());
         }
-        if(StringUtils.isNotBlank(param.getDeptId())){
+        if (StringUtils.isNotBlank(param.getDeptId())) {
             queryWrapper.eq("dept_id", param.getDeptId());
         }
-        if(StringUtils.isNotBlank(param.getCompleteStatus())){
+        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
             queryWrapper.eq("complete_status", param.getCompleteStatus());
         }
-        if(StringUtils.isNotBlank(param.getKey())){
+        if (StringUtils.isNotBlank(param.getKey())) {
             queryWrapper.like("name", param.getKey());
         }
         queryWrapper.orderByDesc("create_time");
@@ -241,21 +315,39 @@
      * @param data
      * @return
      */
-    public String saveOrUpdateOut(InoutNoticeOut data) {
+    @Transactional(rollbackFor = Exception.class)
+    public BaseResp saveOrUpdateOut(InoutNoticeOut data) {
+        //濡傛灉鍑哄簱閫氱煡鍗曠被鍨嬩负搴撳尯閫氱煡鍗曪紝楠岃瘉浠撳簱鏄惁鏄湭瑙e帇寰椾粨搴擄紝鏄垯涓嶅厑璁镐繚瀛�
+        if (InoutConstant.NOTICE_IN_TYPE_10.equals(data.getType())) {
+            //鍦ㄨ川鎶煎悎鍚屾壘鍒版湭瑙e帇锛屼笖璐ㄦ娂浠撳簱鍖呭惈褰撳墠浠撳簱鐨勬暟鎹�
+            //鑾峰彇璐ㄦ娂鍚堝悓鏁版嵁
+            PledgeContract pledge = this.getPledgeByDepotIdOut(data);
+            if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) {
+                return BaseResp.error("褰撳墠浠撳簱鏈夋湭瑙e帇鐨勮川鎶煎悎鍚岋紝璐ㄦ娂鍚堝悓=" + pledge.getName());
+            }
+        }
+        //濡傛灉鍑哄簱閫氱煡鍗曠被鍨嬩负鐩戠閫氱煡鍗�
+        //濡傛灉璐ㄦ娂閫氱煡鍗�
+        if (InoutConstant.NOTICE_IN_TYPE_20.equals(data.getType())) {
+            //1.楠岃瘉閾惰鏄惁濉啓锛屾湭濉啓锛屽垯涓嶅厑璁镐繚瀛�
+            if (StringUtils.isEmpty(data.getBankId())) {
+                return BaseResp.error("璐ㄦ娂閾惰涓嶈兘涓虹┖锛�");
+            }
+            //2.楠岃瘉閾惰鍜屼粨搴撶殑瀵瑰簲鍏崇郴鏄惁姝g‘锛屼笉姝g‘鍒欎笉鍏佽淇濆瓨
+            PledgeContract pledge = this.getPledgeByDepotIdAndBankIdOut(data);
+            if (null == pledge) {
+                return BaseResp.error("鏈幏鍙栧埌褰撳墠搴撳尯銆佷粨搴撳拰閾惰涔嬮棿鐨勮川鎶间俊鎭紒");
+            }
+        }
+
         if (null == data.getUpdateBy()) {
-            data.setUpdateBy(ContextUtil.getLoginUserName());
-            data.setUpdateTime(new Date());
-            data.setCreateBy(ContextUtil.getLoginUserName());
-            data.setCreateTime(new Date());
-            data.setAuditStatus(AuditStatus.STATUS_10.getCode());
-            data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
-            noticeOutMapper.insert(data);
+            return this.saveOutAddStartWork(data);
         } else {
             data.setUpdateBy(ContextUtil.getLoginUserName());
             data.setUpdateTime(new Date());
             noticeOutMapper.updateById(data);
+            return BaseResp.success();
         }
-        return null;
     }
 
     /**
@@ -267,6 +359,53 @@
     public String delDataOut(InoutNoticeOut data) {
         noticeOutMapper.deleteById(data);
         return null;
+    }
+
+    private BaseResp saveOutAddStartWork(InoutNoticeOut data) {
+        //鏁版嵁淇濆瓨
+        data.setUpdateBy(ContextUtil.getLoginUserName());
+        data.setUpdateTime(new Date());
+        data.setCreateBy(ContextUtil.getLoginUserName());
+        data.setCreateTime(new Date());
+        data.setAuditStatus(AuditStatus.STATUS_10.getCode());
+        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
+
+        //鎵ц娴佺▼
+        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
+        //娴佺▼涓嶅惎鐢�
+        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
+            data.setAuditStatus(AuditStatus.STATUS_20.getCode());
+            data.setAuditDate(data.getCreateTime());
+        } else {
+            BaseResp resp = workService.startByNoticeOut(data, conf);
+            log.info("---------鍚姩宸ュ崟娴佺▼------{}", resp);
+        }
+
+        noticeOutMapper.insert(data);
+
+        return BaseResp.success();
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠浠撳簱鏄惁鍦ㄨ川鎶煎悎鍚屼腑鏈В鍘�
+     * @param data 褰撳墠鏁版嵁
+     * @return true-鍦ㄨ川鎶煎悎鍚屼腑鏈В鍘嬶紝false-鍦ㄨ川鎶煎悎鍚屼腑宸茶В鍘�
+     */
+    private PledgeContract getPledgeByDepotIdOut(InoutNoticeOut data) {
+        IgdsBaseParam param = new IgdsBaseParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setDeptId(data.getDeptId());
+        param.setDepotId(data.getDepotId());
+        return pledgeContractService.getByDepotId(param);
+    }
+
+    private PledgeContract getPledgeByDepotIdAndBankIdOut(InoutNoticeOut data) {
+        IgdsBaseParam param = new IgdsBaseParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setDeptId(data.getDeptId());
+        param.setDepotId(data.getDepotId());
+        param.setBankId(data.getBankId());
+        return pledgeContractService.getByDepotId(param);
     }
 
     /**
@@ -407,10 +546,10 @@
         map.put("name", notice.getName());
 
         String type = "";
-        if("10".equals(notice.getType())){
+        if ("10".equals(notice.getType())) {
             type = "搴撳尯閫氱煡鍗�";
         }
-        if("20".equals(notice.getType())){
+        if ("20".equals(notice.getType())) {
             type = "鐩戠閫氱煡鍗�";
         }
         map.put("type", type);
@@ -419,14 +558,14 @@
 
         String unitName = "";
         Dept dept = coreDeptService.getDeptById(notice.getUnitName());
-        if(dept != null){
+        if (dept != null) {
             unitName = dept.getKqmc();
         }
         map.put("unitName", unitName);
 
         Depot depot = depotService.getCacheDepot(notice.getCompanyId(), notice.getDepotId());
         String depotId = "";
-        if(dept != null){
+        if (dept != null) {
             depotId = depot.getName();
         }
         map.put("depotId", depotId);
@@ -460,10 +599,10 @@
         map.put("name", notice.getName());
 
         String type = "";
-        if("10".equals(notice.getType())){
+        if ("10".equals(notice.getType())) {
             type = "搴撳尯閫氱煡鍗�";
         }
-        if("20".equals(notice.getType())){
+        if ("20".equals(notice.getType())) {
             type = "鐩戠閫氱煡鍗�";
         }
         map.put("type", type);
@@ -472,14 +611,14 @@
 
         String unitName = "";
         Dept dept = coreDeptService.getDeptById(notice.getUnitName());
-        if(dept != null){
+        if (dept != null) {
             unitName = dept.getKqmc();
         }
         map.put("unitName", unitName);
 
         Depot depot = depotService.getCacheDepot(notice.getCompanyId(), notice.getDepotId());
         String depotId = "";
-        if(dept != null){
+        if (dept != null) {
             depotId = depot.getName();
         }
         map.put("depotId", depotId);

--
Gitblit v1.9.3