|
|
package com.glxp.api.controller.trace;
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.glxp.api.annotation.AuthRuleAnnotation;
|
|
|
import com.glxp.api.common.enums.ResultEnum;
|
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
|
import com.glxp.api.common.util.ResultVOUtils;
|
|
|
import com.glxp.api.controller.BaseController;
|
|
|
import com.glxp.api.entity.basic.UdiEntity;
|
|
|
import com.glxp.api.entity.sup.UserCompanyEntity;
|
|
|
import com.glxp.api.entity.trace.TraceOrderEntity;
|
|
|
import com.glxp.api.entity.trace.TraceProductDetailEntity;
|
|
|
import com.glxp.api.entity.trace.TraceTaskNoticeEntity;
|
|
|
import com.glxp.api.req.trace.TraceOrderDetailRequest;
|
|
|
import com.glxp.api.req.trace.TraceOrderRequest;
|
|
|
import com.glxp.api.req.trace.TraceOrderUploadRequest;
|
|
|
import com.glxp.api.req.trace.TraceRecordRequest;
|
|
|
import com.glxp.api.res.PageSimpleResponse;
|
|
|
import com.glxp.api.res.trace.TraceOrderResponse;
|
|
|
import com.glxp.api.res.trace.TraceRecordResponse;
|
|
|
import com.glxp.api.service.sup.UserCompanyService;
|
|
|
import com.glxp.api.service.trace.TraceOrderService;
|
|
|
import com.glxp.api.service.trace.TraceProductDetailService;
|
|
|
import com.glxp.api.service.trace.TraceTaskNoticeService;
|
|
|
import com.glxp.api.service.trace.UdiTraceService;
|
|
|
import com.glxp.api.util.udi.FilterUdiUtils;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import springfox.documentation.annotations.ApiIgnore;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Api(tags = "追溯单据相关接口")
|
|
|
@ApiIgnore
|
|
|
@RestController
|
|
|
@Slf4j
|
|
|
@RequiredArgsConstructor
|
|
|
public class TraceOrderController extends BaseController {
|
|
|
|
|
|
@Resource
|
|
|
TraceOrderService traceOrderService;
|
|
|
@Resource
|
|
|
private final RabbitTemplate rabbitTemplate;
|
|
|
|
|
|
@ApiOperation(value = "查询追溯出入库单据列表", response = TraceOrderResponse.class)
|
|
|
@AuthRuleAnnotation("")
|
|
|
@GetMapping("udi/trace/order/filter")
|
|
|
public BaseResponse getTraceOrderList(TraceOrderDetailRequest traceOrderDetailRequest) {
|
|
|
/*if ((traceOrderDetailRequest.getUdiCode() == null || traceOrderDetailRequest.getUdiCode().equals("")) &&
|
|
|
(traceOrderDetailRequest.getYlqxzcrbarmc() == null || traceOrderDetailRequest.getYlqxzcrbarmc().equals("")) &&
|
|
|
(traceOrderDetailRequest.getCpmctymc() == null || traceOrderDetailRequest.getCpmctymc().equals("")) &&
|
|
|
(traceOrderDetailRequest.getGgxh() == null || traceOrderDetailRequest.getGgxh().equals("")) &&
|
|
|
(traceOrderDetailRequest.getNameCode() == null || traceOrderDetailRequest.getNameCode().equals("")) &&
|
|
|
(traceOrderDetailRequest.getBatchNo() == null || traceOrderDetailRequest.getBatchNo().equals("")) &&
|
|
|
(traceOrderDetailRequest.getCompanyName() == null || traceOrderDetailRequest.getCompanyName().equals(""))
|
|
|
) {
|
|
|
return ResultVOUtils.error(500, "查询条件不能为空!");
|
|
|
}*/
|
|
|
if (StrUtil.isNotEmpty(traceOrderDetailRequest.getUdiCode())) {
|
|
|
UdiEntity udiEntity = FilterUdiUtils.getUdi(traceOrderDetailRequest.getUdiCode());
|
|
|
if (udiEntity == null) {
|
|
|
return ResultVOUtils.error(500, "无效UDI码!");
|
|
|
}
|
|
|
}
|
|
|
List<TraceOrderResponse> traceOrderResponses = traceOrderService.queryTraceOrderList(traceOrderDetailRequest);
|
|
|
PageInfo<TraceOrderResponse> pageInfo = new PageInfo<>(traceOrderResponses);
|
|
|
PageSimpleResponse<TraceOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
|
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
|
|
pageSimpleResponse.setList(traceOrderResponses);
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
}
|
|
|
|
|
|
@Resource
|
|
|
TraceTaskNoticeService traceTaskNoticeService;
|
|
|
@Resource
|
|
|
UserCompanyService userCompanyService;
|
|
|
@Resource
|
|
|
UdiTraceService udiTraceService;
|
|
|
@Resource
|
|
|
TraceProductDetailService traceProductDetailService;
|
|
|
|
|
|
//客户端单据信息上传接口
|
|
|
@ApiOperation(value = "客户端单据信息上传接口", response = BaseResponse.class)
|
|
|
@AuthRuleAnnotation("udi/trace/inout/order/upload")
|
|
|
@PostMapping("udi/trace/inout/order/upload")
|
|
|
public BaseResponse uploadInoutOrder(@RequestBody TraceOrderUploadRequest traceOrderUploadRequest, BindingResult bindingResult) {
|
|
|
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.setCompanyIdFk(taskNoticeEntity.getCompanyIdFk());
|
|
|
traceOrderEntity.setTraceProductIdFk(taskNoticeEntity.getProdudctRecordIdFk());
|
|
|
traceOrderEntity.setId(IdUtil.getSnowflakeNextId());
|
|
|
traceOrderEntity.setUpdateTime(new Date());
|
|
|
traceOrderService.replace(traceOrderEntity);
|
|
|
taskNoticeEntity.setStatus(3);
|
|
|
taskNoticeEntity.setUpdateTime(new Date());
|
|
|
traceTaskNoticeService.updateById(taskNoticeEntity);
|
|
|
|
|
|
|
|
|
// 推送下一家企业
|
|
|
UserCompanyEntity userCompanyEntity = userCompanyService.getById(traceOrderEntity.getCompanyIdFk());
|
|
|
if (StrUtil.isNotEmpty(traceOrderEntity.getToCorpCreditNum()) &&
|
|
|
!traceOrderEntity.getToCorpCreditNum().equals(userCompanyEntity.getCreditNum())) {
|
|
|
UserCompanyEntity toUserCompanyEntity = userCompanyService.getOne(new QueryWrapper<UserCompanyEntity>().eq("creditNum", traceOrderEntity.getToCorpCreditNum()), false);
|
|
|
if (toUserCompanyEntity != null) {
|
|
|
TraceTaskNoticeEntity nextNotity = traceTaskNoticeService.findTask(2, traceOrderEntity.getTraceProductIdFk(), toUserCompanyEntity.getId());
|
|
|
if (nextNotity == null) {
|
|
|
TraceProductDetailEntity traceProductDetailEntity = traceProductDetailService.getById(traceOrderEntity.getTraceProductIdFk());
|
|
|
nextNotity = udiTraceService.createTraceNotice(2, traceProductDetailEntity, toUserCompanyEntity.getId());
|
|
|
udiTraceService.pushDelayExpireTask(nextNotity);
|
|
|
udiTraceService.pushMq(nextNotity, toUserCompanyEntity.getId());
|
|
|
} else if (nextNotity.getStatus() == 4) {
|
|
|
//任务超时未处理,重新推送消息
|
|
|
udiTraceService.pushMq(nextNotity, toUserCompanyEntity.getId());
|
|
|
}
|
|
|
} else {
|
|
|
log.error("未找到下一家企业");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
return ResultVOUtils.success("成功");
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "查询出入库", response = TraceRecordResponse.class)
|
|
|
@AuthRuleAnnotation("udi/trace/inout/order/filter")
|
|
|
@GetMapping("udi/trace/inout/order/filter")
|
|
|
public BaseResponse filterLogs(TraceOrderRequest traceOrderRequest) {
|
|
|
|
|
|
List<TraceOrderResponse> traceOrderResponses = traceOrderService.filterOrder(traceOrderRequest);
|
|
|
PageInfo<TraceOrderResponse> pageInfo = new PageInfo<>(traceOrderResponses);
|
|
|
PageSimpleResponse<TraceOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
|
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
|
|
pageSimpleResponse.setList(traceOrderResponses);
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|