1、pad端退货流程接口逻辑调整:服务指令工单开始结束跟退货单业务不再相互影响,随时可以开始/结束服务指令工单

2、pad端请领流程接口逻辑调整:护理员、库管服务指令工单来源均为日常/即时指令,不再根据请领单的提交生成服务指令工单,指令可随时点击开始/结束。请领单业务流程不再跟指令工单相互影响,只保留请领业务本身的验证,如请领单已被作废时,库管没刷新界面点击了入库按钮的判断
This commit is contained in:
1378012178@qq.com 2025-12-31 13:42:03 +08:00
parent 6a63d58d00
commit 787c0a65d5
2 changed files with 1614 additions and 188 deletions

View File

@ -273,17 +273,17 @@ public class QingLingServiceImpl implements IQinglingApi {
Map<String, Object> result = Maps.newHashMap(); Map<String, Object> result = Maps.newHashMap();
if (StringUtils.isNotBlank(dto.getQldNo())) { if (StringUtils.isNotBlank(dto.getQldNo())) {
//检测是否已经开始服务 //检测是否已经开始服务
{ // {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_sq"); // p_.setFlowCode("ql_sq");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanReSubmit(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanReSubmit(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
} // }
//检测是否可以正常提交 //检测是否可以正常提交
if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "3")) { if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "3")) {
@ -293,14 +293,14 @@ public class QingLingServiceImpl implements IQinglingApi {
} }
//检测是否有物料 //检测是否有物料
QueryWrapper<NuInvoicingQldInfo> infoQW = new QueryWrapper<>(); // QueryWrapper<NuInvoicingQldInfo> infoQW = new QueryWrapper<>();
infoQW.eq("qld_no", dto.getQldNo()); // infoQW.eq("qld_no", dto.getQldNo());
List<NuInvoicingQldInfo> infoList = invoicingQldInfoMapper.selectList(infoQW); // List<NuInvoicingQldInfo> infoList = invoicingQldInfoMapper.selectList(infoQW);
if (CollectionUtils.isEmpty(infoList)) { // if (CollectionUtils.isEmpty(infoList)) {
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", "不存在物料,无法提交"); // result.put("message", "不存在物料,无法提交");
return result; // return result;
} // }
//回退单-提交 //回退单-提交
QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>(); QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>();
@ -312,7 +312,6 @@ public class QingLingServiceImpl implements IQinglingApi {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//日志表插记录 //日志表插记录
NuInvoicingQldLog logData = new NuInvoicingQldLog(); NuInvoicingQldLog logData = new NuInvoicingQldLog();
logData.setQldNo(dto.getQldNo());//请领单号 logData.setQldNo(dto.getQldNo());//请领单号
@ -339,28 +338,28 @@ public class QingLingServiceImpl implements IQinglingApi {
//检测 必须有新的指令 并且已经点击开始 //检测 必须有新的指令 并且已经点击开始
{ {
//指令工单处判断是否允许提交 //指令工单处判断是否允许提交
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_sq"); // p_.setFlowCode("ql_sq");
p_.setNuId(dto.getNuId()); // p_.setNuId(dto.getNuId());
p_.setElderId(dto.getElderId()); // p_.setElderId(dto.getElderId());
Map<String,String> j = invoicingQlOrdersApi.izCanSubmit(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanSubmit(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
//检测通过了 继续检测对应护理单元是否有未完结请领单 //检测通过了 继续检测对应护理单元是否有未完结请领单
QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>(); // QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>();
qw.eq("nu_id", dto.getNuId()); // qw.eq("nu_id", dto.getNuId());
qw.eq("elder_id", dto.getElderId()); // qw.eq("elder_id", dto.getElderId());
qw.in("status", "1", "3", "4"); // qw.in("status", "1", "3", "4");
List<NuInvoicingQldMain> list = invoicingQldMainMapper.selectList(qw); // List<NuInvoicingQldMain> list = invoicingQldMainMapper.selectList(qw);
if (!CollectionUtils.isEmpty(list)) { // if (!CollectionUtils.isEmpty(list)) {
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", "有未完结请领单,暂时无法提交"); // result.put("message", "有未完结请领单,暂时无法提交");
return result; // return result;
} // }
} }
//购物车-提交 //购物车-提交
@ -371,13 +370,13 @@ public class QingLingServiceImpl implements IQinglingApi {
List<NuInvoicingQldGwc> gwcList = invoicingQldGwcService.list(gwcQW); List<NuInvoicingQldGwc> gwcList = invoicingQldGwcService.list(gwcQW);
//请购车未添加物料 //请购车未添加物料
if (CollectionUtils.isEmpty(gwcList)) { // if (CollectionUtils.isEmpty(gwcList)) {
result.put("status", "empty"); // result.put("status", "empty");
result.put("message", "请选择请领物料"); // result.put("message", "请选择请领物料");
return result; // return result;
} // }
//检测哪些物料有未完成请领流程的 //检测哪些物料有未完成请领流程的
{ {
//请领流程未完成物料id //请领流程未完成物料id
List<InvoicingQldInfoEntity> disabledWlList = invoicingQldMainMapper.queryUnFinishWlid(dto); List<InvoicingQldInfoEntity> disabledWlList = invoicingQldMainMapper.queryUnFinishWlid(dto);
@ -506,14 +505,14 @@ public class QingLingServiceImpl implements IQinglingApi {
result.put("status", "success"); result.put("status", "success");
result.put("message", "提交成功"); result.put("message", "提交成功");
InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity(); // InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity();
orderEntity.setFlowCode("ql_sq");//指令流程flow_code 看接口有标明 // orderEntity.setFlowCode("ql_sq");//指令流程flow_code 看接口有标明
orderEntity.setBizId(saveData.getQldNo());//请领单号 // orderEntity.setBizId(saveData.getQldNo());//请领单号
orderEntity.setNuId(saveData.getNuId()); // orderEntity.setNuId(saveData.getNuId());
orderEntity.setElderId(saveData.getElderId());//长者id // orderEntity.setElderId(saveData.getElderId());//长者id
orderEntity.setInitiatorId(sysUser.getEmployessId());//员工id // orderEntity.setInitiatorId(sysUser.getEmployessId());//员工id
//修改指令工单中的业务单号 //修改指令工单中的业务单号
invoicingQlOrdersApi.updateOrderBizId(orderEntity); // invoicingQlOrdersApi.updateOrderBizId(orderEntity);
return result; return result;
} }
} }
@ -636,30 +635,30 @@ public class QingLingServiceImpl implements IQinglingApi {
String nowStatus = one.getStatus(); String nowStatus = one.getStatus();
//检测是否已经开始服务 //检测是否已经开始服务
if ("3".equals(nowStatus)) { // if ("3".equals(nowStatus)) {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_sq"); // p_.setFlowCode("ql_sq");
p_.setIzRollback("Y"); // p_.setIzRollback("Y");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
} // }
//检测是否可作废 //检测是否可作废
if ("1".equals(nowStatus)) { // if ("1".equals(nowStatus)) {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_ck"); // p_.setFlowCode("ql_ck");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanCancel(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanCancel(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
} // }
//日志表插记录 //日志表插记录
NuInvoicingQldLog logData = new NuInvoicingQldLog(); NuInvoicingQldLog logData = new NuInvoicingQldLog();
@ -681,16 +680,16 @@ public class QingLingServiceImpl implements IQinglingApi {
InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity(); InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity();
orderEntity.setBizId(dto.getQldNo());//请领单号 orderEntity.setBizId(dto.getQldNo());//请领单号
orderEntity.setInitiatorId(sysUser.getEmployessId());//员工id orderEntity.setInitiatorId(sysUser.getEmployessId());//员工id
if ("1".equals(nowStatus)) { // if ("1".equals(nowStatus)) {
//已提交直接作废 // //已提交直接作废
orderEntity.setFlowCode("ql_zf");//指令流程flow_code 看接口有标明 // orderEntity.setFlowCode("ql_zf");//指令流程flow_code 看接口有标明
invoicingQlOrdersApi.flowQlzf(orderEntity); // invoicingQlOrdersApi.flowQlzf(orderEntity);
} // }
if ("3".equals(nowStatus)) { // if ("3".equals(nowStatus)) {
//回退单作废 // //回退单作废
orderEntity.setFlowCode("ql_htzf");//指令流程flow_code 看接口有标明 // orderEntity.setFlowCode("ql_htzf");//指令流程flow_code 看接口有标明
invoicingQlOrdersApi.flowQlzf(orderEntity); // invoicingQlOrdersApi.flowQlzf(orderEntity);
} // }
invoicingQldMainService.updateById(one); invoicingQldMainService.updateById(one);
result.put("status", "success"); result.put("status", "success");
result.put("message", "作废成功"); result.put("message", "作废成功");
@ -734,17 +733,17 @@ public class QingLingServiceImpl implements IQinglingApi {
Map<String, String> result = Maps.newHashMap(); Map<String, String> result = Maps.newHashMap();
//检测是否已经开始服务 //检测是否已经开始服务
{ // {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_sh"); // p_.setFlowCode("ql_sh");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
} // }
//检测是否可以正常收货 //检测是否可以正常收货
if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "4")) { if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "4")) {
@ -931,17 +930,17 @@ public class QingLingServiceImpl implements IQinglingApi {
public Map<String, String> orderReturn(InvoicingQldMainEntity dto) { public Map<String, String> orderReturn(InvoicingQldMainEntity dto) {
Map<String, String> result = Maps.newHashMap(); Map<String, String> result = Maps.newHashMap();
//检测是否已经开始服务 //检测是否已经开始服务
{ // {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_ck"); // p_.setFlowCode("ql_ck");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
result.put("status", "faild"); // result.put("status", "faild");
result.put("message", j.get("msg")); // result.put("message", j.get("msg"));
return result; // return result;
} // }
} // }
//检测是否可以正常回退 //检测是否可以正常回退
if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1,4")) { if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1,4")) {
@ -992,17 +991,17 @@ public class QingLingServiceImpl implements IQinglingApi {
//出库一次只会有一个出库单了 //出库一次只会有一个出库单了
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
//检测是否已经开始服务 //检测是否已经开始服务
{ // {
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setFlowCode("ql_ck"); // p_.setFlowCode("ql_ck");
p_.setBizId(dto.getQldNo()); // p_.setBizId(dto.getQldNo());
Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_); // Map<String,String> j = invoicingQlOrdersApi.izCanGoOn(p_);
if(!j.get("error_code").equals("0")){ // if(!j.get("error_code").equals("0")){
map.put("status", "faild"); // map.put("status", "faild");
map.put("message", j.get("msg")); // map.put("message", j.get("msg"));
return map; // return map;
} // }
} // }
//检测单子状态是否正确 //检测单子状态是否正确
if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1")) { if (!invoicingQldLogService.opeNodeJudgeCanStatus(dto.getQldNo(), "1")) {
@ -1301,88 +1300,94 @@ public class QingLingServiceImpl implements IQinglingApi {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map<String, String> finishDirectiveServe(InvoicingQldQueryEntity dto) { public Map<String, String> finishDirectiveServe(InvoicingQldQueryEntity dto) {
Map<String,String> map = new HashMap(); // Map<String,String> map = new HashMap();
map.put("error_code","0"); // map.put("error_code","0");
map.put("msg","可以提交"); // map.put("msg","可以提交");
//获取工单请领单判断是否可完成 // //获取工单请领单判断是否可完成
InvoicingOrdersEntity ioe = new InvoicingOrdersEntity(); // InvoicingOrdersEntity ioe = new InvoicingOrdersEntity();
ioe.setId(dto.getId()); // ioe.setId(dto.getId());
InvoicingOrdersEntity entity = invoicingOrdersApi.getOrderInfo(ioe); // InvoicingOrdersEntity entity = invoicingOrdersApi.getOrderInfo(ioe);
if(entity!=null){ // if(entity!=null){
String qldNo = entity.getBizId();//业务单号 // String qldNo = entity.getBizId();//业务单号
if(qldNo!=null&&!qldNo.equals("")){ // if(qldNo!=null&&!qldNo.equals("")){
//获取请领单 // //获取请领单
QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>(); // QueryWrapper<NuInvoicingQldMain> qw = new QueryWrapper<>();
qw.eq("qld_no", qldNo); // qw.eq("qld_no", qldNo);
NuInvoicingQldMain main = invoicingQldMainService.getOne(qw); // NuInvoicingQldMain main = invoicingQldMainService.getOne(qw);
if (main != null) { // if (main != null) {
map = this.izCanFinish(entity.getFlowCode(),main.getStatus()); // map = this.izCanFinish(entity.getFlowCode(),main.getStatus());
if(!map.get("error_code").equals("0")){ // if(!map.get("error_code").equals("0")){
return map; // return map;
} // }
//满足完成条件 // //满足完成条件
//完成 // //完成
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity(); // InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setId(dto.getId()); // p_.setId(dto.getId());
p_.setInitiatorId(sysUser.getEmployessId()); // p_.setInitiatorId(sysUser.getEmployessId());
map = invoicingOrdersApi.finishOrder(p_); // map = invoicingOrdersApi.finishOrder(p_);
if(!map.get("error_code").equals("0")){ // if(!map.get("error_code").equals("0")){
return map; // return map;
} // }
//生成新单据 // //生成新单据
createNextOrder(entity,main); // createNextOrder(entity,main);
}else{ // }else{
map.put("error_code","1"); // map.put("error_code","1");
map.put("msg","请领单不存在"); // map.put("msg","请领单不存在");
return map; // return map;
} // }
}else{ // }else{
map.put("error_code","1"); // map.put("error_code","1");
map.put("msg","请先提交请领单"); // map.put("msg","请先提交请领单");
return map; // return map;
} // }
}else{ // }else{
map.put("error_code","1"); // map.put("error_code","1");
map.put("msg","工单不存在"); // map.put("msg","工单不存在");
return map; // return map;
} // }
return map; // return map;
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
InvoicingOrdersEntity p_ = new InvoicingOrdersEntity();
p_.setId(dto.getId());
p_.setInitiatorId(sysUser.getEmployessId());
return invoicingOrdersApi.finishOrder(p_);
} }
/** /**
* 判断是否可结束工单 * 判断是否可结束工单
*
* @return * @return
*/ */
private Map<String, String> izCanFinish(String flowCode,String status){ private Map<String, String> izCanFinish(String flowCode, String status) {
Map<String,String> map = new HashMap(); Map<String, String> map = new HashMap();
map.put("error_code","0"); map.put("error_code", "0");
map.put("msg","可以结束"); map.put("msg", "可以结束");
//完成结束判断算法 //完成结束判断算法
//申请可完成 flowCode=ql_sq完成时只有2种判断1业务单号qldNo不为空 2已提交status=1 //申请可完成 flowCode=ql_sq完成时只有2种判断1业务单号qldNo不为空 2已提交status=1
//出库可完成 flowCode=ql_ck完成时只有2种判断1已出库status=4 2已回退status=3 //出库可完成 flowCode=ql_ck完成时只有2种判断1已出库status=4 2已回退status=3
//收货可完成 flowCode=ql_sh完成时只有1种判断1已收货status=5 //收货可完成 flowCode=ql_sh完成时只有1种判断1已收货status=5
//不考虑作废情况作废时会将ql_sq的工单状态恢复成最原始状态判断算法使用根据一申请可完成 //不考虑作废情况作废时会将ql_sq的工单状态恢复成最原始状态判断算法使用根据一申请可完成
//申请可完成判断 //申请可完成判断
if(flowCode.equals("ql_sq")){ if (flowCode.equals("ql_sq")) {
if(!status.equals("1")){ if (!status.equals("1")) {
map.put("error_code","1"); map.put("error_code", "1");
map.put("msg","请先提交请领单"); map.put("msg", "请先提交请领单");
} }
} }
//出库可完成判断 //出库可完成判断
if(flowCode.equals("ql_ck")){ if (flowCode.equals("ql_ck")) {
if(status.equals("3")||status.equals("4")){ if (status.equals("3") || status.equals("4")) {
}else{ } else {
map.put("error_code","1"); map.put("error_code", "1");
map.put("msg","请先出库或回退"); map.put("msg", "请先出库或回退");
} }
} }
//收货可完成判断 //收货可完成判断
if(flowCode.equals("ql_sh")){ if (flowCode.equals("ql_sh")) {
if(!status.equals("5")){ if (!status.equals("5")) {
map.put("error_code","1"); map.put("error_code", "1");
map.put("msg","请先收货"); map.put("msg", "请先收货");
} }
} }
return map; return map;
@ -1391,7 +1396,7 @@ public class QingLingServiceImpl implements IQinglingApi {
/** /**
* 生成下一服务指令工单 * 生成下一服务指令工单
*/ */
private void createNextOrder(InvoicingOrdersEntity entity,NuInvoicingQldMain main){ private void createNextOrder(InvoicingOrdersEntity entity, NuInvoicingQldMain main) {
String flowCode = entity.getFlowCode(); String flowCode = entity.getFlowCode();
String status = main.getStatus(); String status = main.getStatus();
InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity(); InvoicingOrdersEntity orderEntity = new InvoicingOrdersEntity();
@ -1402,16 +1407,16 @@ public class QingLingServiceImpl implements IQinglingApi {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
orderEntity.setInitiatorId(sysUser.getEmployessId());//提交人id orderEntity.setInitiatorId(sysUser.getEmployessId());//提交人id
//生成请领下一步服务指令 //生成请领下一步服务指令
if(flowCode.equals("ql_sq")){ if (flowCode.equals("ql_sq")) {
invoicingQlOrdersApi.flowQlsq(orderEntity); invoicingQlOrdersApi.flowQlsq(orderEntity);
} }
if(flowCode.equals("ql_ck")){ if (flowCode.equals("ql_ck")) {
//生成出库下一步服务指令 //生成出库下一步服务指令
if(status.equals("4")){ if (status.equals("4")) {
invoicingQlOrdersApi.flowQlck(orderEntity); invoicingQlOrdersApi.flowQlck(orderEntity);
} }
//生成回退下一步服务指令 //生成回退下一步服务指令
if(status.equals("3")){ if (status.equals("3")) {
invoicingQlOrdersApi.flowQlht(orderEntity); invoicingQlOrdersApi.flowQlht(orderEntity);
} }
} }