add: 添加日志索引,sorting交互优化

This commit is contained in:
yanps
2024-09-20 08:39:15 +08:00
parent d9b995ad94
commit f911e55447
34 changed files with 610 additions and 166 deletions

View File

@@ -40,6 +40,7 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
@Override
public Page<Param> queryPage(Map whereJson, PageQuery page) {
QueryWrapper<Param> queryWrapper = new QueryWrapper<>();
page.setPage(page.getPage() + 1);
queryWrapper.orderBy(true, true, "create_time");
Page<Param> paramPage = paramMapper.selectPage(page.build(), queryWrapper);
return paramPage;

View File

@@ -515,6 +515,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
schBaseVehiclematerialgroup.setCreate_name("Connector");
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
taskService.update(Wrappers.lambdaUpdate(SchBaseTask.class).eq(SchBaseTask::getTask_code, schBaseTask.getTask_code())
.set(SchBaseTask::getJob_name, connectorDto.getJobname()));

View File

@@ -59,6 +59,7 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map.put("message", "请求参数为空!");
objects.add(map);
log.info("connector下发agv任务请求参数为空:{}!", jsonArray);
return map;
}
try {
@@ -74,6 +75,8 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
map1.put("message", StrUtil.isEmpty(task_code) ? "任务号不能为空!"
: StrUtil.isEmpty(start_device_code) ? "起点参数不能为空!" : StrUtil.isEmpty(vehicle_code) ? "载具号不能为空!" : "未知");
objects.add(map1);
log.info(StrUtil.isEmpty(task_code) ? "任务号不能为空!"
: StrUtil.isEmpty(start_device_code) ? "起点参数不能为空!" : StrUtil.isEmpty(vehicle_code) ? "载具号不能为空!" : "未知");
continue;
}
SchBasePoint schBasePoint = schBasePointService.selectByPointCode(start_device_code);
@@ -82,12 +85,14 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
map1.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map1.put("message", start_device_code + "点位设备不存在!");
objects.add(map1);
log.info(start_device_code + "点位设备不存在!");
continue;
} else if (schBasePoint.getIs_lock()) {
map1.put("task_code", task_code);
map1.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map1.put("message", start_device_code + "该设备正在执行任务!");
objects.add(map1);
log.info(start_device_code + "该设备正在执行任务!");
continue;
}
//TODO:固定的载具类型,根据载具类型来决定终点
@@ -121,6 +126,7 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map.put("message", e.getMessage());
objects.add(map);
log.info("connector下发agv任务异常:{}", e.getMessage());
return map;
}
return map;
@@ -132,10 +138,11 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
Assert.noNullElements(jsonArray, "请求参数为空!");
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(jsonArray, ConnectorDto.class);
for (ConnectorDto connectorDto : connectorDtos) {
if(StrUtil.isEmpty(connectorDto.getID())) throw new BadRequestException("物料id为null!");
if (StrUtil.isEmpty(connectorDto.getID())) throw new BadRequestException("物料id为null!");
SchBaseVehiclematerialgroup one = iSchBaseVehiclematerialgroupService.getOne(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getGroup_id, connectorDto.getID()));
if (ObjectUtil.isNotNull(one)) {
log.info("id:" + connectorDto.getID() + "," + "该物料信息已存在!");
throw new BadRequestException("id:" + connectorDto.getID() + "," + "该物料信息已存在!");
}
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
@@ -147,6 +154,7 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
schBaseVehiclematerialgroup.setCreate_name("Connector");
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
}
return null;

View File

