追溯查询代码备份

cert
anthonywj 2 years ago
parent b84099dc3a
commit c93c02e6f6

@ -15,6 +15,9 @@ public class TopicRabbitConfig {
public final static String trace = "topic.trace";
public final static String delaytrace = "local.trace.delay";
public final static String TRACE_TOPIC_EXCHANGE = "trace.topic.exchange";
public final static String TRACE_DELAY_EXCHANGE = "local.trace.delay.exchang";
@Bean
public Queue traceQueue() {
@ -36,14 +39,14 @@ public class TopicRabbitConfig {
@Bean
TopicExchange exchange() {
return new TopicExchange("topicExchange");
return new TopicExchange(TRACE_TOPIC_EXCHANGE);
}
@Bean
public Exchange traceDelayExchange() {
Map<String, Object> args = new HashMap<>(1);
args.put("x-delayed-type", "topic");
return new CustomExchange("local.trace.delay.exchange", "x-delayed-message", true, false, args);
return new CustomExchange(TRACE_DELAY_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean

@ -1,5 +1,6 @@
package com.glxp.api.controller.trace;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -13,12 +14,15 @@ import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.sup.UserCompanyEntity;
import com.glxp.api.entity.trace.*;
import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.trace.TraceManuDetailRequest;
import com.glxp.api.req.trace.TraceManuOrderUploadRequest;
import com.glxp.api.req.trace.TraceOrderUploadRequest;
import com.glxp.api.req.trace.TraceRecordRequest;
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.sup.UserCompanyService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.service.trace.*;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.udi.FilterUdiUtils;
@ -53,11 +57,19 @@ public class UdiTraceController extends BaseController {
@Resource
TraceOrderService traceOrderService;
@Resource
TraceManuOrderService traceManuOrderService;
@Resource
TraceManuCodeRelService traceManuCodeRelService;
@Resource
TraceRecordService traceRecordService;
@Resource
UdiTraceService udiTraceService;
@Resource
UserCompanyService userCompanyService;
@Resource
SystemParamConfigService systemParamConfigService;
@Resource
RabbitPushService rabbitPushService;
/**
@ -163,20 +175,17 @@ public class UdiTraceController extends BaseController {
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);
}
TraceRecordLogEntity traceRecordLogEntity = null;
TraceProductDetailEntity traceProductDetailEntity = null;
BasicUdiRelResponse basicUdiRelResponse = null;
UdiEntity udiEntity = 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码格式
udiEntity = FilterUdiUtils.getUdi(traceRecordRequest.getUdiCode());
if (udiEntity == null) {
@ -197,23 +206,14 @@ public class UdiTraceController extends BaseController {
//4.生成查询记录
String userId = getUserId() + "";
if (traceRecordLogEntity == null)
traceRecordLogEntity = udiTraceService.createRecordLog(userId, traceRecordRequest.getFromType(), traceRecordRequest.getTraceType());
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);
}
traceProductDetailEntity = udiTraceService.createTracerProductByUdiCode(traceRecordRequest.getUdiCode(), 2, 1, basicUdiRelResponse, udiEntity);
traceRecordLogEntity.setTraceProductIdFk(traceProductDetailEntity.getId());
traceRecordService.updateById(traceRecordLogEntity);
udiTraceService.createCheckTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
} else {
//1:校验参数是否正确
if (StrUtil.isEmpty(traceRecordRequest.getYlqxzcrbarmc())) {
@ -251,8 +251,8 @@ public class UdiTraceController extends BaseController {
traceProductDetailEntity = udiTraceService.createTracerProductByBatchNo(traceRecordRequest, 2, 2, basicUdiRelResponse);
udiTraceService.createCheckTraceTask(traceProductDetailEntity, userCompanyEntity.getId());
}
traceSearchReponse.setTraceRecordLogEntity(traceRecordLogEntity);
return ResultVOUtils.success(traceSearchReponse);
List<TraceOrderEntity> traceOrderEntities = traceOrderService.findByProductIdFk(traceRecordLogEntity.getTraceProductIdFk());
return ResultVOUtils.success(traceOrderEntities);
}
@ -269,11 +269,22 @@ public class UdiTraceController extends BaseController {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
TraceTaskNoticeEntity taskNoticeEntity = traceTaskNoticeService.getById(traceOrderUploadRequest.getTaskId());
if (taskNoticeEntity == null) {
return ResultVOUtils.error(500, "任务已过期,或任务不存在!");
}
TraceOrderEntity traceOrderEntity = new TraceOrderEntity();
BeanUtils.copyProperties(traceOrderUploadRequest, traceOrderEntity);
traceOrderEntity.setId(IdUtil.getSnowflakeNextId());
traceOrderEntity.setUpdateTime(new Date());
traceOrderService.save(traceOrderEntity);
//设置任务已完成
taskNoticeEntity.setStatus(3);
traceTaskNoticeService.updateById(taskNoticeEntity);
udiTraceService.pushDelayRemoveTask(taskNoticeEntity);
return ResultVOUtils.success("上传成功");
}
@ -281,21 +292,42 @@ public class UdiTraceController extends BaseController {
/**
*
*
* @param traceOrderUploadRequest
* @param traceManuOrderUploadRequest
* @param bindingResult
* @return
*/
@AuthRuleAnnotation("udi/trace/manuOrder/upload")
@PostMapping("udi/trace/manuOrder/upload")
public BaseResponse uploadManuOrder(@RequestBody TraceOrderUploadRequest traceOrderUploadRequest, BindingResult bindingResult) {
public BaseResponse uploadManuOrder(@RequestBody TraceManuOrderUploadRequest traceManuOrderUploadRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
TraceOrderEntity traceOrderEntity = new TraceOrderEntity();
BeanUtils.copyProperties(traceOrderUploadRequest, traceOrderEntity);
traceOrderEntity.setId(IdUtil.getSnowflakeNextId());
traceOrderEntity.setUpdateTime(new Date());
traceOrderService.save(traceOrderEntity);
TraceTaskNoticeEntity taskNoticeEntity = traceTaskNoticeService.getById(traceManuOrderUploadRequest.getTaskId());
if (taskNoticeEntity == null) {
return ResultVOUtils.error(500, "任务已过期,或任务不存在!");
}
TraceManuOrderEntity traceManuOrderEntity = new TraceManuOrderEntity();
BeanUtils.copyProperties(traceManuOrderUploadRequest, traceManuOrderEntity);
traceManuOrderEntity.setId(IdUtil.getSnowflakeNextId());
traceManuOrderService.save(traceManuOrderEntity);
List<TraceManuDetailRequest> traceManuDetailRequests = traceManuOrderUploadRequest.getDetails();
if (CollUtil.isNotEmpty(traceManuDetailRequests)) {
for (TraceManuDetailRequest traceManuDetailRequest : traceManuDetailRequests) {
TraceManuCodeRelEntity traceManuCodeRelEntity = new TraceManuCodeRelEntity();
BeanUtils.copyProperties(traceManuDetailRequest, traceManuCodeRelEntity);
traceManuCodeRelEntity.setId(IdUtil.getSnowflakeNextId());
traceManuCodeRelEntity.setManuOrderIdFk(traceManuOrderEntity.getId());
traceManuOrderService.save(traceManuOrderEntity);
}
}
//设置任务已完成
taskNoticeEntity.setStatus(3);
traceTaskNoticeService.updateById(taskNoticeEntity);
udiTraceService.pushDelayRemoveTask(taskNoticeEntity);
return ResultVOUtils.success("上传成功");
}

@ -1,6 +1,9 @@
package com.glxp.api.entity.trace;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@ -8,6 +11,7 @@ import java.util.Date;
*
*/
@Data
@Builder
public class MqTaskDelayMessage {
private Date createTime;

@ -9,8 +9,8 @@ import java.util.List;
public class TraceManuOrderUploadRequest {
@NotNull(message = "追溯记录号")
private String recordCode;
@NotNull(message = "任务ID")
private Long taskId;
/**

@ -6,6 +6,8 @@ import lombok.Data;
public class TraceOrderUploadRequest {
private Long taskId;
/**
*
*/

@ -27,6 +27,9 @@ public interface SystemParamConfigService extends IService<SystemParamConfigEnti
String selectValueByParamKey(String key);
Integer selectIntValueByParamKey(String key);
boolean updateById(SysParamConfigSaveRequest sysParamConfigSaveRequest);
boolean updateParentId(SysParamConfigSaveRequest sysParamConfigSaveRequest);

@ -19,7 +19,7 @@ import java.util.Map;
@Service
@Transactional(rollbackFor = Exception.class)
public class SystemParamConfigServiceImpl extends ServiceImpl<SystemParamConfigDao,SystemParamConfigEntity> implements SystemParamConfigService {
public class SystemParamConfigServiceImpl extends ServiceImpl<SystemParamConfigDao, SystemParamConfigEntity> implements SystemParamConfigService {
@Resource
SystemParamConfigDao systemParamConfigDao;
@ -69,6 +69,16 @@ public class SystemParamConfigServiceImpl extends ServiceImpl<SystemParamConfigD
return null;
}
@Override
public Integer selectIntValueByParamKey(String key) {
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigDao.selectByParamKey(key);
if (systemParamConfigEntity != null) {
String value = systemParamConfigEntity.getParamValue();
return Integer.parseInt(value);
}
return 0;
}
@Override
public boolean updateById(SysParamConfigSaveRequest sysParamConfigSaveRequest) {
sysParamConfigSaveRequest.setUpdateTime(new Date());
@ -88,7 +98,6 @@ public class SystemParamConfigServiceImpl extends ServiceImpl<SystemParamConfigD
}
@Override
public Map<String, SystemParamConfigEntity> findBasicAll() {

@ -4,9 +4,11 @@ import cn.hutool.core.lang.UUID;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.config.rabbit.TopicRabbitConfig;
import com.glxp.api.entity.trace.MqTaskDelayMessage;
import com.glxp.api.entity.trace.MqTraceMessage;
import com.glxp.api.util.DateUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
@ -23,18 +25,30 @@ public class RabbitPushService {
@Resource
private final RabbitTemplate rabbitTemplate;
public BaseResponse send(MqTraceMessage mqTraceMessage) {
rabbitTemplate.convertAndSend("topicExchange", TopicRabbitConfig.trace, mqTraceMessage);
rabbitTemplate.convertAndSend(TopicRabbitConfig.TRACE_TOPIC_EXCHANGE, TopicRabbitConfig.trace, mqTraceMessage);
return ResultVOUtils.success("发送成功");
}
public BaseResponse sendDeleyTask(MqTaskDelayMessage mqTaskDelayMessage, Integer delayTime) {
rabbitTemplate.convertAndSend(TopicRabbitConfig.TRACE_DELAY_EXCHANGE, TopicRabbitConfig.delaytrace, mqTaskDelayMessage, message -> {
MessageProperties messageProperties = message.getMessageProperties();
messageProperties.setDelay(delayTime * 60);
return message;
});
return ResultVOUtils.success("发送成功");
}
public BaseResponse sendCommon(String key) {
String messageId = String.valueOf(UUID.randomUUID());
Map<String, Object> messageMap = new HashMap<>();
messageMap.put("messageId", messageId);
messageMap.put("messageData", key);
messageMap.put("createTime", DateUtil.formatDate(new Date()));
rabbitTemplate.convertAndSend("topicExchange", TopicRabbitConfig.common, messageMap);
rabbitTemplate.convertAndSend(TopicRabbitConfig.TRACE_TOPIC_EXCHANGE, TopicRabbitConfig.common, messageMap);
return ResultVOUtils.success("发送成功");
}
}

@ -13,6 +13,7 @@ import com.glxp.api.res.basic.BasicUdiRelResponse;
import com.glxp.api.service.basic.BasicUdiProductService;
import com.glxp.api.service.basic.BasicUdiRelService;
import com.glxp.api.service.sup.UserCompanyService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.util.GennerOrderUtils;
import org.springframework.stereotype.Service;
@ -44,6 +45,8 @@ public class UdiTraceService {
RabbitPushService rabbitPushService;
@Resource
TraceManuOrderService traceManuOrderService;
@Resource
SystemParamConfigService systemParamConfigService;
//创建查询日志
public TraceRecordLogEntity createRecordLog(String userId, Integer fromType, Integer traceType) {
@ -126,7 +129,8 @@ public class UdiTraceService {
//生产订单关联关系
TraceTaskNoticeEntity manuTaskNotity = traceTaskNoticeService.findTask(1, traceProductDetailEntity.getId(), companyId);
if (manuTaskNotity == null) {
createTraceNotice(1, traceProductDetailEntity, companyId);
manuTaskNotity = createTraceNotice(1, traceProductDetailEntity, companyId);
pushDelayExpireTask(manuTaskNotity);
pushMq(traceProductDetailEntity, companyId);
} else if (manuTaskNotity.getStatus() == 4) {
//任务超时未处理,重新推送消息
@ -143,13 +147,13 @@ public class UdiTraceService {
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) {
createTraceNotice(1, traceProductDetailEntity, companyId);
taskNoticeEntity = createTraceNotice(1, traceProductDetailEntity, companyId);
pushDelayExpireTask(taskNoticeEntity);
pushMq(traceProductDetailEntity, companyId);
} else if (taskNoticeEntity.getStatus() == 4) {
//任务超时未处理,重新推送消息
@ -185,7 +189,8 @@ public class UdiTraceService {
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);
taskNoticeEntity = createTraceNotice(1, traceProductDetailEntity, companyId);
pushDelayExpireTask(taskNoticeEntity);
pushMq(traceProductDetailEntity, companyId);
} else if (taskNoticeEntity.getStatus() == 4) {
//任务超时未处理,重新推送消息
@ -236,7 +241,28 @@ public class UdiTraceService {
mqTraceMessage.setCerditNo(traceProductDetailEntity.getCreditNum());
mqTraceMessage.setTaskId(traceProductDetailEntity.getId());
rabbitPushService.send(mqTraceMessage);
}
public void pushDelayRemoveTask(TraceTaskNoticeEntity taskNoticeEntity) {
//设置任务自动过期
Integer taskExitTime = systemParamConfigService.selectIntValueByParamKey("task_exit");
MqTaskDelayMessage mqTaskDelayMessage = MqTaskDelayMessage
.builder().taskId(taskNoticeEntity.getId())
.createTime(new Date())
.taskStatus(taskNoticeEntity.getStatus()).build();
rabbitPushService.sendDeleyTask(mqTaskDelayMessage, taskExitTime);
}
public void pushDelayExpireTask(TraceTaskNoticeEntity taskNoticeEntity) {
//设置任务自动过期
Integer taskExitTime = systemParamConfigService.selectIntValueByParamKey("task_expire");
MqTaskDelayMessage mqTaskDelayMessage = MqTaskDelayMessage
.builder().taskId(taskNoticeEntity.getId())
.createTime(new Date())
.taskStatus(taskNoticeEntity.getStatus()).build();
rabbitPushService.sendDeleyTask(mqTaskDelayMessage, taskExitTime);
}

@ -4,9 +4,9 @@ server:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_cpt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:p6spy:mysql://192.168.0.66:3364/udi_cpt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
password: Glxp@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 20

Loading…
Cancel
Save