追随逻辑修改

cert
anthonywj 2 years ago
parent d921b75894
commit 1746e021f5

@ -16,7 +16,9 @@ import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.trace.TraceOrderUploadRequest; import com.glxp.api.req.trace.TraceOrderUploadRequest;
import com.glxp.api.req.trace.TraceRecordRequest; import com.glxp.api.req.trace.TraceRecordRequest;
import com.glxp.api.res.basic.BasicUdiRelResponse; import com.glxp.api.res.basic.BasicUdiRelResponse;
import com.glxp.api.res.trace.TraceSearchReponse;
import com.glxp.api.service.basic.BasicUdiRelService; import com.glxp.api.service.basic.BasicUdiRelService;
import com.glxp.api.service.sup.UserCompanyService;
import com.glxp.api.service.trace.*; import com.glxp.api.service.trace.*;
import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.FilterUdiUtils;
@ -54,6 +56,8 @@ public class UdiTraceController extends BaseController {
TraceRecordService traceRecordService; TraceRecordService traceRecordService;
@Resource @Resource
UdiTraceService udiTraceService; UdiTraceService udiTraceService;
@Resource
UserCompanyService userCompanyService;
/** /**
@ -65,13 +69,17 @@ public class UdiTraceController extends BaseController {
@AuthRuleAnnotation("udi/trace/source/search") @AuthRuleAnnotation("udi/trace/source/search")
@GetMapping("udi/trace/source/search") @GetMapping("udi/trace/source/search")
public BaseResponse createTrace(TraceRecordRequest traceRecordRequest) { public BaseResponse createTrace(TraceRecordRequest traceRecordRequest) {
TraceRecordLogEntity traceRecordLogEntity = null;
TraceRecordLogEntity traceRecordLogEntity;
TraceProductDetailEntity traceProductDetailEntity = null; TraceProductDetailEntity traceProductDetailEntity = null;
BasicUdiRelResponse basicUdiRelResponse = null; BasicUdiRelResponse basicUdiRelResponse = null;
UdiEntity udiEntity = null; UdiEntity udiEntity = null;
UserCompanyEntity userCompanyEntity = null; UserCompanyEntity userCompanyEntity = null;
if (traceRecordRequest.getTraceType() == Constant.UDI_TRACE) {
if (StrUtil.isNotEmpty(traceRecordRequest.getUdiCode())) {
traceRecordRequest.setTraceType(Constant.UDI_TRACE);
}
if (traceRecordRequest.getTraceType() == Constant.UDI_TRACE) {
//1.校验UDI码格式 //1.校验UDI码格式
udiEntity = FilterUdiUtils.getUdi(traceRecordRequest.getUdiCode()); udiEntity = FilterUdiUtils.getUdi(traceRecordRequest.getUdiCode());
if (udiEntity == null) { if (udiEntity == null) {
@ -90,28 +98,18 @@ public class UdiTraceController extends BaseController {
return ResultVOUtils.error(500, "未查询到产品信息"); return ResultVOUtils.error(500, "未查询到产品信息");
} }
//4.生成查询记录 //4.生成查询记录
String userId = getUserId() + ""; String userId = getUserId() + "";
traceRecordLogEntity = traceRecordService.getById(traceRecordRequest.getRecordCode());
if (traceRecordLogEntity == null)
traceRecordLogEntity = udiTraceService.createRecordLog(userId, traceRecordRequest.getFromType(), traceRecordRequest.getTraceType()); traceRecordLogEntity = udiTraceService.createRecordLog(userId, traceRecordRequest.getFromType(), traceRecordRequest.getTraceType());
//5.创建查询详情记录,若存在相同查询记录则直接获取 //5.创建查询详情记录,若存在相同查询记录则直接获取
if (traceRecordLogEntity.getTraceProductIdFk() != null) {
traceProductDetailEntity = traceProductDetailService.getById(traceRecordLogEntity.getTraceProductIdFk());
if (traceProductDetailEntity == null) {
traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 1, 1, basicUdiRelResponse, udiEntity); traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 1, 1, basicUdiRelResponse, udiEntity);
traceRecordLogEntity.setTraceProductIdFk(traceProductDetailEntity.getId()); traceRecordLogEntity.setTraceProductIdFk(traceProductDetailEntity.getId());
traceRecordService.updateById(traceRecordLogEntity); traceRecordService.updateById(traceRecordLogEntity);
} udiTraceService.createSourceTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
} else {
traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 1, 1, basicUdiRelResponse, udiEntity);
}
} else { } else {
//1:校验参数是否正确 //1:校验参数是否正确
if (StrUtil.isEmpty(traceRecordRequest.getYlqxzcrbarmc())) { if (StrUtil.isEmpty(traceRecordRequest.getYlqxzcrbarmc())) {
return ResultVOUtils.error(500, "医疗器械注册人不能为空!"); return ResultVOUtils.error(500, "医疗器械注册人不能为空!");
@ -123,7 +121,6 @@ public class UdiTraceController extends BaseController {
return ResultVOUtils.error(500, "规格型号不能为空!"); return ResultVOUtils.error(500, "规格型号不能为空!");
} }
//2.查询源头企业 //2.查询源头企业
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setYlqxzcrbarmc(traceRecordRequest.getYlqxzcrbarmc()); filterUdiRelRequest.setYlqxzcrbarmc(traceRecordRequest.getYlqxzcrbarmc());
@ -146,12 +143,13 @@ public class UdiTraceController extends BaseController {
//5.创建查询详情记录,若存在相同查询记录则直接获取 //5.创建查询详情记录,若存在相同查询记录则直接获取
traceProductDetailEntity = udiTraceService.createTracerProductByBatchNo(traceRecordRequest, 1, 2, basicUdiRelResponse); traceProductDetailEntity = udiTraceService.createTracerProductByBatchNo(traceRecordRequest, 1, 2, basicUdiRelResponse);
traceRecordLogEntity.setTraceProductIdFk(traceProductDetailEntity.getId());
traceRecordService.updateById(traceRecordLogEntity);
udiTraceService.createSourceTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
} }
List<TraceOrderEntity> traceOrderEntities = traceOrderService.findByProductIdFk(traceRecordLogEntity.getTraceProductIdFk());
return ResultVOUtils.success(traceOrderEntities);
return ResultVOUtils.success(traceRecordLogEntity);
} }
/** /**
@ -164,14 +162,97 @@ public class UdiTraceController extends BaseController {
@GetMapping("udi/trace/scene/search") @GetMapping("udi/trace/scene/search")
public BaseResponse sceneTrace(TraceRecordRequest traceRecordRequest) { public BaseResponse sceneTrace(TraceRecordRequest traceRecordRequest) {
TraceSearchReponse traceSearchReponse = new TraceSearchReponse();
TraceRecordLogEntity traceRecordLogEntity = traceRecordService.getById(traceRecordRequest.getRecordCode());
if (traceRecordLogEntity != null) {
List<TraceOrderEntity> traceOrderEntities = traceOrderService.findByProductIdFk(traceRecordLogEntity.getTraceProductIdFk());
traceSearchReponse.setTraceRecordLogEntity(traceRecordLogEntity);
traceSearchReponse.setTraceOrderEntities(traceOrderEntities);
return ResultVOUtils.success(traceSearchReponse);
}
TraceProductDetailEntity traceProductDetailEntity = null;
BasicUdiRelResponse basicUdiRelResponse = null;
UdiEntity udiEntity = null;
UserCompanyEntity userCompanyEntity = null;
if (traceRecordRequest.getTraceType() == Constant.UDI_TRACE) { if (traceRecordRequest.getTraceType() == Constant.UDI_TRACE) {
} else if (traceRecordRequest.getTraceType() == Constant.UDI_BATCHNO) { //1.校验UDI码格式
udiEntity = FilterUdiUtils.getUdi(traceRecordRequest.getUdiCode());
if (udiEntity == null) {
return ResultVOUtils.error(500, "UDI码格式错误");
}
//2.查询报备企业
userCompanyEntity = userCompanyService.getById(traceRecordRequest.getCompanyId());
if (userCompanyEntity == null) {
return ResultVOUtils.error(500, "未查询到该报备企业信息!");
}
//3.查询产品信息
basicUdiRelResponse = basicUdiRelService.findByProductNameCode(udiEntity.getUdi());
if (basicUdiRelResponse == null) {
return ResultVOUtils.error(500, "未查询到产品信息");
}
//4.生成查询记录
String userId = getUserId() + "";
if (traceRecordLogEntity == null)
traceRecordLogEntity = udiTraceService.createRecordLog(userId, traceRecordRequest.getFromType(), traceRecordRequest.getTraceType());
//5.创建查询详情记录,若存在相同查询记录则直接获取
if (traceRecordLogEntity.getTraceProductIdFk() != null) {
traceProductDetailEntity = traceProductDetailService.getById(traceRecordLogEntity.getTraceProductIdFk());
if (traceProductDetailEntity == null) {
traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 2, 1, basicUdiRelResponse, udiEntity);
traceRecordLogEntity.setTraceProductIdFk(traceProductDetailEntity.getId());
traceRecordService.updateById(traceRecordLogEntity);
}
} else {
traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 2, 1, basicUdiRelResponse, udiEntity);
}
udiTraceService.createCheckTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
} else { } else {
return ResultVOUtils.error(500, "请选择查询方式!"); //1:校验参数是否正确
if (StrUtil.isEmpty(traceRecordRequest.getYlqxzcrbarmc())) {
return ResultVOUtils.error(500, "医疗器械注册人不能为空!");
}
if (StrUtil.isEmpty(traceRecordRequest.getCpmctymc())) {
return ResultVOUtils.error(500, "产品通用名称不能为空!");
}
if (StrUtil.isEmpty(traceRecordRequest.getGgxh())) {
return ResultVOUtils.error(500, "规格型号不能为空!");
}
//2.查询源头企业
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setYlqxzcrbarmc(traceRecordRequest.getYlqxzcrbarmc());
filterUdiRelRequest.setCpmctymc(traceRecordRequest.getCpmctymc());
filterUdiRelRequest.setGgxh(traceRecordRequest.getGgxh());
userCompanyEntity = userCompanyService.getById(traceRecordRequest.getCompanyId());
if (userCompanyEntity == null) {
return ResultVOUtils.error(500, "未查询到该报备企业信息!");
}
//3.查询产品信息
basicUdiRelResponse = basicUdiRelService.findByProductName(filterUdiRelRequest);
if (basicUdiRelResponse == null) {
return ResultVOUtils.error(500, "未查询到产品信息");
}
//4.生成查询记录
String userId = getUserId() + "";
traceRecordLogEntity = udiTraceService.createRecordLog(userId, traceRecordRequest.getFromType(), traceRecordRequest.getTraceType());
//5.创建查询详情记录,若存在相同查询记录则直接获取
traceProductDetailEntity = udiTraceService.createTracerProductByBatchNo(traceRecordRequest, 2, 2, basicUdiRelResponse);
udiTraceService.createCheckTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
} }
return ResultVOUtils.error(500, "查询失败"); traceSearchReponse.setTraceRecordLogEntity(traceRecordLogEntity);
return ResultVOUtils.success(traceSearchReponse);
} }

@ -2,10 +2,11 @@ package com.glxp.api.entity.trace;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
@Data @Data
public class MqTraceMessage { public class MqTraceMessage implements Serializable {
/** /**
* *

@ -9,6 +9,7 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.Data; import lombok.Data;
/** /**
@ -109,7 +110,7 @@ public class TraceTaskNoticeEntity implements Serializable {
@TableField(value = "updateTime") @TableField(value = "updateTime")
private Date updateTime; private Date updateTime;
@TableField(value = "diList") @TableField(value = "diList",typeHandler = FastjsonTypeHandler.class)
private List<String> diList; private List<String> diList;

@ -76,5 +76,7 @@ public class TraceRecordRequest extends ListPageRequest {
*/ */
private String batchNo; private String batchNo;
private Long companyId;
} }

