package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
import com.core.common.R;
|
import com.core.common.SnowflakeIdWorker;
|
import com.zy.asrs.entity.LocDetl;
|
import com.zy.asrs.entity.OrderDetlPakout;
|
import com.zy.asrs.entity.OrderPakout;
|
import com.zy.asrs.entity.param.OrderInspectionRollParam;
|
import com.zy.asrs.entity.param.OrderOutLocBoxCsUtilParam;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.utils.CodeDetectionUtil;
|
import com.zy.asrs.utils.OrderOutBatchUtil;
|
import com.zy.common.constant.MesConstant;
|
import com.zy.common.utils.HttpHandler;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* Created by Monkey D. Luffy on 2025.11.10
|
* 徐工汉云..............以下.............上饶江铜.............组货单相关
|
*/
|
@Slf4j
|
@Service
|
public class GroupOrderFormHandler extends AbstractHandler<String> {
|
@Autowired
|
private OrderPakoutService orderPakoutService;
|
@Autowired
|
private OrderDetlPakoutService orderDetlPakoutService;
|
@Autowired
|
private ApiLogService apiLogService;
|
@Autowired
|
private SnowflakeIdWorker snowflakeIdWorker;
|
@Autowired
|
private LocDetlService locDetlService;
|
|
@Transactional
|
public ReturnT<String> abandoned(OrderPakout orderPakout) {
|
List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
|
moveBoth(orderPakout,orderDetls);
|
return SUCCESS;
|
}
|
|
private void moveBoth(OrderPakout order, List<OrderDetlPakout> orderDetls){
|
Date now = new Date();
|
if (!Cools.isEmpty(orderDetls)) {
|
for (OrderDetlPakout orderDetl : orderDetls) {
|
orderDetl.setUpdateBy(0L);
|
orderDetl.setUpdateTime(now);
|
// orderDetlPakoutService.addToLogTable(orderDetl);
|
orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>()
|
.eq("id",orderDetl.getId()));
|
}
|
}
|
if (!Cools.isEmpty(order)){
|
order.setUpdateBy(0L);
|
order.setUpdateTime(now);
|
// orderPakoutService.addToLogTable(order);
|
orderPakoutService.delete(new EntityWrapper<OrderPakout>()
|
.eq("id",order.getId()));
|
}
|
}
|
|
@Transactional
|
public ReturnT<String> inspection(OrderPakout orderPakout) {
|
List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
|
String memo = "";
|
for (OrderDetlPakout orderDetl : orderDetls) {
|
boolean signD = true;
|
if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){
|
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel()));
|
if (!Cools.isEmpty(locDetl)){
|
signD = false;
|
orderDetl.sync(locDetl);
|
orderDetl.setManu(locDetl.getLocNo());
|
orderDetl.setBarcode(locDetl.getBarcode());
|
orderDetl.setDanger(locDetl.getDanger());
|
orderDetl.setMemo(locDetl.getMemo());
|
if (!Cools.isEmpty(locDetl.getDanger$()) && locDetl.getDanger()==1){
|
orderDetl.setDanger(1);
|
orderDetlPakoutService.updateById(orderDetl);
|
continue;
|
}
|
} else {
|
if (Cools.isEmpty(memo)){
|
memo = "无库存";
|
}else {
|
memo = memo+";无库存";
|
}
|
continue;
|
}
|
}
|
if (signD){
|
if (!Cools.isEmpty(orderDetl.getDanger$()) && orderDetl.getDanger()==1){//合格不需要检验
|
continue;
|
} else {
|
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel()));
|
if (!Cools.isEmpty(locDetl.getDanger$()) && locDetl.getDanger()==1){
|
orderDetl.setDanger(1);
|
orderDetlPakoutService.updateById(orderDetl);
|
continue;
|
}
|
}
|
}
|
OrderInspectionRollParam orderInspectionRollParam = new OrderInspectionRollParam(orderDetl.getModel());
|
String response = "";
|
boolean success = false;
|
try {
|
response = new HttpHandler.Builder()
|
.setUri(MesConstant.URL)
|
.setPath(MesConstant.PAKIN_URL)
|
.setJson(JSON.toJSONString(orderInspectionRollParam))
|
.build()
|
.doPost();
|
JSONObject jsonObject = JSON.parseObject(response);
|
if (jsonObject.getInteger("code").equals(200)) {
|
if (jsonObject.getBoolean("state")) {
|
String value = jsonObject.getString("value");
|
if (value.equals("合格")){
|
orderDetl.setDanger(1);
|
orderDetlPakoutService.updateById(orderDetl);
|
} else if (!Cools.isEmpty(orderDetl.getDanger$()) && value.equals(orderDetl.getDanger$())){
|
if (Cools.isEmpty(memo)){
|
memo = "查询卷号结果:"+jsonObject.getString("message");
|
}else {
|
memo = memo+";查询卷号结果:"+jsonObject.getString("message");
|
}
|
continue;
|
} else {
|
if (Cools.isEmpty(memo)){
|
memo = "查询卷号结果:"+jsonObject.getString("message");
|
}else {
|
memo = memo+";查询卷号结果:"+jsonObject.getString("message");
|
}
|
if (value.equals("不合格")){
|
orderDetl.setDanger(2);
|
orderDetlPakoutService.updateById(orderDetl);
|
}
|
continue;
|
}
|
} else {
|
if (Cools.isEmpty(memo)){
|
memo = "查询卷号结果:"+jsonObject.getString("message");
|
}else {
|
memo = memo+";查询卷号结果:"+jsonObject.getString("message");
|
}
|
}
|
success = true;
|
} else {
|
if (Cools.isEmpty(memo)){
|
memo = "查询卷号结果:"+jsonObject.getString("message");
|
}else {
|
memo = memo+";查询卷号结果:"+jsonObject.getString("message");
|
}
|
log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(orderInspectionRollParam), response);
|
// throw new CoolException("查询卷号是否合格失败");
|
}
|
} catch (Exception e) {
|
if (Cools.isEmpty(memo)){
|
memo = "查询卷号结果:"+"异常"+e.getMessage();
|
}else {
|
memo = memo+";查询卷号结果:"+"异常"+e.getMessage();
|
}
|
log.error("fail", e);
|
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
// return FAIL.setMsg(e.getMessage());
|
} finally {
|
try {
|
// 保存接口日志
|
apiLogService.save(
|
"查询卷号是否合格",
|
MesConstant.URL + MesConstant.PAKIN_URL,
|
null,
|
"127.0.0.1",
|
JSON.toJSONString(orderInspectionRollParam),
|
response,
|
success
|
);
|
} catch (Exception e) { log.error("查询卷号是否合格保存接口日志异常", e); }
|
}
|
}
|
if (Cools.isEmpty(memo)){
|
return SUCCESS;
|
}
|
orderPakout.setSettle(13L);//检验存在不合格
|
orderPakout.setMemo(memo);
|
orderPakoutService.updateById(orderPakout);
|
return FAIL;
|
}
|
|
@Transactional
|
public ReturnT<String> start(OrderPakout orderPakout) {
|
List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
|
if (orderDetlPakoutList.isEmpty()){
|
orderPakout.setSettle(98L);
|
orderPakout.setMemo("不存在明细!!!");
|
orderPakoutService.updateById(orderPakout);
|
return FAIL;
|
}
|
List<OrderOutLocBoxCsUtilParam> outLocBoxCs = new ArrayList<>();
|
String orderNo = "ZH" + snowflakeIdWorker.nextId();
|
for (OrderDetlPakout orderDetl : orderDetlPakoutList) {
|
if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){//无库存
|
continue;
|
}
|
if (Cools.isEmpty(orderDetl.getDanger$()) || orderDetl.getDanger()!=1){//不合格不出库
|
continue;
|
}
|
OrderOutLocBoxCsUtilParam outLocBox = new OrderOutLocBoxCsUtilParam();
|
outLocBox.setBoxNo(orderDetl.getBatch());
|
outLocBox.setRoll(orderDetl.getModel());
|
outLocBox.setMemo(orderDetl.getMemo());
|
outLocBox.setOrderOneNo(orderNo);
|
outLocBox.setCstmrName(orderPakout.getCstmrName());
|
outLocBox.setDanger(orderDetl.getDanger$());
|
outLocBoxCs.add(outLocBox);
|
}
|
if (outLocBoxCs.isEmpty()){
|
orderPakout.setSettle(98L);
|
orderPakout.setMemo("不存在合格的物料明细!!!");
|
orderPakoutService.updateById(orderPakout);
|
return FAIL;
|
}
|
|
OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,orderPakout.getCstmrName(),"","MES下发组货单","组货单",true,orderPakout.getItemName());
|
R r = orderOutBatchUtil.outGroupOrderForm(outLocBoxCs);
|
int code = Integer.parseInt(String.valueOf(r.get("code")));
|
if (code==200){
|
return SUCCESS;
|
}
|
String meg = String.valueOf(r.get("msg"));
|
orderPakout.setSettle(98L);
|
orderPakout.setMemo(meg);
|
orderPakoutService.updateById(orderPakout);
|
return FAIL;
|
}
|
|
}
|