代码合并

This commit is contained in:
zhouz
2024-06-26 23:09:09 +08:00
91 changed files with 3588 additions and 892 deletions

View File

@@ -129,7 +129,12 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService
code = "VEHICLE_CODE_GXTP";
break;
case "0003":
code = "VEHICLE_CODE_LK";
if (class_jo.getString("class_code").equals("000301")){
code = "VEHICLE_CODE_LK";
}
if (class_jo.getString("class_code").equals("000302")){
code = "VEHICLE_CODE_LKB";
}
break;
default:
break;

View File

@@ -108,4 +108,11 @@ public class StructattrController {
structattrService.blurQuery(whereJson);
return new ResponseEntity<>( HttpStatus.OK);
}
@PostMapping("/tunConfirm")
@Log("二期禁用巷道")
public ResponseEntity<Object> tunConfirm(@RequestBody JSONObject json) {
structattrService.tunConfirm(json);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -117,4 +117,13 @@ public interface StructattrService {
* }
*/
void blurQuery(JSONObject whereJson);
/**
* 二期禁用巷道
* @param json {
* block_num 巷道
* is_used: 0-禁用1-启用
* }
*/
void tunConfirm(JSONObject json);
}

View File

@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -686,4 +687,17 @@ public class StructattrServiceImpl implements StructattrService {
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void tunConfirm(JSONObject json) {
WQLObject tab = WQLObject.getWQLObject("st_ivt_structattr");
// 将这一巷道的所有仓位都禁用
JSONObject param = new JSONObject();
param.put("is_used", json.getString("is_used"));
tab.update(param,"sect_id = '"+IOSEnum.SECT_ID.code("二期主存区")+"' AND block_num = '"+json.getString("block_num")+"' AND is_delete = '0'");
}
}

View File

