package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.core.common.Cools;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.DocType;
|
import com.zy.asrs.entity.Order;
|
import com.zy.asrs.entity.OrderDetl;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.utils.OrderInAndOutUtil;
|
import com.zy.common.model.DetlDto;
|
import com.zy.common.utils.HttpHandler;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by vincent on 2020/7/7
|
*/
|
@Slf4j
|
@Service
|
public class OrderSyncHandler extends AbstractHandler<String> {
|
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private OrderDetlService orderDetlService;
|
|
@Autowired
|
private DocTypeService docTypeService;
|
@Autowired
|
private ReportToThirdService reportToThirdService;
|
|
@Transactional
|
public ReturnT<String> startOrderIssuedOnceMore(Order order) {
|
DocType docType = docTypeService.selectById(order.getDocType());
|
if (null == docType) {
|
return SUCCESS;
|
}
|
|
Order order1 = OrderInAndOutUtil.selectByNo(order.getPakinPakoutStatus$(), order.getOrderNo());
|
if (!Cools.isEmpty(order1)) {
|
return FAIL.setMsg("请等待...订单执行档案正在转历史档案!!!");
|
}
|
List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
|
if (!Cools.isEmpty(orderDetls) || !orderDetls.isEmpty()) {
|
return FAIL.setMsg("请等待...订单执行明细档案正在转历史档案!!!");
|
}
|
|
// 单据明细档
|
List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
|
for (OrderDetl orderDetl : orderDetlList) {
|
if (orderDetl.getQty().equals(0D)) {
|
continue;
|
}
|
orderDetl.setWorkQty(orderDetl.getQty());
|
orderDetl.setAnfme(orderDetl.getAnfme() - orderDetl.getQty());
|
orderDetl.setQty(0D);
|
orderDetlService.updateById(orderDetl);
|
}
|
|
// 修改订单状态 99.再次作业 ===>> 1.待作业
|
if (!orderService.updateSettle(order.getId(), 1L, null)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
return SUCCESS;
|
}
|
|
@Transactional
|
public ReturnT<String> startOrderIssued(Order order) {
|
DocType docType = docTypeService.selectById(order.getDocType());
|
if (null == docType) {
|
return SUCCESS;
|
}
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
|
OrderInAndOutUtil.insertOrder(order.getPakinPakoutStatus$(), order);
|
// 单据明细档
|
List<DetlDto> list = new ArrayList<>();
|
List<OrderDetl> orderDetlList = new ArrayList<>();
|
|
for (OrderDetl detail : orderDetls) {
|
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getBrand(), detail.getStandby1(), detail.getStandby2(), detail.getStandby3(),
|
detail.getBoxType1(), detail.getBoxType2(), detail.getBoxType3(), detail.getAnfme());
|
if (DetlDto.has(list, dto)) {
|
DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3());
|
assert detlDto != null;
|
detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
|
|
OrderDetl orderDetl = OrderDetl.find(orderDetlList, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3());
|
assert orderDetl != null;
|
orderDetl.setAnfme(orderDetl.getAnfme() + detail.getAnfme());
|
} else {
|
list.add(dto);
|
orderDetlList.add(detail);
|
}
|
}
|
for (OrderDetl orderDetl : orderDetlList) {
|
orderDetl.setWorkQty(0D);
|
OrderInAndOutUtil.insertOrderDetl(order.getPakinPakoutStatus$(), order, orderDetl);
|
}
|
// 修改订单状态 1.未作业 ===>> 2.作业中
|
if (!orderService.updateSettle(order.getId(), 2L, null)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
return SUCCESS;
|
}
|
|
@Transactional
|
public ReturnT<String> startOrderInAndOutUtil(Order order) {
|
DocType docType = docTypeService.selectById(order.getDocType());
|
if (null == docType) {
|
return SUCCESS;
|
}
|
Order orderSou = orderService.selectByNo(order.getOrderNo());
|
if (!orderSou.getSettle().equals(2L)) {
|
return FAIL.setMsg("订单状态不正确,请联系管理员");
|
}
|
List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(orderSou.getId());
|
|
List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
|
|
for (OrderDetl orderDetlSou : orderDetlList) {
|
for (OrderDetl orderDetl : orderDetls) {
|
if (orderDetl.getQty().equals(0D)) {
|
continue;
|
}
|
if (orderDetlSou.beSimilar(orderDetl)) {
|
double v = orderDetlSou.getAnfme() - orderDetlSou.getQty();
|
if (v < orderDetl.getQty() || orderDetl.getQty().equals(v)) {
|
orderDetlSou.setQty(orderDetlSou.getAnfme());
|
orderDetl.setQty(orderDetl.getQty() - v);
|
break;
|
} else {
|
orderDetlSou.setQty(orderDetlSou.getQty() + orderDetl.getQty());
|
orderDetl.setQty(0D);
|
}
|
}
|
}
|
}
|
for (OrderDetl orderDetlSou : orderDetlList) {
|
orderDetlService.updateById(orderDetlSou);
|
}
|
// 修改订单状态 2.作业中 ===>> 4.待上报
|
if (!orderService.updateSettle(orderSou.getId(), 4L, null)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
// 修改订单状态 4.完成 ===>> 6.结束
|
OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(), order.getId(), 6L, null);
|
return SUCCESS;
|
}
|
|
@Transactional
|
public ReturnT<String> startOrderReport(Order order) {
|
DocType docType = docTypeService.selectById(order.getDocType());
|
if (null == docType) {
|
return SUCCESS;
|
}
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
reportToThirdService.report(order, orderDetls, docType);
|
return SUCCESS;
|
}
|
|
|
}
|