请领单-提交:新增回退单重新提交逻辑

This commit is contained in:
1378012178@qq.com 2025-11-28 16:48:50 +08:00
parent 22e4a3dbe8
commit b909e0d45e
2 changed files with 142 additions and 106 deletions

View File

@ -61,4 +61,6 @@ public class InvoicingQldGwcEntity {
*/
private MaterialInfoEntity materialInfo;
private String qldNo;
}

View File

@ -245,120 +245,154 @@ public class QingLingServiceImpl implements IQinglingApi {
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> submitQld(InvoicingQldGwcEntity dto) {
Map<String, Object> result = Maps.newHashMap();
//当前购物车信息
QueryWrapper<NuInvoicingQldGwc> gwcQW = new QueryWrapper<>();
gwcQW.eq("nu_id", dto.getNuId());
gwcQW.eq("elder_id", dto.getElderId());
List<NuInvoicingQldGwc> gwcList = invoicingQldGwcService.list(gwcQW);
//检测哪些物料有未完成请领流程的
{
//请领流程未完成物料id
List<InvoicingQldInfoEntity> disabledWlList = invoicingQldMainMapper.queryUnFinishWlid(dto);
if (!CollectionUtils.isEmpty(disabledWlList)) {
// 提取gwcList中的所有wlId
Set<String> gwcWlIds = gwcList.stream()
.map(NuInvoicingQldGwc::getWlId)
.collect(Collectors.toSet());
// 过滤disabledWlList只保留在gwcList中也存在的wlId
disabledWlList = disabledWlList.stream()
.filter(item -> gwcWlIds.contains(item.getWlId()))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(disabledWlList)) {
result.put("status", "exist");
result.put("existList", disabledWlList);
return result;
}
}
}
//可以正常提交
String status = "1";//待出库已提交
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//存储主表数据
NuInvoicingQldMain saveData = new NuInvoicingQldMain();
//处理请领单编号
{
// 查询机构编码
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String deptCode = deptInfo.getString("code");
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// 构建今天的前缀模式
String todayPrefix = "Q" + deptCode + today;
// 查询今天所有的编号
if (StringUtils.isNotBlank(dto.getQldNo())) {
//回退单-提交
QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>();
qw.likeRight("qld_no", todayPrefix);
qw.select("qld_no");
qw.eq("qld_no", dto.getQldNo());
NuInvoicingQldMain one = invoicingQldMainService.getOne(qw);
dto.setNuId(one.getNuId());
dto.setElderId(one.getElderId());
String status = "1";
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<NuInvoicingQldMain> list = invoicingQldMainService.list(qw);
int maxOrderNo = 0;
//日志表插记录
NuInvoicingQldLog logData = new NuInvoicingQldLog();
logData.setQldNo(dto.getQldNo());//请领单号
logData.setStatus(status);//单子操作状态
logData.setJdMc(status);//节点mc字典qld_status)
logData.setOpeBy(sysUser.getId());//操作人
logData.setOpeTime(new Date());//操作时间
logData.setNuId(dto.getNuId());//护理单元id
logData.setElderId(dto.getElderId());//长者id
invoicingQldLogMapper.insert(logData);
if (list != null && !list.isEmpty()) {
// 从qldNo中提取序号找到最大值
for (NuInvoicingQldMain item : list) {
if (item.getQldNo() != null && item.getQldNo().startsWith(todayPrefix)) {
// 提取序号部分最后几位
String orderStr = item.getQldNo().substring(todayPrefix.length());
try {
int order = Integer.parseInt(orderStr);
if (order > maxOrderNo) {
maxOrderNo = order;
}
} catch (NumberFormatException e) {
// 如果解析失败跳过
}
//更新单子为待收货
one.setStatus(status);
one.setIzYgRead("N");//员工改为未读
one.setIzKgRead("N");//库管改为未读
one.setTjBy(sysUser.getId());//作废人
one.setTjTime(new Date());//作废时间
invoicingQldMainService.updateById(one);
result.put("status", "success");
return null;
} else {
//购物车-提交
//当前购物车信息
QueryWrapper<NuInvoicingQldGwc> gwcQW = new QueryWrapper<>();
gwcQW.eq("nu_id", dto.getNuId());
gwcQW.eq("elder_id", dto.getElderId());
List<NuInvoicingQldGwc> gwcList = invoicingQldGwcService.list(gwcQW);
//检测哪些物料有未完成请领流程的
{
//请领流程未完成物料id
List<InvoicingQldInfoEntity> disabledWlList = invoicingQldMainMapper.queryUnFinishWlid(dto);
if (!CollectionUtils.isEmpty(disabledWlList)) {
// 提取gwcList中的所有wlId
Set<String> gwcWlIds = gwcList.stream()
.map(NuInvoicingQldGwc::getWlId)
.collect(Collectors.toSet());
// 过滤disabledWlList只保留在gwcList中也存在的wlId
disabledWlList = disabledWlList.stream()
.filter(item -> gwcWlIds.contains(item.getWlId()))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(disabledWlList)) {
result.put("status", "exist");
result.put("existList", disabledWlList);
return result;
}
}
}
int nextOrderNo = maxOrderNo + 1;
String qldOrder = String.format("%03d", nextOrderNo);
saveData.setQldNo(todayPrefix + qldOrder);
//可以正常提交
String status = "1";//待出库已提交
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//存储主表数据
NuInvoicingQldMain saveData = new NuInvoicingQldMain();
//处理请领单编号
{
// 查询机构编码
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String deptCode = deptInfo.getString("code");
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// 构建今天的前缀模式
String todayPrefix = "Q" + deptCode + today;
// 查询今天所有的编号
QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>();
qw.likeRight("qld_no", todayPrefix);
qw.select("qld_no");
List<NuInvoicingQldMain> list = invoicingQldMainService.list(qw);
int maxOrderNo = 0;
if (list != null && !list.isEmpty()) {
// 从qldNo中提取序号找到最大值
for (NuInvoicingQldMain item : list) {
if (item.getQldNo() != null && item.getQldNo().startsWith(todayPrefix)) {
// 提取序号部分最后几位
String orderStr = item.getQldNo().substring(todayPrefix.length());
try {
int order = Integer.parseInt(orderStr);
if (order > maxOrderNo) {
maxOrderNo = order;
}
} catch (NumberFormatException e) {
// 如果解析失败跳过
}
}
}
}
int nextOrderNo = maxOrderNo + 1;
String qldOrder = String.format("%03d", nextOrderNo);
saveData.setQldNo(todayPrefix + qldOrder);
}
saveData.setStatus(status);
saveData.setIzYgRead("N");//员工有新消息
saveData.setIzKgRead("N");//库管有新消息
saveData.setTjBy(sysUser.getId());//提交人
saveData.setTjTime(new Date());//提交时间
saveData.setJdMc(status);//节点名称
saveData.setNuId(dto.getNuId());
saveData.setElderId(dto.getElderId());
invoicingQldMainService.save(saveData);
//子表存储
List<NuInvoicingQldInfo> infoList = BeanUtil.copyToList(gwcList, NuInvoicingQldInfo.class);
infoList.stream().forEach(item -> {
item.setQldNo(saveData.getQldNo());//请领单单号
item.setCreateBy(null);
item.setCreateTime(null);
item.setUpdateBy(null);
item.setUpdateTime(null);
});
invoicingQldInfoService.saveBatch(infoList);
//清空购物车信息
InvoicingQldQueryEntity gwcDeleteParam = new InvoicingQldQueryEntity();
gwcDeleteParam.setNuId(dto.getNuId());
gwcDeleteParam.setElderId(dto.getElderId());
invoicingQldGwcService.removeAllGwc(gwcDeleteParam);
//日志表插记录
NuInvoicingQldLog logData = new NuInvoicingQldLog();
logData.setQldNo(saveData.getQldNo());//请领单号
logData.setStatus(status);//单子操作状态
logData.setJdMc(status);//节点mc字典qld_status)
logData.setOpeBy(sysUser.getId());//操作人
logData.setOpeTime(new Date());//操作时间
logData.setNuId(dto.getNuId());//护理单元id
logData.setElderId(dto.getElderId());//长者id
invoicingQldLogMapper.insert(logData);
result.put("status", "success");
return result;
}
saveData.setStatus(status);
saveData.setIzYgRead("N");//员工有新消息
saveData.setIzKgRead("N");//库管有新消息
saveData.setTjBy(sysUser.getId());//提交人
saveData.setTjTime(new Date());//提交时间
saveData.setJdMc(status);//节点名称
saveData.setNuId(dto.getNuId());
saveData.setElderId(dto.getElderId());
invoicingQldMainService.save(saveData);
//子表存储
List<NuInvoicingQldInfo> infoList = BeanUtil.copyToList(gwcList, NuInvoicingQldInfo.class);
infoList.stream().forEach(item -> {
item.setQldNo(saveData.getQldNo());//请领单单号
item.setCreateBy(null);
item.setCreateTime(null);
item.setUpdateBy(null);
item.setUpdateTime(null);
});
invoicingQldInfoService.saveBatch(infoList);
//清空购物车信息
InvoicingQldQueryEntity gwcDeleteParam = new InvoicingQldQueryEntity();
gwcDeleteParam.setNuId(dto.getNuId());
gwcDeleteParam.setElderId(dto.getElderId());
invoicingQldGwcService.removeAllGwc(gwcDeleteParam);
//日志表插记录
NuInvoicingQldLog logData = new NuInvoicingQldLog();
logData.setQldNo(saveData.getQldNo());//请领单号
logData.setStatus(status);//单子操作状态
logData.setJdMc(status);//节点mc字典qld_status)
logData.setOpeBy(sysUser.getId());//操作人
logData.setOpeTime(new Date());//操作时间
logData.setNuId(dto.getNuId());//护理单元id
logData.setElderId(dto.getElderId());//长者id
invoicingQldLogMapper.insert(logData);
result.put("status", "success");
return result;
}