diff --git a/acs/hd/nladmin-system/src/main/resources/logback-spring.xml b/acs/hd/nladmin-system/src/main/resources/logback-spring.xml index a61e494..f811dcc 100644 --- a/acs/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/acs/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999 <contextName>nlAdmin</contextName> <property name="log.charset" value="utf-8"/> <property name="log.pattern" - value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/> + value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %cyan(%msg%n)"/> <springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> <springProperty scope="context" name="lokiUrl" source="loki.url"/> <springProperty scope="context" name="systemName" source="loki.systemName"/> @@ -86,7 +86,7 @@ https://juejin.cn/post/6844903775631572999 <springProfile name="dev"> <root level="info"> <appender-ref ref="CONSOLE"/> - <appender-ref ref="lokiAppender" /> + <appender-ref ref="lokiAppender"/> </root> <!--logmanage --> <logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false"> diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/rest/PadController.java b/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/rest/PadController.java index c56db9d..46fdb4e 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/rest/PadController.java +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/rest/PadController.java @@ -90,7 +90,7 @@ public class PadController { public ResponseEntity<JSONObject> point(@RequestBody JSONObject param) { // 参数校验 String regionId = param.getString("region"); - if (StrUtil.isEmpty(regionId)) { + if (StrUtil.isBlank(regionId)) { JSONObject resultJSON = new JSONObject(); resultJSON.put("code", "0"); resultJSON.put("desc", "区域不能为空"); @@ -111,15 +111,15 @@ public class PadController { @ApiOperation("查询物料") public ResponseEntity<JSONObject> material(@RequestBody JSONObject param) { // 参数校验 - String point_id = param.getString("device_id"); - if (StrUtil.isEmpty(point_id)) { + String pointId = param.getString("device_id"); + if (StrUtil.isBlank(pointId)) { JSONObject resultJSON = new JSONObject(); resultJSON.put("code", "0"); resultJSON.put("desc", "点位不能为空"); return new ResponseEntity<>(resultJSON, HttpStatus.OK); } - return new ResponseEntity<>(padService.material(point_id), HttpStatus.OK); + return new ResponseEntity<>(padService.material(pointId), HttpStatus.OK); } /** @@ -136,7 +136,7 @@ public class PadController { public ResponseEntity<JSONObject> bindPoint(@RequestBody JSONObject param) { // 参数校验 String type = param.getString("type"); - if (StrUtil.isEmpty(type)) { + if (StrUtil.isBlank(type)) { JSONObject resultJSON = new JSONObject(); resultJSON.put("code", "0"); resultJSON.put("desc", "操作类型不能为空"); @@ -144,14 +144,14 @@ public class PadController { } String pointCode = param.getString("device_code"); String materialType = param.getString("material_type"); - if (StrUtil.equals(type, "1")) { - if (StrUtil.isEmpty(pointCode)) { + if ("1".equals(type)) { + if (StrUtil.isBlank(pointCode)) { JSONObject resultJSON = new JSONObject(); resultJSON.put("code", "0"); resultJSON.put("desc", "设备不能为空"); return new ResponseEntity<>(resultJSON, HttpStatus.OK); } - if (StrUtil.isEmpty(materialType)) { + if (StrUtil.isBlank(materialType)) { JSONObject resultJSON = new JSONObject(); resultJSON.put("code", "0"); resultJSON.put("desc", "物料不能为空"); diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/service/impl/PadServiceImpl.java b/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/service/impl/PadServiceImpl.java index ddb53f1..ef0c43c 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/service/impl/PadServiceImpl.java +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/pad/service/impl/PadServiceImpl.java @@ -32,6 +32,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.stream.Collectors; /** * 徐工手持服务实现 @@ -238,11 +240,14 @@ public class PadServiceImpl implements PadService { switch (type) { case "1": // 判断是否是限定物料 - String pointMaterialType = point.getString("material_type"); - boolean isEmptyMaterial = StrUtil.equals(materialType, "14"); - if (!isEmptyMaterial - && !StrUtil.equals(pointMaterialType, "14") - && !StrUtil.equals(pointMaterialType, materialType)) { + List<String> materialTypes = WQLObject + .getWQLObject("sch_base_point_material") + .query("point_id = " + point.getLong("point_id")) + .getResultJSONArray(0) + .stream() + .map(o -> ((JSONObject) o).getString("material")) + .collect(Collectors.toList()); + if (!materialTypes.contains(materialType)) { resultJSON.put("code", "0"); resultJSON.put("desc", "该点位不能存放这种物料"); return resultJSON; @@ -250,7 +255,7 @@ public class PadServiceImpl implements PadService { // 修改点位 point.put("current_material_type", materialType); - point.put("point_status", isEmptyMaterial ? "00" : "01"); + point.put("point_status", "01"); point.put("update_optid", SecurityUtils.getCurrentUserId()); point.put("update_optname", SecurityUtils.getCurrentUsername()); point.put("update_time", DateUtil.now()); @@ -258,7 +263,7 @@ public class PadServiceImpl implements PadService { break; case "2": // 清空点位 - point.put("current_material_type", "14"); + point.put("current_material_type", null); point.put("point_status", "00"); point.put("update_optid", SecurityUtils.getCurrentUserId()); point.put("update_optname", SecurityUtils.getCurrentUsername()); diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql index 5e5c9a0..8aafbce 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql @@ -94,7 +94,7 @@ LEFT JOIN sys_dict_detail d4 ON point.point_status = d4.value and d4.name='sch_point_status' LEFT JOIN SCH_BASE_Region prev_region ON point.prev_region_id = prev_region.region_id LEFT JOIN SCH_BASE_Region next_region ON point.next_region_id = next_region.region_id - LEFT JOIN sys_dict_detail d6 ON point.current_material_type = d6.`value` AND d6.`name` = 'current_material_type' + LEFT JOIN sys_dict_detail d6 ON point.current_material_type = d6.`value` AND d6.`name` = 'material_type' WHERE point.is_delete = '0' OPTION 输入.region_id <> "" diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index f2678ce..12f5d73 100644 Binary files a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls and b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls differ diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallTask.java b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallTask.java index 630590b..9a86434 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallTask.java +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallTask.java @@ -62,7 +62,7 @@ public class CallTask extends AbstractAcsTask { @Override public String createTask(JSONObject param) { String nextPointCode = param.getString("next_point_code"); - String materialType = param.getString("call_material_type"); + String materialType = param.getString("material_type"); // 判断点位是否存在 JSONObject nextPoint = WQLObject @@ -73,6 +73,16 @@ public class CallTask extends AbstractAcsTask { throw new BadRequestException("未找到该点位"); } + // 判断点位有没有被锁定 + if (!StrUtil.equals(nextPoint.getString("lock_type"), "00")) { + throw new BadRequestException("该点位已被锁定"); + } + + // 判断点位是否为空位 + if (!StrUtil.equals(nextPoint.getString("point_status"), "00")) { + throw new BadRequestException("该点位不是空位"); + } + // 查询点位的叫料区域 String startRegionId = nextPoint.getString("prev_region_id"); if (StrUtil.isEmpty(startRegionId)) { @@ -91,16 +101,6 @@ public class CallTask extends AbstractAcsTask { throw new BadRequestException("该点位不能呼叫这种物料"); } - // 判断点位有没有被锁定 - if (!StrUtil.equals(nextPoint.getString("lock_type"), "00")) { - throw new BadRequestException("该点位已被锁定"); - } - - // 判断点位是否为空位 - if (!StrUtil.equals(nextPoint.getString("point_status"), "00")) { - throw new BadRequestException("该点位不是空位"); - } - // 查询叫料区域存放此物料的排 JSONArray colArray = WQL .getWO("SEND_TASK") @@ -122,8 +122,10 @@ public class CallTask extends AbstractAcsTask { .process() .uniqueResult(0); - // 点位不为空 且 点位未锁定,则为合适的叫料点位 - if (ObjectUtil.isNotEmpty(tempPoint) && StrUtil.equals(tempPoint.getString("lock_type"), "00")) { + // 点位不为空 且 点位未锁定 且 点位上的物料和需要的物料一致,则为合适的叫料点位 + if (ObjectUtil.isNotEmpty(tempPoint) + && "00".equals(tempPoint.getString("lock_type")) + && materialType.equals(tempPoint.getString("current_material_type"))) { startPoint = tempPoint; break; } diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendTask.java b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendTask.java index 831359e..9aa8e48 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendTask.java +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendTask.java @@ -140,7 +140,7 @@ public class SendTask extends AbstractAcsTask { // 起点置空 解锁 startPoint.put("point_status", "00"); startPoint.put("lock_type", "00"); - startPoint.put("current_material_type", "14"); + startPoint.put("current_material_type", null); startPoint.put("update_optid", userId); startPoint.put("update_optname", username); startPoint.put("update_time", now); @@ -178,12 +178,6 @@ public class SendTask extends AbstractAcsTask { throw new BadRequestException("未找到该点位"); } - // 查询点位的送料区域 - String nextRegionId = startPoint.getString("next_region_id"); - if (StrUtil.isEmpty(nextRegionId)) { - throw new BadRequestException("该点位没有送料区域"); - } - // 判断点位有没有被锁定 if (!StrUtil.equals(startPoint.getString("lock_type"), "00")) { throw new BadRequestException("该点位已被锁定"); @@ -194,6 +188,13 @@ public class SendTask extends AbstractAcsTask { throw new BadRequestException("该点位是空位"); } + // 查询点位的送料区域 + String nextRegionId = startPoint.getString("next_region_id"); + if (StrUtil.isEmpty(nextRegionId)) { + throw new BadRequestException("该点位没有送料区域"); + } + + // 查送料点位(出入库顺序升序) JSONObject nextPoint; String currentMaterialType = startPoint.getString("current_material_type"); diff --git a/lms/hd/nladmin-system/src/main/resources/logback-spring.xml b/lms/hd/nladmin-system/src/main/resources/logback-spring.xml index 4522256..5aff1b4 100644 --- a/lms/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/lms/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -21,7 +21,7 @@ https://juejin.cn/post/6844903775631572999 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${log.pattern}</pattern> - <charset>${log.charset}</charset> +<!-- <charset>${log.charset}</charset>--> </encoder> <!-- 转为JSON https://www.zoleet.com/details/328.html--> @@ -64,6 +64,7 @@ https://juejin.cn/post/6844903775631572999 <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> @@ -115,7 +116,7 @@ https://juejin.cn/post/6844903775631572999 <!--生产环境:打印控制台和输出到文件--> <springProfile name="prod"> - <root level="off"> + <root level="info"> <appender-ref ref="asyncFileAppender"/> </root> </springProfile> diff --git a/lms/hd/nladmin-system/src/test/java/org/nl/PointTest.java b/lms/hd/nladmin-system/src/test/java/org/nl/PointTest.java index 8626ea5..a9ddfa9 100644 --- a/lms/hd/nladmin-system/src/test/java/org/nl/PointTest.java +++ b/lms/hd/nladmin-system/src/test/java/org/nl/PointTest.java @@ -21,6 +21,7 @@ public class PointTest { @Test public void test01() { WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + WQLObject pm_table = WQLObject.getWQLObject("sch_base_point_material"); // JSONObject point = new JSONObject(); // point.put("region_id", "1628275194667864064"); // point.put("point_type", "00"); @@ -49,19 +50,24 @@ public class PointTest { // point_table.insert(point); // } // } - JSONArray points = point_table - .query("region_id = 1628275194667864064") - .getResultJSONArray(0); - WQLObject pm_table = WQLObject.getWQLObject("sch_base_point_material"); - JSONObject pm = new JSONObject(); - String[] materials = new String[]{"08", "09", "10", "11", "12", "13"}; +// JSONArray points = point_table +// .query("region_id = 1628275194667864064") +// .getResultJSONArray(0); +// WQLObject pm_table = WQLObject.getWQLObject("sch_base_point_material"); +// JSONObject pm = new JSONObject(); +// String[] materials = new String[]{"08", "09", "10", "11", "12", "13"}; +// for (Object o : points) { +// pm.put("point_id", ((JSONObject) o).getLongValue("point_id")); +// for (String material : materials) { +// pm.put("pm_id", IdUtil.getSnowflake(1L, 1L).nextId()); +// pm.put("material", material); +// pm_table.insert(pm); +// } +// } + + JSONArray points = point_table.query("region_id = 1628275194667864064").getResultJSONArray(0); for (Object o : points) { - pm.put("point_id", ((JSONObject) o).getLongValue("point_id")); - for (String material : materials) { - pm.put("pm_id", IdUtil.getSnowflake(1L, 1L).nextId()); - pm.put("material", material); - pm_table.insert(pm); - } + pm_table.delete("point_id = " + ((JSONObject) o).getString("point_id") + " AND material IN ('11', '12', '13')"); } } } diff --git a/lms/qd/src/views/wms/sch/point/index.vue b/lms/qd/src/views/wms/sch/point/index.vue index e6ce5de..a8beab3 100644 --- a/lms/qd/src/views/wms/sch/point/index.vue +++ b/lms/qd/src/views/wms/sch/point/index.vue @@ -189,7 +189,7 @@ clearable > <el-option - v-for="item in dict.current_material_type" + v-for="item in dict.material_type" :key="item.id" :label="item.label" :value="item.value" @@ -352,7 +352,7 @@ import pagination from '@crud/Pagination' const defaultForm = { device_point_type: null, point_id: null, is_host: null, point_code: null, point_name: null, area_type: null, point_type: '00', point_status: '00', lock_type: '00', vehicle_code: null, source_id: null, remark: null, is_used: null, is_delete: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null, material_type: [], region_id: null, prev_region_id: null, next_region_id: null, seq: 0, current_material_type: null, col: 1 } export default { name: 'Point', - dicts: ['sch_point_type', 'sch_area_type', 'sch_point_status', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'storagevehicle_type', 'IS_HOST', 'device_point_type', 'material_type', 'current_material_type'], + dicts: ['sch_point_type', 'sch_area_type', 'sch_point_status', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'storagevehicle_type', 'IS_HOST', 'device_point_type', 'material_type'], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { diff --git a/lms/qd/src/views/wms/sch/task/index.vue b/lms/qd/src/views/wms/sch/task/index.vue index b14ceae..c999eeb 100644 --- a/lms/qd/src/views/wms/sch/task/index.vue +++ b/lms/qd/src/views/wms/sch/task/index.vue @@ -122,12 +122,12 @@ /> </el-select> </el-form-item> - <rrOperation /> + <rrOperation/> </el-form> </div> <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> - <crudOperation :permission="permission" /> + <crudOperation :permission="permission"/> <!--表格渲染--> <el-table ref="table" @@ -137,30 +137,30 @@ style="width: 100%;" @selection-change="crud.selectionChangeHandler" > - <el-table-column type="selection" width="50" /> - <el-table-column v-if="false" prop="taskdtl_id" label="任务标识" /> - <el-table-column prop="task_code" label="任务编码" /> - <el-table-column v-if="false" prop="task_type" label="任务类型" /> - <el-table-column prop="task_type_name" label="任务类型" /> - <el-table-column v-if="false" prop="taskdtl_type" label="任务明细" /> - <el-table-column v-if="false" prop="taskdtl_type_name" label="任务明细" /> - <el-table-column v-if="false" prop="task_status" label="任务状态" /> - <el-table-column prop="task_status_name" label="任务状态" width="95px" :formatter="formatTaskStatusName" /> + <el-table-column type="selection" width="50"/> + <el-table-column v-if="false" prop="taskdtl_id" label="任务标识"/> + <el-table-column prop="task_code" label="任务编码"/> + <el-table-column v-if="false" prop="task_type" label="任务类型"/> + <el-table-column prop="task_type_name" label="任务类型"/> + <el-table-column v-if="false" prop="taskdtl_type" label="任务明细"/> + <el-table-column v-if="false" prop="taskdtl_type_name" label="任务明细"/> + <el-table-column v-if="false" prop="task_status" label="任务状态"/> + <el-table-column prop="task_status_name" label="任务状态" width="95px" :formatter="formatTaskStatusName"/> <!-- <el-table-column v-if="false" prop="finished_type" label="完成方式" /> --> <!-- <el-table-column prop="finished_type_name" label="完成方式" :formatter="formatFinishTypeName"/>--> - <el-table-column prop="start_area_name" label="起始区域" width="95" show-overflow-tooltip /> - <el-table-column prop="start_point_code" label="起点编码" width="85" /> + <el-table-column prop="start_area_name" label="起始区域" width="95" show-overflow-tooltip/> + <el-table-column prop="start_point_code" label="起点编码" width="85"/> <el-table-column prop="start_point_name" label="起点名称" width="105" show-overflow-tooltip/> - <el-table-column prop="next_area_name" label="下一区域" width="95" show-overflow-tooltip /> - <el-table-column prop="next_point_code" label="下一点编码" width="90" /> + <el-table-column prop="next_area_name" label="下一区域" width="95" show-overflow-tooltip/> + <el-table-column prop="next_point_code" label="下一点编码" width="90"/> <el-table-column prop="next_point_name" label="下一点名称" width="105" show-overflow-tooltip/> - <el-table-column v-if="false" prop="material_code" label="物料编码" /> - <el-table-column prop="remark" label="备注" width="120" show-overflow-tooltip /> - <el-table-column v-if="false" prop="update_by" label="修改者" /> - <el-table-column prop="create_time" label="创建时间" width="135" /> - <el-table-column prop="update_time" label="修改时间" width="135" /> + <el-table-column v-if="false" prop="material_code" label="物料编码"/> + <el-table-column prop="remark" label="备注" width="120" show-overflow-tooltip/> + <el-table-column v-if="false" prop="update_by" label="修改者"/> + <el-table-column prop="create_time" label="创建时间" width="135"/> + <el-table-column prop="update_time" label="修改时间" width="135"/> <el-table-column v-permission="['admin','instruction:edit','instruction:del']" fixed="right" @@ -171,21 +171,21 @@ <template slot-scope="scope"> <el-dropdown trigger="click" @command="handleCommand"> <span class="el-dropdown-link"> - <i class="el-icon-menu" /> + <i class="el-icon-menu"/> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'d')">下发</el-dropdown-item> <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'a')">完成</el-dropdown-item> -<!-- <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'b')">取消</el-dropdown-item>--> + <!-- <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'b')">取消</el-dropdown-item>--> <!-- <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'c')">拉回</el-dropdown-item>--> -<!-- <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'e')">详情</el-dropdown-item>--> + <!-- <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'e')">详情</el-dropdown-item>--> </el-dropdown-menu> </el-dropdown> </template> </el-table-column> </el-table> <!--分页组件--> - <pagination /> + <pagination/> </div> <el-dialog title="任务详情" @@ -229,7 +229,14 @@ export default { sort: 'taskdtl_id,desc', crudMethod: { ...crudTask }, query: { - task_code:'',vehicle_code:'',start_point_code:'',next_point_code:'',task_type:'',taskdtl_type:'',finished_type:'',task_status:"" + task_code: '', + vehicle_code: '', + start_point_code: '', + next_point_code: '', + task_type: '', + taskdtl_type: '', + finished_type: '', + task_status: '-1' }, optShow: { add: false, @@ -251,9 +258,7 @@ export default { taskStatusList: [], taskTypeList: [], finishTypeList: [], - permission: { - - }, + permission: {}, rules: {} } },