@@ -67,10 +67,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -1795,7 +1792,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("二楼到一楼成品子卷到达一楼输送线sendProductToFirstFloor--------------------------" + whereJson.toString());
JSONObject result = new JSONObject();
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
throw new BadRequestException("接口sendProductToFirstFloor任务号或子卷号参数为空!");
throw new BadRequestException("接口sendProductToFirstFloor目标站点或子卷号参数为空!");
}
if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) {
throw new BadRequestException("接口sendProductToFirstFloor目标站点或子卷号参数为null");
}
RLock lock = redissonClient.getLock(whereJson.getString("material_barcode"));
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
@@ -1819,23 +1819,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jo.put("point_code2", mzPointList.get(0).getPoint_code());
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
//空载具缓存位有空载具
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed()).collect(Collectors.toList());
//空载具缓存位有空载具,桁架取空载具从外到里取空载具,升序
if (CollectionUtils.isNotEmpty(kzjPointList)) {
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
jo.put("point_code4", whereJson.getString("device_code"));
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
} else {
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
// 创建前先判断是否有已创建相同任务
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")));
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
jo.put("point_code4", whereJson.getString("device_code"));
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
jo.put("is_send", true);
mzhcwTask.createTask(jo);
}
} else {
//如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo.put("is_send", true);
mzhcwTask.createTask(jo);
}
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
List<SchBaseTask> existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
if (CollectionUtils.isEmpty(existTasks)) {
JSONObject jo1 = new JSONObject();
//创建确定终点任务
jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
jo1.put("point_code2", "NBJ1002");
@@ -1844,27 +1854,24 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
ssxDjwTask.createTask(jo1);
}
}
jo.put("is_send", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
} else {
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 创建前先判断是否有已创建相同任务
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")));
//如果有就不创建,没有就创建
if (CollectionUtils.isEmpty(existTaskList)) {
//只确定起点NBJ1002
JSONObject jo2 = new JSONObject();
jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo2.put("point_code1", "NBJ1002");
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
jo2.put("is_send", false);
mzhcwTask.createTask(jo2);
}
// List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
// //如果有就不创建,没有就创建
// if (CollectionUtils.isEmpty(existTaskList)) {
// //只确定起点NBJ1002
// JSONObject jo2 = new JSONObject();
// jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
// jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
// jo2.put("point_code1", "NBJ1002");
// jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
// jo2.put("is_send", false);
// mzhcwTask.createTask(jo2);
// }
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "满轴缓存位暂无空位!");
}
} else {
log.info("二楼到一楼,成品子卷到达一楼输送线,异常,任务正在创建中");
@@ -1879,6 +1886,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return result;
}
private List<SchBaseTask> getExistTasks(String taskType) {
return taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, taskType)
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")));
}
@Override
@Transactional(rollbackFor = Exception.class)
@@ -1914,6 +1928,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isEmpty(whereJson.getString("material_barcode"))) {
throw new BadRequestException("子卷号不能为空!");
}
if (whereJson.getIntValue("weight") <= 0) {
throw new BadRequestException("上报的重量不能为0!");
}
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
inBussManageService.inTask(whereJson);
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
@@ -1947,7 +1964,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 6-退货入库
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("退货入库"));
whereJson.put("box_no", whereJson.getString("material_barcode"));
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status in ('0','1')").getResultJSONArray(0);
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status in ('0','1','99')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
@@ -1968,8 +1985,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("applyTwo返回参数---------------------------------------------" + result.toString());
return result;
}
}
finally {
} finally {
if (tryLock) {
lock.unlock();
}
@@ -1984,21 +2000,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Transactional(rollbackFor = Exception.class)
public JSONObject applySendOutTwo(JSONObject whereJson) {
log.info("applySendOutTwo输入参数---------------------------------------------" + whereJson.toString());
// 校验
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
throw new BadRequestException("设备号不能为空!");
}
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
throw new BadRequestException("载具号不能为空!");
}
JSONObject result = new JSONObject();
try {
// 调用服务
sendOutManageService.createSendOutTask(whereJson);
try {
// 校验是否是二次分配
if (ObjectUtil.isEmpty(whereJson.getString("task_code"))) {
// 第一次申请
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
throw new BadRequestException("设备号不能为空!");
}
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
throw new BadRequestException("载具号不能为空!");
}
// 调用服务
sendOutManageService.createSendOutTaskOne(whereJson);
} else {
// 第二次申请
String point_code = sendOutManageService.createSendOutTaskTwo(whereJson);
result.put("data", point_code);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功!");
return result;

View File

@@ -1,5 +1,6 @@
package org.nl.wms.ext.mes.rest;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -117,4 +118,25 @@ public class LmsToMesController {
public ResponseEntity<Object> ChildScrapUpdate(@RequestBody JSONObject jo) {
return new ResponseEntity<>(lmsToMesService.ChildScrapUpdate(jo), HttpStatus.OK);
}
@PostMapping("/momAutoTransterMoveIn")
@Log("表处、分切上料反馈接口")
@SaIgnore
public ResponseEntity<Object> momAutoTransterMoveIn(@RequestBody JSONObject jo) {
return new ResponseEntity<>(lmsToMesService.momAutoTransterMoveIn(jo), HttpStatus.OK);
}
@PostMapping("/momGetPackingInfo")
@Log("LMS通过木箱号调用木箱信息")
@SaIgnore
public ResponseEntity<Object> momGetPackingInfo(@RequestBody JSONObject jo) {
return new ResponseEntity<>(lmsToMesService.momGetPackingInfo(jo), HttpStatus.OK);
}
@PostMapping("/momBoxPackageSubmit")
@Log("LMS装箱完成传MES包装关系")
@SaIgnore
public ResponseEntity<Object> momBoxPackageSubmit(@RequestBody JSONObject jo) {
return new ResponseEntity<>(lmsToMesService.momBoxPackageSubmit(jo), HttpStatus.OK);
}
}

View File

@@ -176,4 +176,10 @@ public interface LmsToMesService {
*/
JSONObject sendSalesIvtMsgParam(JSONObject param);
JSONObject momAutoTransterMoveIn(JSONObject jo);
JSONObject momGetPackingInfo(JSONObject jo);
JSONObject momBoxPackageSubmit(JSONObject jo);
}

View File

@@ -701,6 +701,164 @@ public class LmsToMesServiceImpl implements LmsToMesService {
return result;
}
@Override
public JSONObject momAutoTransterMoveIn(JSONObject param) {
String from_area = param.getString("from_area");
String to_area = param.getString("to_area");
String container_name = param.getString("container_name");
if (StrUtil.isEmpty(from_area)) {
throw new BadRequestException("起始区域不能为空!");
}
if (StrUtil.isEmpty(to_area)) {
throw new BadRequestException("目的区域不能为空!");
}
if (StrUtil.isEmpty(container_name)) {
throw new BadRequestException("子卷号不能为空!");
}
JSONObject result = new JSONObject();
log.info("momAutoTransterMoveIn接口输入参数为-------------------" + param.toString());
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue();
String api = "/momAutoTransterMoveIn";
url = url + api;
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("UserName", UserName);
param.put("Password", Password);
param.put("SourceLocation", from_area);
param.put("ContainerName", container_name);
param.put("DestLocation", to_area);
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momAutoTransterMoveIn接口输出参数为-------------------" + result.toString());
String RTYPE = result.getString("RTYPE");
if ("E".equals(RTYPE)) {
throw new BadRequestException(result.getString("RTMSG"));
}
} catch (Exception e) {
throw new BadRequestException("MES提示错误" + e.getMessage());
}
return result;
}
@Override
public JSONObject momGetPackingInfo(JSONObject param) {
String box_no = param.getString("box_no");
if (StrUtil.isEmpty(box_no)) {
throw new BadRequestException("木箱号不能为空!");
}
JSONObject result = new JSONObject();
log.info("momGetPackingInfo接口输入参数为-------------------" + param.toString());
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue();
String api = "momGetPackingInfo";
url = url + api;
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("UserName", UserName);
param.put("Password", Password);
param.put("ContainerName", box_no);
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momGetPackingInfo接口输出参数为-------------------" + result.toString());
String RTYPE = result.getString("RTYPE");
if ("E".equals(RTYPE)) {
throw new BadRequestException(result.getString("RTMSG"));
}
} catch (Exception e) {
throw new BadRequestException("MES提示错误" + e.getMessage());
}
return result;
}
@Override
public JSONObject momBoxPackageSubmit(JSONObject param) {
log.info("momBoxPackageSubmit接口输入参数为-------------------" + param.toString());
String box_no = param.getString("box_no");
String num = param.getString("num");
String box_weight = param.getString("box_weight");
JSONArray rows = param.getJSONArray("rows");
if (StrUtil.isEmpty(box_no)) {
throw new BadRequestException("木箱号不能为空!");
}
if (StrUtil.isEmpty(num)) {
throw new BadRequestException("箱内子卷数不能为空!");
}
if (StrUtil.isEmpty(box_weight)) {
throw new BadRequestException("木箱毛重不能为空!");
}
if (ObjectUtil.isEmpty(rows)) {
throw new BadRequestException("箱内子卷信息不能为空!");
}
JSONObject result = new JSONObject();
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue();
String api = "momBoxPackageSubmit";
url = url + api;
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("UserName", UserName);
param.put("Password", Password);
param.put("PackageBoxSN", box_no);
param.put("QuanlityInBox", num);
param.put("BoxWeight", box_weight);
param.put("ContainerList", rows);
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momBoxPackageSubmit接口输出参数为-------------------" + result.toString());
String RTYPE = result.getString("RTYPE");
if ("E".equals(RTYPE)) {
throw new BadRequestException(result.getString("RTMSG"));
}
} catch (Exception e) {
throw new BadRequestException("MES提示错误" + e.getMessage());
}
return result;
}
@Override
public JSONObject sendSalesIvtMsg(String file_name) {

View File

@@ -5,21 +5,30 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.nl.b_lms.bst.ivt.scale.bound.service.IBstIvtScaleboundService;
import org.nl.b_lms.bst.ivt.scale.bound.service.dao.BstIvtScalebound;
import org.nl.b_lms.bst.ivt.scale.history.service.IBstIvtScalehistoryService;
import org.nl.b_lms.bst.ivt.scale.history.service.dao.BstIvtScalehistory;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.ProcessTask;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
import org.nl.b_lms.sch.tasks.first_floor_area.GzqTask;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -28,10 +37,12 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.ext.mes.service.MesToLmsService;
import org.nl.wms.pda.mps.service.InService;
import org.nl.wms.pda.mps.service.OutService;
import org.nl.wms.pda.mps.service.impl.BakingServiceImpl;
import org.nl.wms.pdm.bi.service.dto.SubpackagerelationDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.tasks.CoolCutTask;
import org.nl.wms.st.inbill.service.CheckOutBillService;
@@ -60,11 +71,20 @@ public class MesToLmsServiceImpl implements MesToLmsService {
@Autowired
private IPdmBiSlittingproductionplanService slittingproductionplanService;
@Autowired
private WmsToAcsService wmsToAcsService;
@Resource
private DjqTask djqTask;
@Resource
private GzqTask gzqTask;
@Autowired
private IBstIvtScalehistoryService scaleHistoryService;
@Autowired
private IBstIvtScaleboundService scaleBoundService;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@@ -98,6 +118,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
String EqpVelocity = param.getString("EqpVelocity");
String UpCoilerDate = param.getString("UpCoilerDate");
String IsReloadSend = param.getString("IsReloadSend");
String Attribute1 = param.getString("Attribute1");
WQLObject pointTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt");
WQLObject orderTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder");
@@ -149,6 +170,11 @@ public class MesToLmsServiceImpl implements MesToLmsService {
json.put("is_reload_send", IsReloadSend);
json.put("product_area", jsonPoint.getString("product_area"));
json.put("point_code", jsonPoint.getString("point_code"));
if (Attribute1.equals("SF1")) {
json.put("order_type", "1");
} else if (Attribute1.equals("SF2")) {
json.put("order_type", "2");
}
json.put("realstart_time", DateUtil.now());
json.put("status", "01");
json.put("is_delete", "0");
@@ -1746,6 +1772,32 @@ public class MesToLmsServiceImpl implements MesToLmsService {
public JSONObject momSendSplitMfgOrderBOM(JSONObject param) {
log.info("momSendSplitMfgOrderBOM输入参数为-------------------" + param.toString());
/* MES传递的入参内容
[
{
"MfgOrderName": "25529502-20230926$02#02",
"ProductName": "44151000900045",
"Description": "木制包装容器及板材|木箱|650|4|3|1290*750*494",
"CarrierName": "48221000000001",
"CarrierDescription": "纸制筒管|纸管|3英寸|650",
"Type": "RW2",
"HL01": "A+",
"HL02": "520",
"HL03": "1,538.000",
"HL031": "2,000.000",
"HL04": "100.000",
"HL041": "130.000",
"HL05": "20,000.000",
"HL06": "CC",
"HL07": "4",
"HL08": "ZT1(纸筒-3寸)",
"HL081": "650",
"HL09": "ROF(毛面朝外)",
"HL10": "纸管长度650中性包装",
"HL11": null
}
]*/
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
@@ -1756,29 +1808,61 @@ public class MesToLmsServiceImpl implements MesToLmsService {
@Override
public JSONObject getRollInfo(JSONObject param) {
JSONObject result = new JSONObject();
String ContainerName = param.getString("ContainerName");
PdmBiSlittingproductionplan one = slittingproductionplanService.getOne(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().eq(PdmBiSlittingproductionplan::getContainer_name, ContainerName));
if (ObjectUtil.isEmpty(one)){
throw new BadRequestException("未查询到子卷号为["+ContainerName+"]的分切计划!");
if (ObjectUtil.isEmpty(one)) {
throw new BadRequestException("未查询到子卷号为[" + ContainerName + "]的分切计划!");
}
JSONArray arr = new JSONArray();
JSONObject resultParam = new JSONObject();
resultParam.put("ContainerName",ContainerName);
resultParam.put("ResourceName","");
resultParam.put("Weight",one.getWeight());
resultParam.put("WeighDate",DateUtil.now());
resultParam.put("Type",one.getPaper_tube_or_FRP());
resultParam.put("CarrierWeight",one.getPaper_weight());
return resultParam;
resultParam.put("ContainerName", ContainerName);
resultParam.put("ResourceName", "");
resultParam.put("Weight", one.getWeight());
resultParam.put("WeighDate", DateUtil.now());
resultParam.put("Type", one.getPaper_tube_or_FRP());
resultParam.put("CarrierWeight", one.getPaper_weight());
arr.add(resultParam);
result.put("RTYPE", "S");
result.put("RTMSG", "操作成功!");
result.put("RTOAL", 1);
result.put("RTDAT", arr);
return result;
}
@Override
public JSONObject sendLevelInfo(JSONObject param) {
log.info("sendLevelInfo输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
String ContainerName = param.getString("ContainerName");
String Level = param.getString("Level");
try {
if (StrUtil.isEmpty(ContainerName)) {
throw new BadRequestException("子卷号不能为空!");
}
if (StrUtil.isEmpty(Level)) {
throw new BadRequestException("子卷等级不能为空!");
}
PdmBiSlittingproductionplan plan = slittingproductionplanService.getOne(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().eq(PdmBiSlittingproductionplan::getContainer_name, ContainerName)
.eq(PdmBiSlittingproductionplan::getIs_delete, "0"));
if (ObjectUtil.isEmpty(plan)) {
throw new BadRequestException("未查询到对应的分切计划!");
}
plan.setLevel(Level);
slittingproductionplanService.update(plan);
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
} catch (Exception e) {
resultParam.put("RTYPE", "E");
resultParam.put("Code", "1");
resultParam.put("RTMSG", "操作失败!" + e.getMessage());
}
return resultParam;
}
@@ -1797,6 +1881,86 @@ public class MesToLmsServiceImpl implements MesToLmsService {
@Override
public JSONObject sendSubInfo(JSONObject param) {
/* {"ContainerName":"A1222211290105A3",
"SAPLotNumber":"A000000168",
"SaleOrderName":"100000022-100",
"CustomerName":"10000282",
"CustomerDescription":"深圳市金泰莱新材料有限公司",
"WidthPlan":null,"ThicknessPlan":"6",
"Width":"710","Thickness":"1",
"MassPerUnitArea":"1","NetWeight":204.906,
"Length":"6500","DateOfProduction":"2024-05-24",
"isUnPlanProduction":"0",
"UnPlanProductProperty1":"面密度/g/m²:1|面密度极差/g/m²:0.4|铬含量/ppm:1|断裂伸长率/%:1.0|高温抗氧化性150℃|10min:1|M面光泽度/GU:1|M面粗糙度Rz/μm:1|S面粗糙度Ra/μm:1|抗拉强度/Mpa:1.0|厚度/μm:1|润湿性/mN/m - ≥:1|翘曲/mm:1",
"UnPlanProductProperty2":"",
"UnPlanProductProperty3":"",
"SOTensileStrengthLowerLimit":null,
"ETTensileStrengthLowerLimit":"300",
"TensileStrength":"1.0"}*/
//子卷号
String ContainerName = param.getString("ContainerName");
//SAP批次
String SAPLotNumber = param.getString("SAPLotNumber");
//销售订单及行号
String SaleOrderName = param.getString("SaleOrderName");
//客户编号
String CustomerName = param.getString("CustomerName");
//客户名称
String CustomerDescription = param.getString("CustomerDescription");
//计划幅宽
String WidthPlan = param.getString("WidthPlan");
//计划厚度
String ThicknessPlan = param.getString("ThicknessPlan");
//产品幅宽
String Width = param.getString("Width");
//产品厚度
String Thickness = param.getString("Thickness");
//单位面积质量
String MassPerUnitArea = param.getString("MassPerUnitArea");
//净重
String NetWeight = param.getString("NetWeight");
//长度
String Length = param.getString("Length");
//制造完成日期
String DateOfProduction = param.getString("DateOfProduction");
//计划外分切的子卷
String isUnPlanProduction = param.getString("isUnPlanProduction");
//子卷的物性值1
String UnPlanProductProperty1 = param.getString("UnPlanProductProperty1");
//子卷的物性值2
String UnPlanProductProperty2 = param.getString("UnPlanProductProperty2");
//子卷的物性值3
String UnPlanProductProperty3 = param.getString("UnPlanProductProperty3");
//客户需求抗拉下限
String SOTensileStrengthLowerLimit = param.getString("SOTensileStrengthLowerLimit");
//内控标准抗拉下限
String ETTensileStrengthLowerLimit = param.getString("ETTensileStrengthLowerLimit");
//生产实际抗拉值
String TensileStrength = param.getString("TensileStrength");
PdmBiSubpackagerelation dto = new PdmBiSubpackagerelation();
dto.setContainer_name(ContainerName);
dto.setSap_pcsn(SAPLotNumber);
dto.setSale_order_name(SaleOrderName);
dto.setContainer_name(CustomerName);
dto.setCustomer_description(CustomerDescription);
dto.setWidth(Width);
dto.setThickness(Thickness);
dto.setMass_per_unit_area(MassPerUnitArea);
dto.setNet_weight(NetWeight);
dto.setLength(Length);
dto.setDate_of_production(DateOfProduction);
dto.setIs_un_plan_production(isUnPlanProduction);
dto.setUn_plan_product_property1(UnPlanProductProperty1);
dto.setUn_plan_product_property2(UnPlanProductProperty2);
dto.setUn_plan_product_property3(UnPlanProductProperty3);
dto.setDemand_limit(SOTensileStrengthLowerLimit);
dto.setStandard_limit(ETTensileStrengthLowerLimit);
dto.setActual_value(TensileStrength);
log.info("sendSubInfo输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
@@ -1823,18 +1987,78 @@ public class MesToLmsServiceImpl implements MesToLmsService {
public JSONObject getWasteFoilWeight(JSONObject param) {
log.info("getWasteFoilWeight输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
{
log.info("分切子卷获取LMSAGV废箔称重重量的输入参数为{}", param);
JSONObject res = new JSONObject();
JSONObject resData = new JSONObject();
String resourceName = param.getString("ResourceName");
// 获取称的设备号
BstIvtScalebound scaleEquipment = scaleBoundService.getOne(new LambdaQueryWrapper<BstIvtScalebound>()
.eq(BstIvtScalebound::getDevice_code, resourceName));
// 下发给acs称重
JSONObject acsWeighing = new JSONObject();
acsWeighing.put("device_code", scaleEquipment.getScale_code());
acsWeighing.put("type", "1");
acsWeighing.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
JSONObject action = wmsToAcsService.getWeight(acsWeighing);
if (HttpStatus.HTTP_OK == action.getInteger("status")) {
JSONObject data = action.getJSONObject("data");
String currentWeight = data.getString("currentWeight");
String lastWeight = data.getString("lastWeight");
String weightGap = data.getString("weightGap");
String now = DateUtil.now();
// 记录数据库
BstIvtScalehistory history = new BstIvtScalehistory();
history.setHistory_id(IdUtil.getSnowflake(1, 1).nextIdStr());
history.setScale_code(scaleEquipment.getScale_code());
history.setDevice_code(scaleEquipment.getDevice_code());
history.setCurrent_weight(currentWeight);
history.setLast_weight(lastWeight);
history.setWeight_gap(weightGap);
history.setRecord_time(now);
scaleHistoryService.save(history);
log.info("废箔称重记录:{}", history);
res.put("RTOAL", 1);
res.put("RTMSG", "操作成功!");
res.put("RTYPE", "S");
res.put("RTDAT", resData);
resData.put("ResourceName", resourceName);
resData.put("Weight", weightGap);
resData.put("WeighDate", now);
log.info("废箔称重反馈MES, 反馈信息:{}", res);
return res;
}
res.put("RTOAL", 0);
res.put("RTMSG", "称重失败!");
res.put("RTYPE", "F");
log.error("废箔称重反馈MES, 反馈信息:{}", res);
return res;
}
}
@Override
public JSONObject WasteFoilSuccess(JSONObject param) {
log.info("WasteFoilSuccess输入参数为-------------------" + param.toString());
log.info("分切子卷获取LMSAGV废箔称重重量MES提交废箔成功的输入参数为{}", param);
JSONObject res = new JSONObject();
String resourceName = param.getString("ResourceName");
// 获取称的设备号
BstIvtScalebound scaleEquipment = scaleBoundService.getOne(new LambdaQueryWrapper<BstIvtScalebound>()
.eq(BstIvtScalebound::getDevice_code, resourceName));
// 下发给acs称重
JSONObject acsWeighing = new JSONObject();
acsWeighing.put("device_code", scaleEquipment.getScale_code());
acsWeighing.put("type", "2");
acsWeighing.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
JSONObject action = wmsToAcsService.getWeight(acsWeighing);
if (HttpStatus.HTTP_OK == action.getInteger("status")) {
// 记录数据库
res.put("RTOAL", 1);
res.put("RTMSG", "操作成功!");
res.put("RTYPE", "S");
return res;
}
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");

View File

@@ -90,17 +90,17 @@ public class SubpackagerelationDto implements Serializable {
/**
* 单位面积质量
*/
private BigDecimal mass_per_unit_area;
private String mass_per_unit_area;
/**
* 净重
*/
private BigDecimal net_weight;
private String net_weight;
/**
* 长度
*/
private BigDecimal length;
private String length;
/**
* 制造完成日期

View File

@@ -51,6 +51,13 @@ public class AcsTaskDto {
* Agv系统类型
*/
private String agv_system_type;
/**
* agv二次分配类型1、普通任务 2、取货二次分配 3、放货二次分配 4、取放货二次分配
*/
private String agv_action_type;
/**
* 备注
*/

View File

@@ -117,7 +117,9 @@ public class AcsUtil {
throw new BadRequestException("未查询到区域对应的acs地址");
}
String url = acs_url + api;
//String url = acs_url + api;
//String url ="10.1.3.96:8011/"+ api;
String url ="10.21.1.196:8011/"+ api;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(list))

View File

@@ -108,12 +108,13 @@ public abstract class AbstractAcsTask {
*
*/
public JSONObject immediateNotifyAcs(String task_id) {
List<AcsTaskDto> taskList = this.schedule();
if (ObjectUtil.isNotEmpty(taskList)) {
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
return AcsUtil.notifyAcs("api/wms/task", arr);
}
List<AcsTaskDto> taskList = this.schedule();
if (ObjectUtil.isNotEmpty(taskList)) {
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
return AcsUtil.notifyAcs("api/wms/task", arr);
}
return null;
}
/**

View File

@@ -1,6 +1,7 @@
package org.nl.wms.sch.rest;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
@@ -69,6 +70,7 @@ public class TaskController {
@PutMapping("/operation")
@Log("任务操作")
@SaIgnore
public ResponseEntity<Object> update(@RequestBody Map<String, Object> map) {
taskService.operation(map);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);