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