@@ -49,7 +49,7 @@ public class WmsToConnectorServiceImpl implements WmsToConnectorService {
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
Param isInvokeConnector = sysParamService.findByCode(GeneralDefinition.IS_INVOKE_CONNECTOR);
if (ObjectUtil.isNotEmpty(isInvokeConnector) && GeneralDefinition.YES.equals(isInvokeConnector.getValue())) {
String api = "/iot/agvarrive";
String api = "/iot/order_report";
JSONObject jsonObject = ConnectorUtil.notifyConnector3(api, json);
return jsonObject;
} else if (ObjectUtil.isNotEmpty(isInvokeConnector) && GeneralDefinition.NO.equals(isInvokeConnector.getValue())) {

View File

@@ -14,6 +14,7 @@ import org.nl.common.enums.VehicleTypeEnum;
import org.nl.common.enums.region.RegionEnum;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.RedisUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
@@ -255,6 +256,9 @@ public class HandheldServiceImpl implements HandheldService {
private void goShelves(SchBasePoint schBasePoint, JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
Assert.noNullElements(param.getJSONArray("material"), "参数不能为空!");
JSONArray materials = param.getJSONArray("material");
if (materials.size() < 1) {
throw new BadRequestException("物料下料数量不能为空!");
}
JSONObject jo = new JSONObject();
if (StrUtil.isBlank(region_code)) {
JSONObject json = new JSONObject();
@@ -328,6 +332,7 @@ public class HandheldServiceImpl implements HandheldService {
schBaseVehiclematerialgroup.setMaterial_code(jsonObject.getString("material_code"));
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getString("order_code"));
schBaseVehiclematerialgroup.setDue_date(jsonObject.getString("due_date"));
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? jsonObject.getString("region_code") : finalRegion_code);
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});
@@ -344,6 +349,10 @@ public class HandheldServiceImpl implements HandheldService {
*/
private void goWxOrNx(JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
JSONObject jo = new JSONObject();
JSONArray materials = param.getJSONArray("material");
if (materials.size() < 1) {
throw new BadRequestException("物料下料数量不能为空!");
}
jo.put("device_code", device_code);
jo.put("config_code", "ProcessingSMTTask");
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
@@ -357,6 +366,30 @@ public class HandheldServiceImpl implements HandheldService {
.set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue())
.set(SchBasePoint::getIs_lock, true)
.set(SchBasePoint::getVehicle_code, null));
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code));
materials.stream().forEach(material -> {
String replace = StrUtil.replace(StrUtil.toString(material), "=", ":");
replace = replace.replaceAll("material_code:,", "");
// 使用 Hutool 的 JSONUtil 解析 JSON 字符串
cn.hutool.json.JSONObject jsonObject1 = JSONUtil.parseObj(replace);
// 判断 material_code 是否为空
if (replace.contains("OR")) {
Object materialCode = jsonObject1.get("order_code");
jsonObject1.put("order_code", materialCode.toString());
replace = jsonObject1.toString();
}
JSONObject jsonObject = JSONObject.parseObject(replace);
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
schBaseVehiclematerialgroup.setVehicle_code(vehicle_code);
schBaseVehiclematerialgroup.setMaterial_qty(jsonObject.getInteger("material_qty"));
schBaseVehiclematerialgroup.setMaterial_code(jsonObject.getString("material_code"));
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getString("order_code"));
schBaseVehiclematerialgroup.setDue_date(jsonObject.getString("due_date"));
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
schBaseVehiclematerialgroup.setRegion_code(region_code);
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});
}
@@ -566,18 +599,19 @@ public class HandheldServiceImpl implements HandheldService {
@Override
public void updateRoute(JSONObject json) {
Assert.noNullElements(new String[]{json.getString("type"), json.getString("status")}, "参数不能为空!");
switch (json.getString("type")) {
case "1":
JSONObject jsonObject = new JSONObject();
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
Param isConnectConnector = sysParamService.findByCode(GeneralDefinition.ADD_ROUTE_DOOR_1);
jsonObject.put("pointCode", isConnectConnector.getValue());
jsonObject.put("status", json.getString("status"));
wmsToAcsService.notifyAcs1(jsonObject);
break;
default:
break;
JSONObject jsonObject = new JSONObject();
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
Param isConnectConnector = sysParamService.findByCode("add_route_door_" + json.getString("type"));
jsonObject.put("pointCode", isConnectConnector.getValue());
jsonObject.put("status", json.getString("status"));
wmsToAcsService.notifyAcs1(jsonObject);
Param isConnectConnector1 = sysParamService.findByCode(GeneralDefinition.ADD_ROUTE_DOOR);
if ("1".equals(json.getString("status"))) {
isConnectConnector1.setValue(json.getString("type"));
} else {
isConnectConnector1.setValue("0");
}
sysParamService.update(isConnectConnector1);
}

View File

@@ -1,6 +1,7 @@
package org.nl.wms.ext.sorting.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -31,6 +32,7 @@ import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSMTTask;
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSNTTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
@@ -75,9 +77,11 @@ public class SortingServiceImpl implements SortingService {
JSONArray jsonArray = JSONUtil.parseArray(jsonObject.get("pallet_detail"));
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(pointCode);
if (ObjectUtil.isEmpty(schBasePoint)) {
log.info("点位编码不存在:{}", pointCode);
return MapOf.of("status", 400, "msg", "点位编码不存在!");
}
if (schBasePoint.getIs_lock()) {
log.info("该点位已创建任务:{}", pointCode);
return MapOf.of("status", 400, "msg", "该点位已创建任务!");
}
JSONObject taskParam = new JSONObject(MapOf.of("task_code", task_code, "job_name", jobname, "device_code", pointCode, "requestNo"
@@ -85,10 +89,6 @@ public class SortingServiceImpl implements SortingService {
AbstractTask connectorTask = taskFactory.getTask("CNTTask");
if ("0".equals(vehicle_type)) {
// TODO:呼叫空托
iSchBasePointService.update(new UpdateWrapper<SchBasePoint>()
.set("is_lock", true)
.set("remark", task_code)
.eq("point_code", pointCode));
if (SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)) {
taskParam.put("vehicle_type", "G01");
taskParam.put("config_code", "SortingCNTTask");
@@ -96,6 +96,7 @@ public class SortingServiceImpl implements SortingService {
//TODO:叫料
} else if (SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)) {
if (StrUtil.isEmpty(vehicle_code)) {
log.info("载具号未传递");
return MapOf.of("status", 400, "msg", "载具号未传递!");
}
taskParam.put("config_code", "SortingCMTTask");
@@ -103,6 +104,7 @@ public class SortingServiceImpl implements SortingService {
//TODO:将空托盘放到线边库
} else if (SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)) {
if (StrUtil.isEmpty(vehicle_code)) {
log.info("载具号未传递");
return MapOf.of("status", 400, "msg", "载具号未传递!");
}
taskParam.put("config_code", "SortingSNTTask");
@@ -110,8 +112,13 @@ public class SortingServiceImpl implements SortingService {
//TODO:将满料放到线边库
} else if (SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)) {
if (StrUtil.isEmpty(vehicle_code)) {
log.info("载具号未传递");
return MapOf.of("status", 400, "msg", "载具号未传递!");
}
if (CollUtil.isEmpty(jsonArray) || jsonArray.size() < 1) {
log.info("物料信息为空!");
return MapOf.of("status", 400, "msg", "物料信息为空!");
}
taskParam.put("config_code", "SortingSMTTask");
connectorTask.apply(taskParam);
}
@@ -130,8 +137,13 @@ public class SortingServiceImpl implements SortingService {
//TODO:将两个笼框放到线边库
} else if (SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)) {
if (StrUtil.isEmpty(jsonObject.getString("vehicle_code2"))) {
log.info("第二个笼框载具号未传递");
return MapOf.of("status", 400, "msg", "第二个笼框载具号未传递!");
}
if (CollUtil.isEmpty(jsonArray) || jsonArray.size() < 1) {
log.info("物料信息为空!");
return MapOf.of("status", 400, "msg", "物料信息为空!");
}
taskParam.put("config_code", "SortingSMTTask");
taskParam.put("task_seq", "1");
taskParam.put("vehicle_code", jsonObject.getString("vehicle_code2"));
@@ -145,14 +157,20 @@ public class SortingServiceImpl implements SortingService {
connectorTask.apply(taskParam);
}
}
iSchBasePointService.update(new UpdateWrapper<SchBasePoint>()
.set("is_lock", true)
.set("remark", task_code)
.eq("point_code", pointCode));
return MapOf.of("status", 200, "msg", "sucess");
} catch (Exception ex) {
log.info("sorting下发任务失败:{}", ex.getMessage());
return MapOf.of("status", 200, "msg", "操作失败", "errMsg", ex.getMessage());
}
}
@Override
public List<ConnectorDto> getStructList(String jobName) {
log.info("sorting查询组盘请求参数数据:{}", jobName);
List<SchBaseVehiclematerialgroup> list = iSchBaseVehiclematerialgroupService.list(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getJob_name, jobName));
List<ConnectorDto> connectors = new ArrayList<>();
@@ -163,7 +181,7 @@ public class SortingServiceImpl implements SortingService {
connectorDto.setNextOperation(StrUtil.isNotEmpty(connectorDto.getNextOperation()) ? connectorDto.getNextOperation() : DateUtil.now());
connectors.add(connectorDto);
}
// List<PointMaterialInfo> structList = iSchBasePointService.getStructList(RegionEnum.ZDFJ.getRegion_code(), "1");
log.info("sorting查询组盘响应参数:{}", JSONObject.toJSONString(connectors));
return connectors;
}
}

View File

@@ -88,6 +88,7 @@ public class SchBaseVehiclematerialgroup implements Serializable {
@ApiModelProperty(value = "是否已加工")
private Boolean has_work;
@ApiModelProperty(value = "交期时间")
private String due_date;

View File

@@ -15,5 +15,5 @@ public class SchBaseVehiclematerialgroupQuery implements Serializable {
private String vehicle_code;
private String workshop_code;
private String region_code;
private String group_bind_material_status;
private String job_name;
}

View File

@@ -62,7 +62,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
IPage<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroupIPage = vehiclematerialgroupMapper.selectPage(pages, Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(StrUtil.isNotBlank(whereJson.getVehicle_code()), SchBaseVehiclematerialgroup::getVehicle_code, whereJson.getVehicle_code())
.eq(StrUtil.isNotBlank(whereJson.getWorkshop_code()), SchBaseVehiclematerialgroup::getWorkshop_code, whereJson.getWorkshop_code())
.eq(StrUtil.isNotBlank(whereJson.getGroup_bind_material_status()), SchBaseVehiclematerialgroup::getGroup_bind_material_status, whereJson.getGroup_bind_material_status())
.eq(StrUtil.isNotBlank(whereJson.getJob_name()), SchBaseVehiclematerialgroup::getJob_name, whereJson.getJob_name())
.eq(StrUtil.isNotBlank(whereJson.getRegion_code()), SchBaseVehiclematerialgroup::getRegion_code, whereJson.getRegion_code()));
schBaseVehiclematerialgroupIPage.getRecords().forEach(item -> {
if (StrUtil.isNotBlank(item.getMaterial_id())) {
@@ -87,12 +87,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
if (StringUtils.isNotBlank(entity.getPoint_code())) {
entity.setRegion_code(pointService.getById(entity.getPoint_code()).getRegion_code());
}
entity.setGroup_id(StrUtil.isNotEmpty(entity.getGroup_id()) ? entity.getGroup_id() : IdUtil.getSnowflake(1, 1).nextIdStr());
entity.setCreate_id(currentUserId);
entity.setCreate_name(nickName);
entity.setCreate_name(StrUtil.isNotEmpty(entity.getCreate_name()) ? entity.getCreate_name() : nickName);
entity.setCreate_time(now);
entity.setUpdate_id(currentUserId);
entity.setUpdate_name(nickName);

View File

@@ -96,11 +96,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
.eq(ObjectUtil.isNotEmpty(point_type), SchBasePoint::getPoint_type, point_type)
.eq(ObjectUtil.isNotEmpty(point_status), SchBasePoint::getPoint_status, point_status)
.eq(ObjectUtil.isNotEmpty(is_used), SchBasePoint::getIs_used, is_used)
.and(!lock_type, slam -> slam.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.and(lock_type, slam -> slam.isNotNull(SchBasePoint::getIng_task_code)
.ne(SchBasePoint::getIng_task_code, ""))
.eq(ObjectUtil.isNotEmpty(lock_type), SchBasePoint::getIs_lock, lock_type)
.orderByAsc(SchBasePoint::getRegion_code)
.orderByAsc(SchBasePoint::getPoint_type)
.orderByAsc(SchBasePoint::getPoint_code)
@@ -175,18 +171,17 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
// 获取region_name
SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code());
entity.setRegion_name(baseRegion.getRegion_name());
// if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
// String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
// entity.setCan_vehicle_type(can_vehicle_type);
// }
String pointStatus = entity.getPoint_status();
String vehicle_code = entity.getVehicle_code();
// 根据点位状态来判断更新内容
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
entity.setVehicle_type("");
entity.setVehicle_code("");
entity.setVehicle_qty(0);
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(GoodsEnum.OUT_OF_STOCK.getValue())) {
vehicle_code = null;
} else if (ObjectUtil.isNotEmpty(pointStatus) && (pointStatus.equals(GoodsEnum.EMPTY_PALLETS.getValue()) || pointStatus.equals(GoodsEnum.IN_STOCK.getValue()))) {
if(StrUtil.isEmpty(entity.getVehicle_code())) throw new BadRequestException("载具编码不能为空");
}
pointMapper.updateById(entity);
pointMapper.update(entity,Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, entity.getPoint_code())
.set(SchBasePoint::getVehicle_code, vehicle_code));
}
@Override

View File

@@ -62,7 +62,7 @@ public class GeneralDefinition {
/**
* 外协区到冲床一自动门
*/
public static final String ADD_ROUTE_DOOR_1 = "add_route_door_1";
public static final String ADD_ROUTE_DOOR = "add_route_door";
/**
* 是否调用connector小插件
*/

View File

@@ -26,6 +26,7 @@ import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@@ -55,12 +56,12 @@ public class CNTTask extends AbstractTask {
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
// 配置信息
// 定义按数字后缀排序的比较器
/*Comparator<SchBaseTask> numericSuffixComparator = (s1, s2) -> {
Comparator<SchBaseTask> numericSuffixComparator = (s1, s2) -> {
Integer suffix1 = getNumericSuffix(s1.getPoint_code1());
Integer suffix2 = getNumericSuffix(s2.getPoint_code1());
return suffix1.compareTo(suffix2);
};
List<SchBaseTask> collect = tasks.stream().sorted(numericSuffixComparator).collect(Collectors.toList());*/
tasks = tasks.stream().sorted(numericSuffixComparator).collect(Collectors.toList());
for (SchBaseTask task : tasks) {
TaskUtils.setUpdateByAcs(task);
// 找起点

View File

@@ -110,6 +110,7 @@ public class PcOperationSMTTask extends AbstractTask {
schBaseVehiclematerialgroup.setOrder_code(smv.getOrder_code());
schBaseVehiclematerialgroup.setDue_date(smv.getDue_date());
schBaseVehiclematerialgroup.setHas_work(sendMaterVo.getHas_work());
schBaseVehiclematerialgroup.setCreate_name("Sorting");
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});
}

View File

@@ -34,6 +34,12 @@ import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;
/**
@@ -45,6 +51,7 @@ public class SortingSMTTask extends AbstractTask {
private static final String TASK_CONFIG_CODE = "SortingSMTTask";
private static final DateTimeFormatter ISO_8601_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -108,7 +115,11 @@ public class SortingSMTTask extends AbstractTask {
schBaseVehiclematerialgroup.setRegion_code(region_code);
schBaseVehiclematerialgroup.setOrder_code(workorder);
schBaseVehiclematerialgroup.setJob_name(Jobname);
if (StrUtil.isNotEmpty(dueDate) && isValidISO8601(dueDate)) {
dueDate = parseDate(dueDate);
}
schBaseVehiclematerialgroup.setDue_date(dueDate);
schBaseVehiclematerialgroup.setCreate_name("Sorting");
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(jO));
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
}
@@ -128,6 +139,22 @@ public class SortingSMTTask extends AbstractTask {
}
}
public static boolean isValidISO8601(String dateString) {
try {
ZonedDateTime.parse(dateString, ISO_8601_FORMATTER);
return true;
} catch (DateTimeParseException e) {
return false;
}
}
public static String parseDate(String isoString) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(isoString);
return formatter.format(zonedDateTime);
}
private Long getTime(String dateString) {
String pattern = "yyyy-MM-dd HH:mm:ss";
java.util.Date date = DateUtil.parse(dateString, pattern);

View File

@@ -4,10 +4,10 @@
<property name="LOG_HOME" value="${logPath}"/>
<!--<define name="DEVICECODE" class="org.nl.common.logging.DeviceCodeDir"/>-->
<!-- 按照每天生成日志文件 -->
<appender name="FILE_XGAGV" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="FILE_12" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/XgAgvDeviceDriver/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<FileNamePattern>${LOG_HOME}/ConnectorToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
@@ -28,7 +28,7 @@
</logger>-->
<!-- 打印sql -->
<logger name="org.nl.system.service.lucene.impl.LuceneExecuteLogServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE_XGAGV"/>
<logger name="org.nl.wms.ext.connector.service.impl.ConnectorToWmsServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE_12"/>
</logger>
</included>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!--<define name="DEVICECODE" class="org.nl.common.logging.DeviceCodeDir"/>-->
<!-- 按照每天生成日志文件 -->
<appender name="FILE_13" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/SortingToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- <logger name="org.nl.start.Init" level="info" additivity="false">
<appender-ref ref="FILE3"/>
</logger>-->
<!-- 打印sql -->
<logger name="org.nl.wms.ext.sorting.service.impl.SortingServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE_13"/>
</logger>
</included>

View File

@@ -19,6 +19,8 @@
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>
<include resource="log/ConnectorAndSorting.xml"/>
<include resource="log/ConnectorToWmsServiceImpl.xml"/>
<include resource="log/SortingToWms.xml"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">