@ -0,0 +1,16 @@
package com.glxp.api.res.trace;
import com.glxp.api.entity.trace.TraceOrderEntity;
import com.glxp.api.entity.trace.TraceRecordLogEntity;
import lombok.Data;
import java.util.List;
@Data
public class TraceSearchReponse {
TraceRecordLogEntity traceRecordLogEntity;
List<TraceOrderEntity> traceOrderEntities;
}

@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.glxp.api.entity.sup.UserCompanyEntity; import com.glxp.api.entity.sup.UserCompanyEntity;
import com.glxp.api.entity.sup.UserRegisterEntity; import com.glxp.api.entity.sup.UserRegisterEntity;
public interface UserCompanyService extends IService<UserCompanyEntity>{ public interface UserCompanyService extends IService<UserCompanyEntity> {
int insert(UserCompanyEntity userCompany); int insert(UserCompanyEntity userCompany);
boolean update(UserCompanyEntity userCompany); boolean update(UserCompanyEntity userCompany);
} }

@ -2,6 +2,7 @@ package com.glxp.api.service.trace;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.entity.trace.TraceRecordLogEntity;
import com.glxp.api.req.trace.TraceOrderDetailRequest; import com.glxp.api.req.trace.TraceOrderDetailRequest;
import com.glxp.api.res.trace.TraceOrderResponse; import com.glxp.api.res.trace.TraceOrderResponse;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,6 +19,8 @@ public class TraceOrderService extends ServiceImpl<TraceOrderMapper, TraceOrderE
@Resource @Resource
TraceOrderMapper traceOrderMapper; TraceOrderMapper traceOrderMapper;
@Resource
TraceRecordService traceRecordService;
public List<TraceOrderResponse> queryTraceOrderList(TraceOrderDetailRequest traceOrderDetailRequest) { public List<TraceOrderResponse> queryTraceOrderList(TraceOrderDetailRequest traceOrderDetailRequest) {
if (traceOrderDetailRequest == null) { if (traceOrderDetailRequest == null) {
@ -30,8 +33,16 @@ public class TraceOrderService extends ServiceImpl<TraceOrderMapper, TraceOrderE
return traceOrderMapper.queryTraceOrderList(traceOrderDetailRequest); return traceOrderMapper.queryTraceOrderList(traceOrderDetailRequest);
} }
List<TraceOrderEntity> findByProductIdFk(Long traceProductIdFk) { public List<TraceOrderEntity> findByProductIdFk(Long traceProductIdFk) {
return traceOrderMapper.selectList(new QueryWrapper<TraceOrderEntity>().eq("traceProductIdFk", traceProductIdFk)); return traceOrderMapper.selectList(new QueryWrapper<TraceOrderEntity>().eq("traceProductIdFk", traceProductIdFk));
} }
public List<TraceOrderEntity> findByRecordId(Long recordId) {
TraceRecordLogEntity traceRecordLogEntity = traceRecordService.getById(recordId);
if (traceRecordLogEntity == null)
return null;
return traceOrderMapper.selectList(new QueryWrapper<TraceOrderEntity>().eq("traceProductIdFk", traceRecordLogEntity.getTraceProductIdFk()));
}
} }

