From 357dc98f8cbc44e0deedd7a4e5e2c2da904f520c Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Tue, 2 Dec 2025 11:15:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A5=E4=B8=8B=E6=8E=A5=E5=8F=A3=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=A4=E6=96=AD-=E6=98=AF=E5=90=A6=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E8=BF=9B=E8=A1=8C=E5=AF=B9=E5=BA=94=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86=EF=BC=88?= =?UTF-8?q?=E6=AF=94=E5=A6=82=E4=B8=A4=E4=B8=AA=E4=BA=BA=E5=81=9C=E7=95=99?= =?UTF-8?q?=E5=9C=A8=E8=AF=B7=E9=A2=86=E5=8D=95=E7=95=8C=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E4=BA=BA=E6=8F=90=E4=BA=A4=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E5=8F=A6=E4=B8=80=E4=B8=AA=E4=BA=BA=E6=9C=AA=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E4=B9=9F=E8=BF=9B=E8=A1=8C=E6=8F=90=E4=BA=A4=EF=BC=89=20?= =?UTF-8?q?=E8=AF=B7=E9=A2=86=E5=8D=95=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E8=AF=B7=E9=A2=86=E5=8D=95=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=8D=95=E4=BD=9C=E5=BA=9F=20=E8=AF=B7=E9=A2=86=E5=8D=95?= =?UTF-8?q?=E5=9B=9E=E9=80=80=E5=8D=95=E5=9B=9E=E9=80=80=20=E8=AF=B7?= =?UTF-8?q?=E9=A2=86=E5=8D=95=E5=9B=9E=E9=80=80=E5=8D=95=E5=87=BA=E5=BA=93?= =?UTF-8?q?=20=E8=AF=B7=E9=A2=86=E5=8D=95=E5=9B=9E=E9=80=80=E5=8D=95?= =?UTF-8?q?=E6=94=B6=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pad/invoicing/api/InvoicingQldApi.java | 9 +-- .../modules/invoicing/api/IQinglingApi.java | 2 +- .../service/INuInvoicingQldLogService.java | 2 + .../impl/NuInvoicingQldLogServiceImpl.java | 34 +++++++++- .../qld/service/impl/QingLingServiceImpl.java | 62 ++++++++++++++++--- 5 files changed, 91 insertions(+), 18 deletions(-) diff --git a/nursing-unit-api/src/main/java/com/nu/modules/pad/invoicing/api/InvoicingQldApi.java b/nursing-unit-api/src/main/java/com/nu/modules/pad/invoicing/api/InvoicingQldApi.java index 5e5e8ba0..3570c4b9 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/pad/invoicing/api/InvoicingQldApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/pad/invoicing/api/InvoicingQldApi.java @@ -336,16 +336,11 @@ public class InvoicingQldApi { */ @ApiOperation(value = "请领单-出库(单个/批量)", notes = "请领单-出库(单个/批量)") @PostMapping(value = "/outbound") - public Result outbound(@RequestBody InvoicingQldMainEntity dto) { + public Result> outbound(@RequestBody InvoicingQldMainEntity dto) { if (StringUtils.isBlank(dto.getQldNo())) { return Result.error("缺少参数"); } - boolean result = qinglingApi.outbound(dto); - if (result) { - return Result.OK("出库成功"); - } else { - return Result.error("出库失败"); - } + return Result.ok(qinglingApi.outbound(dto)); } /** diff --git a/nursing-unit-invoicing/nu-invoicing-api/nu-invoicing-local-api/src/main/java/com/nu/modules/invoicing/api/IQinglingApi.java b/nursing-unit-invoicing/nu-invoicing-api/nu-invoicing-local-api/src/main/java/com/nu/modules/invoicing/api/IQinglingApi.java index 3b89a6ae..dd3b8fd0 100644 --- a/nursing-unit-invoicing/nu-invoicing-api/nu-invoicing-local-api/src/main/java/com/nu/modules/invoicing/api/IQinglingApi.java +++ b/nursing-unit-invoicing/nu-invoicing-api/nu-invoicing-local-api/src/main/java/com/nu/modules/invoicing/api/IQinglingApi.java @@ -43,7 +43,7 @@ public interface IQinglingApi { boolean orderReturn(InvoicingQldMainEntity dto); - boolean outbound(InvoicingQldMainEntity dto); + Map outbound(InvoicingQldMainEntity dto); boolean deleteQldWl(InvoicingQldQueryEntity queryDto); diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/INuInvoicingQldLogService.java b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/INuInvoicingQldLogService.java index 1421bfc1..dfd73cc5 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/INuInvoicingQldLogService.java +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/INuInvoicingQldLogService.java @@ -11,4 +11,6 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface INuInvoicingQldLogService extends IService { + boolean opeNodeJudgeCanStatus(String qldNo, String status); + } diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/NuInvoicingQldLogServiceImpl.java b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/NuInvoicingQldLogServiceImpl.java index dbee0995..b319ce82 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/NuInvoicingQldLogServiceImpl.java +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/NuInvoicingQldLogServiceImpl.java @@ -1,19 +1,51 @@ package com.nu.modules.qld.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nu.modules.qld.entity.NuInvoicingQldLog; import com.nu.modules.qld.mapper.NuInvoicingQldLogMapper; import com.nu.modules.qld.service.INuInvoicingQldLogService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.util.CollectionUtils; + +import java.util.Arrays; +import java.util.List; /** * @Description: 进销存-请领单-操作日志表 * @Author: jeecg-boot - * @Date: 2025-11-26 + * @Date: 2025-11-26 * @Version: V1.0 */ @Service public class NuInvoicingQldLogServiceImpl extends ServiceImpl implements INuInvoicingQldLogService { + /** + * 操作节点是否可以正常执行(如是否可以提交) + * + * @param qldNo + * @param status 需要判断操作节点 ->之前应该存在的状态<- 多个使用逗号分隔 + * @return + */ + @Override + public boolean opeNodeJudgeCanStatus(String qldNo, String status) { + QueryWrapper logQW = new QueryWrapper<>(); + logQW.eq("qld_no", qldNo); + logQW.orderByDesc("create_time"); + List logList = baseMapper.selectList(logQW); + if (!CollectionUtils.isEmpty(logList)) { + String status_ = logList.get(0).getStatus(); + String[] statusArray = status.split(","); + for (String s : statusArray) { + if (s.equals(status_)) { + return true; + } + } + return false; + } else { + return false; + } + } + } diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/QingLingServiceImpl.java b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/QingLingServiceImpl.java index 2dec3dd2..dfc79468 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/QingLingServiceImpl.java +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/qld/service/impl/QingLingServiceImpl.java @@ -37,6 +37,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.RedisUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -95,6 +96,8 @@ public class QingLingServiceImpl implements IQinglingApi { private IBlWarehouseMaterialInfoService warehouseMaterialInfoService; @Autowired private INuWarehouseMaterialCrkInfoService warehouseMaterialCrkInfoService; + @Autowired + private RedisUtil redisUtil; @Override public List> getMaterialTreeData(MaterialCategoryEntity materialCategoryEntity) { @@ -254,6 +257,12 @@ public class QingLingServiceImpl implements IQinglingApi { public Map submitQld(InvoicingQldGwcEntity dto) { Map result = Maps.newHashMap(); if (StringUtils.isNotBlank(dto.getQldNo())) { + //检测是否可以正常提交 + if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "3")) { + result.put("status", "faild"); + return result; + } + //回退单-提交 QueryWrapper qw = new QueryWrapper<>(); qw.eq("qld_no", dto.getQldNo()); @@ -292,6 +301,12 @@ public class QingLingServiceImpl implements IQinglingApi { gwcQW.eq("elder_id", dto.getElderId()); List gwcList = invoicingQldGwcService.list(gwcQW); + //请购车未添加物料 + if (CollectionUtils.isEmpty(gwcList)) { + result.put("status", "empty"); + return result; + } + //检测哪些物料有未完成请领流程的 { //请领流程未完成物料id @@ -529,12 +544,14 @@ public class QingLingServiceImpl implements IQinglingApi { @Override public boolean cancellation(InvoicingQldMainEntity dto) { + //检测是否可以正常作废 + if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1,3")) { + return false; + } + QueryWrapper qw = new QueryWrapper<>(); qw.eq("qld_no", dto.getQldNo()); NuInvoicingQldMain one = invoicingQldMainService.getOne(qw); - if (one == null || !"1".equals(one.getStatus())) { - return false; - } dto.setNuId(one.getNuId()); dto.setElderId(one.getElderId()); String status = "2"; @@ -587,7 +604,11 @@ public class QingLingServiceImpl implements IQinglingApi { @Override @Transactional(rollbackFor = Exception.class) public boolean confirmReceipt(InvoicingQldMainEntity dto) { -// Map result = Maps.newHashMap(); + //检测是否可以正常收货 + if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "4")) { + return false; + } + String status = "5"; LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -728,12 +749,14 @@ public class QingLingServiceImpl implements IQinglingApi { @Override public boolean orderReturn(InvoicingQldMainEntity dto) { + //检测是否可以正常回退 + if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1,4")) { + return false; + } + QueryWrapper qw = new QueryWrapper<>(); qw.eq("qld_no", dto.getQldNo()); NuInvoicingQldMain one = invoicingQldMainService.getOne(qw); - if (one == null || "2".equals(one.getStatus()) || "3".equals(one.getStatus()) || "5".equals(one.getStatus())) { - return false; - } dto.setNuId(one.getNuId()); dto.setElderId(one.getElderId()); String status = "3"; @@ -759,7 +782,26 @@ public class QingLingServiceImpl implements IQinglingApi { } @Override - public boolean outbound(InvoicingQldMainEntity dto) { + public Map outbound(InvoicingQldMainEntity dto) { + Map map = new HashMap<>(); + + //检测是否可以正常出库 + String[] qldNosArr = dto.getQldNo().split(","); + //本次处理单号中 - 不可出库单号 + String cannotHandleQldNos = Arrays.stream(qldNosArr) + .filter(qldNo -> !invoicingQldLogService.opeNodeJudgeCanStatus(qldNo, "1")) + .collect(Collectors.joining(",")); + //本次处理单号中 - 可正常出库单号 + String normalQldNos = Arrays.stream(qldNosArr) + .filter(qldNo -> !cannotHandleQldNos.contains(qldNo)) + .collect(Collectors.joining(",")); + if (StringUtils.isBlank(normalQldNos)) { + map.put("status", "faild"); + map.put("faildQldNos", cannotHandleQldNos); + return map; + } + + dto.setQldNo(normalQldNos); QueryWrapper qw = new QueryWrapper<>(); qw.in("qld_no", dto.getQldNo().split(",")); List list = invoicingQldMainService.list(qw); @@ -792,7 +834,9 @@ public class QingLingServiceImpl implements IQinglingApi { qldData.setIzYgRead("N");//员工改为未读 qldData.setCkBy(sysUser.getId());//出库人 qldData.setCkTime(new Date());//出库时间 - return invoicingQldMainService.update(qldData, qw); + invoicingQldMainService.update(qldData, qw); + map.put("status", "success"); + return map; } @Override