diff --git a/lms/nladmin-system/doc/wms.xls b/lms/nladmin-system/doc/wms.xls index 160c0df..d3e88f6 100644 Binary files a/lms/nladmin-system/doc/wms.xls and b/lms/nladmin-system/doc/wms.xls differ diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml index e10f83d..b2c1157 100644 --- a/lms/nladmin-system/nlsso-server/pom.xml +++ b/lms/nladmin-system/nlsso-server/pom.xml @@ -451,6 +451,12 @@ lucene-queryparser ${lucene.version} + + + org.redisson + redisson-spring-boot-starter + 3.16.4 + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java index 31e53dc..7d147fa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java @@ -26,9 +26,15 @@ public class MdBaseMaterial implements Serializable { @ApiModelProperty(value = "物料标识") private String material_id; - @ApiModelProperty(value = "物料编码") + @ApiModelProperty(value = "成品物料编码") private String material_code; + @ApiModelProperty(value = "半成品物料编码") + private String half_material_code; + + @ApiModelProperty(value = "原材料物料编码") + private String raw_material_code; + @ApiModelProperty(value = "物料名称 ") private String material_name; @@ -41,6 +47,9 @@ public class MdBaseMaterial implements Serializable { @ApiModelProperty(value = "静置时间(分钟)") private Integer standing_time; + @ApiModelProperty(value = "冷却时间(分钟)") + private Integer cooling_time; + @ApiModelProperty(value = "车间编码") private String workshop_code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java index 9148f27..0b3b05c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java @@ -10,9 +10,9 @@ import lombok.Data; @Data public class SignalData { - private String code; + private String code; // to_command - private String value; + private String value; // 1 } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 19cc3ba..beeb436 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; @@ -47,6 +48,8 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.CommonUtils; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,6 +57,7 @@ import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @Author: lyd @@ -87,6 +91,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private IMdBaseMaterialService materialService; @Autowired private IPdmBdProductionProcessTrackingService processTrackingService; + @Autowired + private RedissonClient redissonClient; @Override public BaseResponse acsApply(JSONObject param) { @@ -116,86 +122,171 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } - /** 任务:申请补满料盅托盘(叫料) */ + /** + * 任务:申请补满料盅托盘(叫料) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyPutFullVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QLTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QLTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请补空料盅托盘(叫空盘) */ + /** + * 任务:申请补空料盅托盘(叫空盘) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyPutEmptyVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请取走空料盅托盘(送空盘) */ + /** + * 任务:申请取走空料盅托盘(送空盘) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyTakeEmptyVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "SKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "SKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请取走满料盅托盘(入库) */ + /** + * 任务:申请取走满料盅托盘(入库) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyTakeFullVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "MLTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "MLTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 申请强制取走满料盅托盘(强制入库) */ + /** + * 任务:申请强制取走满料盅托盘(强制入库) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyForceTakeFullVehicle(JSONObject param) { String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QZRKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QZRKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 申请强制满托入缓存 todo: 暂时 */ + /** + * 任务:申请强制满托入缓存 todo: 暂时 + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ public ApplyTaskResponse applyForceTakeFullVehicleInStorage(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); @@ -290,8 +381,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { case GeneralDefinition.GZY: // 如果是入窑口就是记录数据 return this.recordKilnTime(baseRequest); // 直接返回 default: - return (ApplyTaskResponse) ApplyTaskResponse.responseError(baseRequest.getRequestNo(), - "参数错误"); + return (ApplyTaskResponse) ApplyTaskResponse.responseError(baseRequest.getRequestNo(),"参数错误"); } } @@ -384,6 +474,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * @param param * @return */ + @Deprecated @Transactional(rollbackFor = Exception.class) public BaseResponse pressRequestMaterial(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置) String requestNo = param.getString("requestNo"); @@ -405,7 +496,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 获取原材料物料 PdmBdRequestMaterialRecord requestMaterialRecord = new PdmBdRequestMaterialRecord(); requestMaterialRecord.setRecord_id(IdUtil.getSnowflake(1,1).nextIdStr()); - requestMaterialRecord.setMaterial_id(workOrder.getRaw_material_id()); +// requestMaterialRecord.setMaterial_id(workOrder.getRaw_material_id()); requestMaterialRecord.setWorkorder_id(workOrder.getWorkorder_id()); requestMaterialRecord.setDevice_code(parentPointCode); requestMaterialRecord.setCreate_time(DateUtil.now()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java index c795baa..bfdfc1d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java @@ -2,8 +2,8 @@ package org.nl.wms.ext.record.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.record.service.dao.SysInteractRecord; @@ -46,5 +46,5 @@ public interface ISysInteractRecordService extends IService { /** * 创建记录 */ - void saveRecord(JSONObject param, BaseResponse response, String direction); + void saveRecord(Object request, BaseResponse response, String direction); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index dab2e91..8882582 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java @@ -63,7 +63,7 @@ public class SysInteractRecordServiceImpl extends ServiceImpl workorder_status IN diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java index 81c4634..2439b79 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java @@ -31,6 +31,9 @@ public class SchBaseVehiclematerialgroup implements Serializable { @ApiModelProperty(value = "物料标识") private String material_id; + @ApiModelProperty(value = "冗余-半成品/泥料") + private String redundance_material_code; + @ApiModelProperty(value = "载具类型") private String vehicle_type; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index 11eb7bb..21fa657 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -10,9 +10,9 @@ public class GeneralDefinition { /** 窑自动任务开启 */ public static final String AUTO_KILN_CALL = "auto_kiln_call"; // 是否 - /**是 */ + /**是/正确/可用... */ public static final String YES = "1"; - /** 否 */ + /** 否/错误/不可用... */ public static final String NO = "0"; // 载具类型 /** 料盅 */ @@ -57,4 +57,9 @@ public class GeneralDefinition { public static final String LZKLX = "LZKLX"; /** 干燥窑区域 */ public static final String GZY = "GZY"; + // 特殊: 1-缓存输送线入口,2-缓存输送线出口,3-上输送线,4-下输送线 + /** 上输送线 */ + public static final String UPPER_CONVEYOR_LINE = "3"; + /** 下输送线 */ + public static final String LOWER_CONVEYOR_LINE = "4"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java index c3999e7..fd5c9a6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java @@ -1,13 +1,18 @@ package org.nl.wms.sch.task_manage.task; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.record.service.ISysInteractRecordService; +import org.nl.wms.ext.record.service.impl.SysInteractRecordServiceImpl; import org.nl.wms.sch.task_manage.AcsTaskDto; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.springframework.http.HttpStatus; @@ -19,7 +24,53 @@ import java.util.List; */ @Slf4j public class AcsUtil { - public static JSONObject notifyAcs(String api, List list) { + /** + * 统一多数据入口 + * @param api + * @param list + * @return + * @param + */ + public static JSONObject notifyAcs(String api, List list) { + SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + //判断是否连接ACS系统 + Param isConnectAcs = sysParamService.findByCode("IS_CONNECT_ACS"); + if (ObjectUtil.isEmpty(isConnectAcs)) { + throw new BadRequestException("参数表中:IS_CONNECT_ACS不存在"); + } + String isConnect = isConnectAcs.getValue(); + JSONObject result = new JSONObject(); + if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "未连接ACS!"); + result.put("data", new JSONObject()); + return result; + } + //ACS地址:127.0.0.1:8010 + Param acsUrlObj = sysParamService.findByCode("ACS_URL"); + if (ObjectUtil.isEmpty(acsUrlObj)) { + throw new BadRequestException("参数表中:ACS_URL不存在"); + } + String acsUrl = acsUrlObj.getValue(); + String url = acsUrl + api; + log.info("下发acs任务的参数为:{}", list.toString()); + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(list)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + } catch (Exception e) { + String msg = e.getMessage(); + //ConnectException: Connection refused: connect + //网络不通 + log.error("连接失败:{}", msg); + result.put("status", HttpStatus.BAD_REQUEST); + result.put("message", "网络不通,操作失败!"); + result.put("data", new JSONObject()); + } + return result; + } + public static JSONObject notifyAcs(String api, T object) { //判断是否连接ACS系统 String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); JSONObject result = new JSONObject(); @@ -33,10 +84,10 @@ public class AcsUtil { String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL").getValue(); String url = acsUrl + api; - log.info("下发acs任务的参数为:{}", list.toString()); + log.info("下发acs任务的参数为:{}", object.toString()); try { String resultMsg = HttpRequest.post(url) - .body(String.valueOf(list)) + .body(String.valueOf(object)) .execute().body(); result = JSONObject.parseObject(resultMsg); } catch (Exception e) { @@ -48,6 +99,7 @@ public class AcsUtil { result.put("message", "网络不通,操作失败!"); result.put("data", new JSONObject()); } + // 记录交互表 return result; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java new file mode 100644 index 0000000..827c727 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java @@ -0,0 +1,108 @@ +//package org.nl.wms.sch.task_manage.task.tasks.auto; +// +//import cn.hutool.core.util.ObjectUtil; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import org.nl.common.exception.BadRequestException; +//import org.nl.system.service.param.ISysParamService; +//import org.nl.system.service.param.dao.Param; +//import org.nl.wms.sch.point.service.ISchBasePointService; +//import org.nl.wms.sch.point.service.dao.SchBasePoint; +//import org.nl.wms.sch.task.service.ISchBaseTaskService; +//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +//import org.nl.wms.sch.task.service.dao.SchBaseTask; +//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +//import org.nl.wms.sch.task_manage.AbstractTask; +//import org.nl.wms.sch.task_manage.GeneralDefinition; +//import org.nl.wms.sch.task_manage.task.TaskType; +//import org.nl.wms.sch.task_manage.task.core.TaskStatus; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.stream.Collectors; +// +///** +// * @Author: lyd +// * @Description: 混料压制物料输送任务 +// * @Date: 2023/7/27 +// */ +//@Component +//@TaskType("HLYZTask") +//public class HLYZTask extends AbstractTask { +// private static String TASK_CONFIG_CODE = "HLYZTask"; +// @Autowired +// private ISchBasePointService pointService; +// @Autowired +// private ISchBaseTaskService taskService; +// @Autowired +// private ISchBaseTaskconfigService taskConfigService; +// @Autowired +// private ISysParamService paramService; +// @Override +// protected void create() throws BadRequestException { +// +// } +// +// @Override +// protected void autoCreate() { +// // 自动创建任务 +//// Param autoKilnCall = paramService.findByCode(GeneralDefinition.AUTO_KILN_CALL); +//// if (autoKilnCall.getValue().equals(GeneralDefinition.NO)) { +//// return; +//// } +// // 判断当前点位有没有任务执行 +// List unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(TASK_CONFIG_CODE); +// if (unFinishTasksByTaskConfig.size() > 0) { +// // 有任务在执行就不创建 +// return; +// } +// // 获取任务配置 +// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() +// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); +// // 创建任务 +// SchBaseTask task = new SchBaseTask(); // 任务实体 +// // 2、创建申请任务 +// task.setConfig_code(TASK_CONFIG_CODE); +// task.setCreate_mode(GeneralDefinition.AUTO_CREATION); +// task.setTask_status(TaskStatus.APPLY.getCode()); +// task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 +// // 设置起/终点 +// this.setTaskPoint(taskConfig, task, "***"); +// // 找起点 +// List nextRegionStr = Arrays +// .stream(taskConfig.getNext_region_str().split(",")) +// .collect(Collectors.toList()); +// SchBasePoint point = findNextPoint(nextRegionStr); +// if (ObjectUtil.isEmpty(point)) { +// task.setRemark("未找到所需点位!"); +// taskService.create(task); +// // 消息通知 +// return; +// } +// // 设置终点并修改创建成功状态 +// task.setPoint_code2(point.getPoint_code()); +// task.setRemark(""); +// task.setTask_status(TaskStatus.CREATED.getCode()); +// taskService.create(task); +// point.setIng_task_code(task.getTask_code()); +// pointService.update(point); +// //下发 +//// this.renotifyAcs(task); +// } +// +// @Override +// protected void updateStatus(String task_code, TaskStatus status) { +// +// } +// +// @Override +// public void forceFinish(String task_code) { +// +// } +// +// @Override +// public void cancel(String task_code) { +// +// } +//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java index d929a0c..458834e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -12,11 +13,14 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -40,6 +44,8 @@ public class CTQKTask extends AbstractTask { @Autowired private ISchBaseTaskconfigService taskConfigService; @Autowired + private ISysNoticeService noticeService; + @Autowired private DTKMapper dtkMapper; @Override protected void create() throws BadRequestException { @@ -49,15 +55,15 @@ public class CTQKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); // 修改修改者 List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); // 找起点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); SchBasePoint point = findStartPoint(startRegionStr); if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); + task.setRemark("暂无托盘!"); + taskService.updateById(task); // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); continue; } // 设置终点并修改创建成功状态 @@ -65,13 +71,15 @@ public class CTQKTask extends AbstractTask { task.setRemark(""); task.setVehicle_qty(point.getVehicle_qty()); task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.update(task); + taskService.updateById(task); point.setIng_task_code(task.getTask_code()); pointService.update(point); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } @@ -81,6 +89,7 @@ public class CTQKTask extends AbstractTask { * @return */ private SchBasePoint findStartPoint(List startRegionStr) { + // 钢托盘缓存区域的空盘是1 状态不同 List points = dtkMapper.findPointForCTQK(startRegionStr); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } @@ -95,48 +104,78 @@ public class CTQKTask extends AbstractTask { if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); + // 根据传来的类型去对任务进行操作 if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - endPointObj.setVehicle_type("2"); - endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); - endPointObj.setUpdate_time(DateUtil.now()); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } - taskService.update(taskObj); } @Override public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); } @Override public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + // 起点清空 + if (ObjectUtil.isNotEmpty(startPointObj)) { + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + PointUtils.clearPoint(startPointObj); + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setVehicle_type("2"); + endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); + endPointObj.setUpdate_time(DateUtil.now()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("任务取消"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java index 2272bc8..bc28dfa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java @@ -46,7 +46,7 @@ public class DTSKTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private DTKMapper dtkMapper; - + @Override protected void create() throws BadRequestException { @@ -81,7 +81,7 @@ public class DTSKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml index 81e7c40..1b2f9fb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml @@ -25,7 +25,10 @@ + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java index d6341ce..bc8b1ec 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java @@ -51,7 +51,7 @@ public class CYZCTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; - + @Autowired private ISysNoticeService noticeService; @Autowired @@ -94,7 +94,7 @@ public class CYZCTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java index 118cdfd..23957df 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java @@ -44,7 +44,7 @@ public class GZYQLTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; - + @Autowired private ISysNoticeService noticeService; @Override @@ -82,7 +82,7 @@ public class GZYQLTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java index 9691a82..d85a7d7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java @@ -47,7 +47,7 @@ public class YZQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; - + @Override @Transactional(rollbackFor = Exception.class) protected void create() { @@ -83,7 +83,7 @@ public class YZQKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java index 6e096d6..a789a25 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java @@ -40,7 +40,6 @@ import java.util.stream.Collectors; @TaskType("LZKLXSKTask") public class YZSKTask extends AbstractTask { private static String TASK_CONFIG_CODE = "LZKLXSKTask"; - @Autowired private ISchBasePointService pointService; @Autowired @@ -49,7 +48,7 @@ public class YZSKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; - + @Override @Transactional(rollbackFor = Exception.class) @@ -89,7 +88,7 @@ public class YZSKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java index 61b587e..b310d5e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java @@ -5,9 +5,9 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; -import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; @@ -60,7 +60,7 @@ public class YZSLTask extends AbstractTask { private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired private YZMapper yzMapper; - + @Autowired private ISysNoticeService noticeService; @Autowired @@ -104,7 +104,7 @@ public class YZSLTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } @@ -143,10 +143,23 @@ public class YZSLTask extends AbstractTask { regionCode = nextRegionStr.get(0); } } - // todo: 双层缓存货架的一上一下的区分 - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", GeneralDefinition.ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; + // 双层缓存货架的一上一下的区分 + // 计算缓存上和缓存下的空位数量决定是使用desc还是asc + int countUp = yzMapper.countConveyorLine(nextRegionStr.get(0), GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + int countLower = yzMapper.countConveyorLine(nextRegionStr.get(0), GeneralDefinition.LOWER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBasePoint::getRegion_code, regionCode) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) // 对接位 + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderBy(true, countUp > countLower, SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; } @Override @@ -189,6 +202,10 @@ public class YZSLTask extends AbstractTask { vehicleType = GeneralDefinition.STEEL_TRAY; } String deviceCode = param.getString("device_code"); + String isFull = param.getString("is_full"); + if (isFull == null) { + isFull = GeneralDefinition.YES; + } // 砖块数量 Integer qty = param.getInteger("qty"); SchBasePoint basePoint = pointService.getById(deviceCode); @@ -230,6 +247,7 @@ public class YZSLTask extends AbstractTask { groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.WAIT_BIND.getValue()); // 待绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); + groupEntity.setIs_full(isFull.equals(GeneralDefinition.YES) ? true : false); vehiclematerialgroupService.save(groupEntity); // 将所有当前位置的砖块设置组盘标识 baseBrickInfoService.setGroupByCurrentAllBrick(deviceCode, groupEntity.getGroup_id()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java index bceaf90..34110ba 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java @@ -12,5 +12,14 @@ import java.util.List; */ public interface YZMapper { List findPointForYZQL(List regionCode, String materialId); + @Deprecated List findPointForYZSL(JSONObject param); + + /** + * 统计输送线数量 + * @param regionCode + * @param pointType + * @return + */ + int countConveyorLine(String regionCode, String pointType, String pointStatus); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml index ad0f369..864c64f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml @@ -31,4 +31,14 @@ AND p.is_used = TRUE AND ( t.task_code IS NULL OR t.task_code = '') + diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 5027348..b233cd0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -58,6 +58,17 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 + # 登录相关配置 login: diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml index f0fc978..5c671f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml @@ -57,8 +57,16 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} - #连接超时时间 - timeout: 5000 + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 # 登录相关配置 login: # 登录缓存 diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index db627cc..9419bb2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999 nlAdmin + value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %cyan(%msg%n)"/> diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java index 105fec7..b33c106 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java @@ -1,10 +1,15 @@ package org.nl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; import org.nl.config.MapOf; import org.nl.system.service.user.ISysUserService; +import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -21,6 +26,8 @@ public class ApplicationTest { @Autowired private ISysUserService userService; @Autowired + private ISchBasePointService pointService; + @Autowired private YZMapper yzMapper; @Test void contextLoads() { @@ -28,8 +35,32 @@ public class ApplicationTest { } @Test void yzMapperTest() { - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", "HCSSX", "pointType", "1"))); - System.out.println(pointForYZSL); +// List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( +// MapOf.of("regionCode", "HCSSX", "pointType", "1"))); + int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + System.out.println(countUp); + } + @Test + void yzMapper2Test() { +// String apply = "ORDER BY point_code"; + int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + int countLower = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.LOWER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); +// if (countUp < countLower) { +// apply = "ORDER BY point_code DESC"; +// } + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBasePoint::getRegion_code, "HCSSX") + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) // 对接位 + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderBy(true, countUp > countLower, SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + System.out.println(schBasePoints.get(0)); } } diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue index 0f93777..687bfec 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -73,10 +73,13 @@ + + + @@ -121,10 +124,13 @@ import pagination from '@crud/Pagination' const defaultForm = { material_id: null, material_code: null, + half_material_code: null, + raw_material_code: null, material_name: null, material_spec: null, class_id: null, standing_time: null, + cooling_time: null, workshop_code: null, remark: null, is_used: true, diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index 02b4ae0..f282fc2 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -108,8 +108,8 @@ style="width: 240px;" /> - - + + @@ -361,8 +361,7 @@ const defaultForm = { plan_qty: null, real_qty: null, material_id: null, - raw_material_id: null, - raw_material_name: null, + half_material_code: null, raw_material_code: null, vehicle_type: null, planproducestart_date: null, @@ -484,6 +483,8 @@ export default { this.form.material_id = row.material_id this.form.material_spec = row.material_spec this.form.material_code = row.material_code + this.form.half_material_code = row.half_material_code + this.form.raw_material_code = row.raw_material_code } else { this.form.raw_material_name = row.material_name this.form.raw_material_id = row.material_id diff --git a/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue b/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue index 09e0ab2..0723229 100644 --- a/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue +++ b/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue @@ -55,6 +55,8 @@ + +