@ -16,9 +16,11 @@ public class TraceTaskNoticeService extends ServiceImpl<TraceTaskNoticeMapper, T
@Resource @Resource
TraceTaskNoticeMapper traceTaskNoticeMapper; TraceTaskNoticeMapper traceTaskNoticeMapper;
public TraceTaskNoticeEntity findTask(Integer taskType, Long produdctRecordIdFk) { public TraceTaskNoticeEntity findTask(Integer taskType, Long produdctRecordIdFk, Long companyIdFk) {
List<TraceTaskNoticeEntity> taskNoticeEntities = traceTaskNoticeMapper. List<TraceTaskNoticeEntity> taskNoticeEntities = traceTaskNoticeMapper.
selectList(new QueryWrapper<TraceTaskNoticeEntity>().eq("taskType", taskType).eq("produdctRecordIdFk", produdctRecordIdFk).last("limit 1")); selectList(new QueryWrapper<TraceTaskNoticeEntity>().eq("taskType", taskType).eq("produdctRecordIdFk", produdctRecordIdFk)
.eq("companyIdFk", companyIdFk)
.last("limit 1"));
if (CollUtil.isNotEmpty(taskNoticeEntities)) { if (CollUtil.isNotEmpty(taskNoticeEntities)) {
return taskNoticeEntities.get(0); return taskNoticeEntities.get(0);
} else } else

@ -1,22 +1,26 @@
package com.glxp.api.service.trace; package com.glxp.api.service.trace;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.trace.MqTraceMessage; import com.glxp.api.entity.sup.UserCompanyEntity;
import com.glxp.api.entity.trace.TraceProductDetailEntity; import com.glxp.api.entity.trace.*;
import com.glxp.api.entity.trace.TraceRecordLogEntity;
import com.glxp.api.entity.trace.TraceTaskNoticeEntity;
import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.trace.TraceRecordRequest; import com.glxp.api.req.trace.TraceRecordRequest;
import com.glxp.api.res.basic.BasicUdiRelResponse; import com.glxp.api.res.basic.BasicUdiRelResponse;
import com.glxp.api.service.basic.BasicUdiProductService; import com.glxp.api.service.basic.BasicUdiProductService;
import com.glxp.api.service.basic.BasicUdiRelService; import com.glxp.api.service.basic.BasicUdiRelService;
import com.glxp.api.service.sup.UserCompanyService;
import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.GennerOrderUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class UdiTraceService { public class UdiTraceService {
@ -38,6 +42,8 @@ public class UdiTraceService {
TraceTaskNoticeService traceTaskNoticeService; TraceTaskNoticeService traceTaskNoticeService;
@Resource @Resource
RabbitPushService rabbitPushService; RabbitPushService rabbitPushService;
@Resource
TraceManuOrderService traceManuOrderService;
//创建查询日志 //创建查询日志
public TraceRecordLogEntity createRecordLog(String userId, Integer fromType, Integer traceType) { public TraceRecordLogEntity createRecordLog(String userId, Integer fromType, Integer traceType) {
@ -59,8 +65,12 @@ public class UdiTraceService {
TraceProductDetailEntity traceProductDetailEntity = null; TraceProductDetailEntity traceProductDetailEntity = null;
traceProductDetailEntity = traceProductDetailService.findUniqueByCode(1, udiCode); traceProductDetailEntity = traceProductDetailService.findUniqueByCode(1, udiCode);
if (traceProductDetailEntity == null) { if (traceProductDetailEntity == null) {
traceProductDetailEntity = new TraceProductDetailEntity();
traceProductDetailEntity.setId(IdUtil.getSnowflakeNextId()); traceProductDetailEntity.setId(IdUtil.getSnowflakeNextId());
traceProductDetailEntity.setTraceSource(traceSource); traceProductDetailEntity.setTraceSource(traceSource);
if (traceSource == 1) {
traceProductDetailEntity.setManuStatus(1);
}
traceProductDetailEntity.setTraceType(traceType); traceProductDetailEntity.setTraceType(traceType);
traceProductDetailEntity.setUdiCode(udiCode); traceProductDetailEntity.setUdiCode(udiCode);
traceProductDetailEntity.setYlqxzcrbarmc(basicUdiRelResponse.getYlqxzcrbarmc()); traceProductDetailEntity.setYlqxzcrbarmc(basicUdiRelResponse.getYlqxzcrbarmc());
@ -72,6 +82,7 @@ public class UdiTraceService {
traceProductDetailEntity.setProduceDate(udiEntity.getProduceDate()); traceProductDetailEntity.setProduceDate(udiEntity.getProduceDate());
traceProductDetailEntity.setExpireDate(udiEntity.getExpireDate()); traceProductDetailEntity.setExpireDate(udiEntity.getExpireDate());
traceProductDetailEntity.setSerialNo(udiEntity.getSerialNo()); traceProductDetailEntity.setSerialNo(udiEntity.getSerialNo());
traceProductDetailEntity.setStatus(1); traceProductDetailEntity.setStatus(1);
traceProductDetailService.save(traceProductDetailEntity); traceProductDetailService.save(traceProductDetailEntity);
return traceProductDetailEntity; return traceProductDetailEntity;
@ -89,6 +100,9 @@ public class UdiTraceService {
if (traceProductDetailEntity == null) { if (traceProductDetailEntity == null) {
traceProductDetailEntity.setId(IdUtil.getSnowflakeNextId()); traceProductDetailEntity.setId(IdUtil.getSnowflakeNextId());
traceProductDetailEntity.setTraceSource(traceSource); traceProductDetailEntity.setTraceSource(traceSource);
if (traceSource == 1) {
traceProductDetailEntity.setManuStatus(1);
}
traceProductDetailEntity.setTraceType(traceType); traceProductDetailEntity.setTraceType(traceType);
traceProductDetailEntity.setYlqxzcrbarmc(basicUdiRelResponse.getYlqxzcrbarmc()); traceProductDetailEntity.setYlqxzcrbarmc(basicUdiRelResponse.getYlqxzcrbarmc());
traceProductDetailEntity.setCreditNum(basicUdiRelResponse.getTyshxydm()); traceProductDetailEntity.setCreditNum(basicUdiRelResponse.getTyshxydm());
@ -103,19 +117,37 @@ public class UdiTraceService {
} }
@Resource @Resource
TraceManuOrderService traceManuOrderService; UserCompanyService userCompanyService;
//创建任务列表
public void createTraceTask(TraceProductDetailEntity traceProductDetailEntity, Long companyId) {
//创建源头查询任务
public void createSourceTraceTask(TraceProductDetailEntity traceProductDetailEntity, Long companyId) {
//1.查询生产订单信息是否已上传 //1.查询生产订单信息是否已上传
//生产订单关联关系 //生产订单关联关系
if (traceProductDetailEntity.getManuStatus() == 1) { //生产订单未处理 TraceTaskNoticeEntity manuTaskNotity = traceTaskNoticeService.findTask(1, traceProductDetailEntity.getId(), companyId);
if (manuTaskNotity == null) {
createTraceNotice(1, traceProductDetailEntity, companyId); createTraceNotice(1, traceProductDetailEntity, companyId);
pushMq(traceProductDetailEntity, companyId); pushMq(traceProductDetailEntity, companyId);
} else if (traceProductDetailEntity.getManuStatus() == 2) { //生产订单处理未完成 } else if (manuTaskNotity.getStatus() == 4) {
TraceTaskNoticeEntity taskNoticeEntity = traceTaskNoticeService.findTask(1, traceProductDetailEntity.getId()); //任务超时未处理,重新推送消息
pushMq(traceProductDetailEntity, companyId);
}
//列出需要查询推送企业
List<TraceOrderEntity> traceOrderEntities = traceOrderService.findByProductIdFk(traceProductDetailEntity.getId());
if (CollUtil.isNotEmpty(traceOrderEntities)) {
List<String> toCorpCreditNums = new ArrayList<>();
for (TraceOrderEntity traceOrderEntity : traceOrderEntities) {
if (StrUtil.isNotEmpty(traceOrderEntity.getToCorpCreditNum())) {
toCorpCreditNums.add(traceOrderEntity.getToCorpCreditNum());
}
}
List<String> certNums = toCorpCreditNums.stream().distinct().collect(Collectors.toList());
for (String certNum : certNums) {
UserCompanyEntity userCompanyEntity = userCompanyService.getOne(new QueryWrapper<UserCompanyEntity>().eq("creditNum", certNum));
TraceTaskNoticeEntity taskNoticeEntity = traceTaskNoticeService.findTask(1, traceProductDetailEntity.getId(), userCompanyEntity.getId());
if (taskNoticeEntity == null) { if (taskNoticeEntity == null) {
createTraceNotice(1, traceProductDetailEntity, companyId); createTraceNotice(1, traceProductDetailEntity, companyId);
pushMq(traceProductDetailEntity, companyId); pushMq(traceProductDetailEntity, companyId);
@ -124,21 +156,50 @@ public class UdiTraceService {
pushMq(traceProductDetailEntity, companyId); pushMq(traceProductDetailEntity, companyId);
} }
} }
}
}
//2.查询出入库单消息是否已经上传 // 创建现场检查询任务
public void createCheckTraceTask(TraceProductDetailEntity traceProductDetailEntity, Long companyId) {
//1.查询出入库单消息是否已经上传
if (traceProductDetailEntity.getStatus() == 1) { //出入库订单未处理 if (traceProductDetailEntity.getStatus() == 1) { //出入库订单未处理
createTraceNotice(2, traceProductDetailEntity, companyId); createTraceNotice(2, traceProductDetailEntity, companyId);
pushMq(traceProductDetailEntity, companyId); pushMq(traceProductDetailEntity, companyId);
} else if (traceProductDetailEntity.getStatus() == 2) { //出入库订单未处理完成 } else if (traceProductDetailEntity.getStatus() == 2) { //出入库订单未处理完成
//列出需要查询推送企业
List<TraceOrderEntity> traceOrderEntities = traceOrderService.findByProductIdFk(traceProductDetailEntity.getId());
if (CollUtil.isNotEmpty(traceOrderEntities)) {
List<String> toCorpCreditNums = new ArrayList<>();
for (TraceOrderEntity traceOrderEntity : traceOrderEntities) {
if (StrUtil.isNotEmpty(traceOrderEntity.getToCorpCreditNum())) {
toCorpCreditNums.add(traceOrderEntity.getToCorpCreditNum());
}
if (StrUtil.isNotEmpty(traceOrderEntity.getFromCorpCreditNum())) {
toCorpCreditNums.add(traceOrderEntity.getFromCorpCreditNum());
}
}
List<String> certNums = toCorpCreditNums.stream().distinct().collect(Collectors.toList());
for (String certNum : certNums) {
UserCompanyEntity userCompanyEntity = userCompanyService.getOne(new QueryWrapper<UserCompanyEntity>().eq("creditNum", certNum));
TraceTaskNoticeEntity taskNoticeEntity = traceTaskNoticeService.findTask(1, traceProductDetailEntity.getId(), userCompanyEntity.getId());
if (taskNoticeEntity == null) {
createTraceNotice(1, traceProductDetailEntity, companyId);
pushMq(traceProductDetailEntity, companyId);
} else if (taskNoticeEntity.getStatus() == 4) {
//任务超时未处理,重新推送消息
pushMq(traceProductDetailEntity, companyId);
}
}
}
} }
} }
//创建任务列表 //创建任务列表
public TraceTaskNoticeEntity createTraceNotice(Integer taskType, TraceProductDetailEntity traceProductDetailEntity, Long companyId) { public TraceTaskNoticeEntity createTraceNotice(Integer taskType, TraceProductDetailEntity traceProductDetailEntity, Long companyId) {
TraceTaskNoticeEntity traceTaskNoticeEntity = new TraceTaskNoticeEntity(); TraceTaskNoticeEntity traceTaskNoticeEntity = new TraceTaskNoticeEntity();
traceTaskNoticeEntity.setId(IdUtil.getSnowflakeNextId()); traceTaskNoticeEntity.setId(IdUtil.getSnowflakeNextId());
traceTaskNoticeEntity.setProdudctRecordIdFk(traceProductDetailEntity.getId()); traceTaskNoticeEntity.setProdudctRecordIdFk(traceProductDetailEntity.getId());
@ -155,6 +216,10 @@ public class UdiTraceService {
traceTaskNoticeEntity.setSerialNo(traceProductDetailEntity.getSerialNo()); traceTaskNoticeEntity.setSerialNo(traceProductDetailEntity.getSerialNo());
traceTaskNoticeEntity.setCreateTime(new Date()); traceTaskNoticeEntity.setCreateTime(new Date());
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setYlqxzcrbarmc(traceProductDetailEntity.getYlqxzcrbarmc());
filterUdiRelRequest.setCpmctymc(traceProductDetailEntity.getCpmctymc());
filterUdiRelRequest.setGgxh(traceProductDetailEntity.getGgxh());
filterUdiRelRequest.setNameCode(traceProductDetailEntity.getNameCode());
List<String> diList = basicUdiRelService.findDiListByProduct(filterUdiRelRequest); List<String> diList = basicUdiRelService.findDiListByProduct(filterUdiRelRequest);
traceTaskNoticeEntity.setDiList(diList); traceTaskNoticeEntity.setDiList(diList);
traceTaskNoticeService.save(traceTaskNoticeEntity); traceTaskNoticeService.save(traceTaskNoticeEntity);

@ -0,0 +1,21 @@
package com.glxp.api.task.mq;
import com.glxp.api.entity.trace.MqTraceMessage;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class TraceSearchReceiver {
@RabbitHandler
@RabbitListener(queues = "topic.trace")
public void traceReceiver(MqTraceMessage mqTraceMessage) {
System.out.println("topic.trace消费者收到消息 : " + mqTraceMessage.toString());
}
}

@ -14,7 +14,7 @@ spring:
redis: redis:
database: 8 database: 14
host: 127.0.0.1 host: 127.0.0.1
port: 6379 port: 6379
# password: 123456 # password: 123456
@ -34,10 +34,10 @@ spring:
max-request-size: 500MB max-request-size: 500MB
rabbitmq: rabbitmq:
host: 192.168.0.66 host: 127.0.0.1
port: 5672 port: 5672
username: glxp username: cpt
password: glxp1234 password: 123456
virtual-host: / virtual-host: /
publisher-confirms: false publisher-confirms: false
connection-timeout: 15000 connection-timeout: 15000

@ -29,6 +29,14 @@ spring:
multipart: multipart:
max-file-size: 500MB max-file-size: 500MB
max-request-size: 500MB max-request-size: 500MB
rabbitmq:
host: 192.168.0.66
port: 5672
username: glxp
password: glxp1234
virtual-host: /
publisher-confirms: false
connection-timeout: 15000
ok: ok:
http: http:

@ -1,6 +1,6 @@
spring: spring:
profiles: profiles:
active: pro active: dev
jmx: jmx:
enabled: false enabled: false
servlet: servlet:

Loading…
Cancel
Save