diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index a181448e..a67a6d10 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -58,8 +58,8 @@ public enum AcsTaskEnum { ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"), ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"), - ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"), ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"), + ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"), ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"), ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务(刻字-包装)"), ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务(刻字-包装)"), @@ -91,12 +91,17 @@ public enum AcsTaskEnum { return res; } - public static List getAcsTaskTypes() { + public static List getAcsTaskTypes() { List task = Arrays.stream(AcsTaskEnum.values()) .filter(taskEnum -> taskEnum.name().startsWith("ACS_TASK_")) .collect(Collectors.toList()); - List list = new ArrayList<>(task.size()); - task.forEach(t-> list.add(t.getDesc())); + List list = new ArrayList<>(task.size()); + task.forEach(t->{ + Map map = new HashMap<>(); + map.put("value",Integer.valueOf(t.getCode())); + map.put("label",t.getDesc()); + list.add(map); + }); return list; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index ca174ce5..a6abb5b3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -69,7 +69,12 @@ public enum StatusEnum { IOS_CREATE("01","生成","",null), IOS_RUNNING("02","执行中","",null), IOS_FINISH("99","完成","",null), - ; + // 1-PC创建、2-Excel导入 + PCINTO("1","PC创建", "",null), + EXCELINTO("2","EXCEL导入", "2",null), + // 1白班、2夜班 + DAYSHIFT("1","白班", "1",null), + NIGHTSHIFT("2","夜班", "2",null); private String code; private String desc; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java index 11186bd7..811f7f21 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java @@ -1,5 +1,8 @@ package org.nl.common.enums; +import java.util.*; +import java.util.stream.Collectors; + /** * @Author: lyd * @Description: 工单枚举 @@ -11,14 +14,11 @@ public enum WorkerOrderEnum { SEND("下发", "2"), PRODUCTING("生产中", "3"), STOP("暂停", "4"), - COMPLETE("完成", "5"), - FORCE_COMPLETE("强制完成", "6"), - // 1-PC创建、2-Excel导入 - PCINTO("PC创建", "1"), - EXCELINTO("EXCEL导入", "2"), - // 1白班、2夜班 - DAYSHIFT("白班", "1"), - NIGHTSHIFT("夜班", "2") + AUTO_COMPLETE("自动完成", "5"), + COMPLETE("完成", "6"), + FORCE_COMPLETE("强制完成", "7"), + CANCEL("取消", "8"), + ; @@ -30,6 +30,17 @@ public enum WorkerOrderEnum { this.code = code; } + public static List getWorkOrderStatus() { + List list = new ArrayList<>(); + for (WorkerOrderEnum value : WorkerOrderEnum.values()) { + Map map = new HashMap<>(); + map.put("value",Integer.valueOf(value.getCode())); + map.put("label",value.getName()); + list.add(map); + } + return list; + } + public String getName() { return name; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java index 48519586..4adf51f1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java @@ -21,7 +21,7 @@ import java.util.Set; @Component public class BussEventMulticaster implements BeanPostProcessor { - private static Set> LISTENER_SRT = new LinkedHashSet<>(); + public static Set> LISTENER_SRT = new LinkedHashSet<>(); public final static void publish(PublishEvent event, Boolean sync){ if (event == null){ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 59598c2b..16f93441 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -74,6 +74,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ },param.getString("type"),5); }catch (Exception ex){ + log.error("acs申请任务失败:ex:{}",ex.getMessage()); result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("message",ex.getMessage()); } @@ -141,7 +142,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ /*AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(processing_class)); taskHandler.updateTaskStatus(row,status);*/ } catch (Exception e) { - log.info("任务状态更新失败:{}", e.getMessage()); + log.error("任务状态更新失败:{}", e.getMessage()); JSONObject json = new JSONObject(); json.put("task_id", task_id); json.put("message", e.getMessage()); @@ -206,10 +207,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ workorder.setRealproducestart_date(DateUtil.now()); } if (orderJson.getString("status").equals(WorkerOrderEnum.COMPLETE.getCode())){ + workorder.setWorkorder_status(WorkerOrderEnum.AUTO_COMPLETE.getCode()); workorder.setRealproduceend_date(DateUtil.now()); } workorderService.updateById(workorder); } catch (Exception e){ + log.error("工单状态更新失败:{}", e.getMessage()); result.put("status", 400); result.put("message", e.getMessage()); return result; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java index 75142505..7ba6ffea 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java @@ -127,10 +127,10 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl> list = this.listMaps(query); + return getMaps(list); } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java index 366d7cb6..d1d3b351 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java @@ -126,7 +126,7 @@ public class MdPbBucketrecord implements Serializable { /** * 存储载具标识 */ - private Long storagevehicle_id; + private String storagevehicle_id; /** * 存储载具编码 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java index f930d511..d63355d7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java @@ -67,7 +67,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl "" - ShiftOrder.workorder_status <> '5' + ShiftOrder.workorder_status <> '6' ENDOPTION OPTION 输入.current_produce_person_id <> "" ShiftOrder.current_produce_person_id = 输入.current_produce_person_id @@ -129,7 +129,7 @@ and device.device_code not in ( select o.device_code as device_code from PDM_produce_workOrder o - where o.workorder_status <> '5' and o.is_delete = '0' + where o.workorder_status <> '6' and o.is_delete = '0' ) ENDOPTION ENDSELECT diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/SpecialDeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/SpecialDeviceController.java new file mode 100644 index 00000000..cb21270e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/SpecialDeviceController.java @@ -0,0 +1,83 @@ +package org.nl.wms.product_manage.controller.device; + +import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; +import org.nl.wms.product_manage.service.device.dto.DeviceQuery; +import org.nl.wms.product_manage.备份pdm.service.DeviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author lyd + * @date 2023-03-15 + **/ +@RestController +@Api(tags = "生产设备管理") +@RequestMapping("/api/specialDevice") +@Slf4j +public class SpecialDeviceController { + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private IPdmBiDeviceService iDeviceService; + + @PostMapping("/query") + @ApiOperation("查询生产设备") + @SaIgnore + public ResponseEntity query(@RequestBody DeviceQuery query) { + List list = iDeviceService.list(query.build()); + Set materials = list.stream().map(PdmBiDevice::getMaterial_id).collect(Collectors.toSet()); + Map materialMap = materialbaseService.list(new QueryWrapper().in("material_id", materials)).stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_id(), v), HashMap::putAll); + List result = new ArrayList<>(); + for (PdmBiDevice pdmBiDevice : list) { + Map map = new HashMap<>(); + map.put("device_code",pdmBiDevice.getDevice_code()); + map.put("product_area",pdmBiDevice.getProduct_area()); + map.put("material_id",pdmBiDevice.getMaterial_id()); + MdMeMaterialbase materialbase = materialMap.get("pdmBiDevice.getMaterial_id()"); + map.put("material_name",materialbase!=null?materialbase.getMaterial_name():""); + map.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():""); + map.put("deviceinstor_qty",pdmBiDevice.getDeviceinstor_qty()); + result.add(map); + } + return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK); + } + + @PostMapping("/update") + @Log("更新物料") + @ApiOperation("更新物料") + @SaIgnore + public ResponseEntity queryList (@RequestBody JSONObject query){ + String device_code = query.getString("device_code"); + if (StringUtils.isNotEmpty(device_code)){ + iDeviceService.update(new UpdateWrapper() + .set("material_id",query.getString("material_id")) + .set("deviceinstor_qty",query.getBigDecimal("deviceinstor_qty")) + .eq("device_code",device_code)); + } + return new ResponseEntity<>(HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java index 9da7db27..39a97d37 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java @@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.api.RestBusinessTemplate; import org.nl.common.utils.api.ResultCode; @@ -85,7 +86,7 @@ public class ProduceshiftorderController{ throw new BizCoreException(ResultCode.VALIDATE_FAILED); } /** @see org.nl.common.enums.WorkerOrderEnum */ - param.put("workorder_status","'2','3','4'"); + param.put("workorder_status","'2','3','4','5'"); List list = iPdmProduceWorkorderService.getOrderList(param, page); return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); } @@ -164,4 +165,12 @@ public class ProduceshiftorderController{ public ResponseEntity getUser() { return new ResponseEntity<>(produceshiftorderService.getUser(), HttpStatus.OK); } + + + @GetMapping("/orderStatus") + @Log("查询操作人员") + @ApiOperation("查询操作人员") + public ResponseEntity getWorkOrderStatus() { + return new ResponseEntity<>(WorkerOrderEnum.getWorkOrderStatus(), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/TaskService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/TaskService.java index 09a69a5d..1a544a0d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/TaskService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/TaskService.java @@ -91,5 +91,5 @@ public interface TaskService { */ JSONArray getTaskTypes(); - List getAcsTaskType(); + List getAcsTaskType(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java index df45e532..aa52ee08 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.SecurityUtils; @@ -52,21 +53,12 @@ public class TaskServiceImpl implements TaskService { map.put("flag", "1"); JSONObject whereJson = JSONObject.parseObject(JSON.toJSONString(form)); - String task_status = whereJson.getString("task_status"); map.put("product_area", whereJson.getString("product_area")); - if (StrUtil.isNotEmpty(task_status)) { - task_status = task_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); - } - String moreTaskStatus = whereJson.getString("more_task_status"); - if (ObjectUtil.isNotEmpty(moreTaskStatus)) { - task_status = moreTaskStatus; - } - map.put("task_status", task_status); - //处理状态为未完成 - if (StrUtil.isNotEmpty(task_status) && task_status.contains("-1")) { - map.put("unFinish", "-1"); - map.put("task_status", task_status.replace("-1", "")); + map.put("task_status",whereJson.getString("task_status")); + if (!StringUtils.isEmpty(whereJson.getString("task_status")) && whereJson.getString("task_status").contains("-1")){ + map.put("task_status",whereJson.getString("task_status").replaceAll("-1","1,4,5")); } + if (StrUtil.isNotEmpty(whereJson.getString("task_code"))) { map.put("task_code", "%" + whereJson.getString("task_code") + "%"); } @@ -92,7 +84,7 @@ public class TaskServiceImpl implements TaskService { if (StrUtil.isNotEmpty(whereJson.getString("end_time"))) { map.put("end_time", whereJson.getString("end_time")); } - JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.update_time desc"); + JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.task_code desc"); return json; } @@ -183,7 +175,7 @@ public class TaskServiceImpl implements TaskService { } @Override - public List getAcsTaskType() { + public List getAcsTaskType() { return AcsTaskEnum.getAcsTaskTypes(); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java index 2d985e25..314a3062 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -3,15 +3,17 @@ package org.nl.wms.product_manage.sch.tasks.SpeMachinery; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.Nullable; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; +import org.nl.common.enums.WorkerOrderEnum; +import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; @@ -23,6 +25,8 @@ import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService; +import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; @@ -34,12 +38,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -58,7 +60,8 @@ public class SpeEmpTask extends AbstractAcsTask { private AgvInstService agvInstService; @Autowired private ISchBasePointService basePointService; - + @Autowired + private ISchCachelineVehilematerialService vehilematerialService; @Autowired private ISchProcessRouteService schProcessRouteService; @@ -88,7 +91,7 @@ public class SpeEmpTask extends AbstractAcsTask { if (cahceLine == null) { return null; } PdmProduceWorkorder one = workorderService.getOne(new QueryWrapper() .eq("workorder_code", param.getString("workorder_code")) - .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); + .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); Assert.notNull(one, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); List list = taskService.list(new QueryWrapper() .eq("point_code2", param.getString("device_code")).lt("task_status", StatusEnum.TASK_FINISH.getCode()) @@ -100,7 +103,7 @@ public class SpeEmpTask extends AbstractAcsTask { JSONObject form = new JSONObject(MapOf.of("start_point_code",cahceLine, "next_point_code",param.getString("device_code"),"return_point_code", cahceLine,"vehicle_code", "","product_area",one.getProduct_area(),"quantity", param.getString("quantity"),"type",AcsTaskEnum.TASK_CACHELINE_OUT.getCode(),"material_id", one.getMaterial_id())); - String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; + String taskId = IdUtil.getStringId(); JSONObject task = packageParam(form, taskId); taskService.save(task.toJavaObject(SchBaseTask.class)); @@ -179,11 +182,23 @@ public class SpeEmpTask extends AbstractAcsTask { AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); switch (status){ case STATUS_START: + Map extParam = (Map)param.get("ext_param"); taskService.update(new UpdateWrapper() .set("task_status",StatusEnum.TASK_RUNNING.getCode()) .set("update_name","acs") .set("update_time", DateUtil.now()) .eq("task_id",task.getTask_id())); + if (extParam.get("fall_finish") != null){ + //TODO:添加任务唯一性校验防止重复更新 + PdmBiDevice device = iDeviceService.getDeviceByPointCode(task.getPoint_code2()); + if (!("fall_finish"+task.getTask_id()).equals(device.getRemark())){ + iDeviceService.update(new UpdateWrapper() + .set("material_id", task.getMaterial_id()) + .set("deviceinstor_qty",device.getDeviceinstor_qty().add(task.getMaterial_qty())) + .set("remark","fall_finish"+task.getTask_id()) + .eq("device_code", task.getPoint_code2())); + } + } break; case STATUS_FINISH: taskService.update(new UpdateWrapper() @@ -191,10 +206,17 @@ public class SpeEmpTask extends AbstractAcsTask { .set("update_name","acs") .set("update_time", DateUtil.now()) .eq("task_id",task.getTask_id())); - SchBasePoint point = basePointService.getOne(new QueryWrapper().eq("point_code", task.getPoint_code2())); - PdmBiDevice device = iDeviceService.getOne(new QueryWrapper().eq("device_code", point.getDevice_code())); - BigDecimal currentQty = device.getDeviceinstor_qty().add(task.getMaterial_qty()); - iDeviceService.update(new UpdateWrapper().set("deviceinstor_qty",currentQty).eq("device_code",point.getDevice_code())); + String vehicle_code = param.getString("vehicle_code"); + if (StringUtils.isNotEmpty(vehicle_code)){ + SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial(); + vehilematerial.setCreate_time(DateUtil.now()); + vehilematerial.setVehmaterial_id(IdUtil.getStringId()); + vehilematerial.setVehicle_code(vehicle_code); + vehilematerial.setVehicle_status(StatusEnum.CACHE_VEL_EMT.getCode()); + vehilematerial.setErr_type(StatusEnum.STATUS_FLASE.getCode()); + vehilematerial.setCacheLine_code(task.getPoint_code1()); + vehilematerialService.save(vehilematerial); + } break; case STATUS_CANNEL: cancel(param.getString("task_id")); @@ -226,7 +248,7 @@ public class SpeEmpTask extends AbstractAcsTask { List waitingTask = new ArrayList<>();//可合并,但是只有单条任务 Map taskGroupMap = new HashMap<>(); for (SchBaseTask task : array) { - String taskGroupId = org.nl.common.utils.IdUtil.getStringId(); + String taskGroupId = IdUtil.getStringId(); String taskId = task.getTask_id(); task.setIs_send(true); if (taskGroupMap.get(taskId) != null){ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index 462a29a4..b1169c90 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; import org.nl.common.enums.StatusEnum; +import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; @@ -41,6 +42,7 @@ import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 专机任务 @@ -94,7 +96,7 @@ public class SpeFullTask extends AbstractAcsTask { PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() .eq("workorder_code", param.getString("workorder_code")) .eq("is_delete", false) - .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); + .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); List list = taskService.list(new QueryWrapper() .eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode()) @@ -215,11 +217,13 @@ public class SpeFullTask extends AbstractAcsTask { //outboxt箱子更新到任务表vechile_code2? if (extParam.get("inbox") != null){ SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial(); + vehilematerial.setCreate_time(DateUtil.now()); vehilematerial.setVehmaterial_id(IdUtil.getStringId()); vehilematerial.setVehicle_code(extParam.get("inbox")); + vehilematerial.setVehicle_status(StatusEnum.CACHE_VEL_FULL.getCode()); + vehilematerial.setErr_type(StatusEnum.STATUS_FLASE.getCode()); + vehilematerial.setCacheLine_code(task.getPoint_code1()); vehilematerial.setMaterial_id(task.getMaterial_id()); - vehilematerial.setErr_type("0"); - vehilematerial.setCreate_time(DateUtil.now()); vehilematerial.setQuantity(task.getMaterial_qty()); cacheLineVechileService.save(vehilematerial); } @@ -254,7 +258,7 @@ public class SpeFullTask extends AbstractAcsTask { if (extParam.get("fall_finish") != null){ //TODO:添加任务唯一性校验防止重复更新 PdmBiDevice one = deviceService.getOne(new QueryWrapper().eq("device_code", task.getPoint_code2())); - if (!one.getRemark().equals("fall_finish"+task.getTask_id())){ + if (!("fall_finish"+task.getTask_id()).equals(one.getRemark())){ deviceService.update(new UpdateWrapper() .set("material_id", task.getMaterial_id()) .set("deviceinstor_qty",one.getDeviceinstor_qty().add(task.getMaterial_qty())) @@ -309,14 +313,16 @@ public class SpeFullTask extends AbstractAcsTask { taskGroupMap.put(taskId,taskGroupId); task.setTask_group_id(taskGroupId); //如果点位不属于查询出来可以合并点位集合:则单独下发集合 - if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){ + if (!mergePointCollent.contains(start) || !mergePointCollent.contains(end)){ notMerge.add(task); continue; } //起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中 List collect = taskGroupMap.keySet().stream().collect(Collectors.toList()); collect.add(taskId); - String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect); + //相同任务类型的任务 + List tasks = array.stream().filter(a -> a.getAcs_task_type().equals(task.getAcs_task_type())).collect(Collectors.toList()); + String mergeTargetId = getMergePointByone(pointRegionCollent, start,end,tasks,collect); if (mergeTargetId == null){ waitingTask.add(task); continue; @@ -359,9 +365,27 @@ public class SpeFullTask extends AbstractAcsTask { if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); } } } + if (value.size() == 1){ + for (SchBaseTask task : value) { + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); + } + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); + } + task.setIs_send(true); + } + } } - private String getMergePoint(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { + private String getMergePointByone(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { + String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); + if (findpoint == null){ + findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); + } + return findpoint; + } + private String getMergePointBytow(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); if (findpoint == null){ findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java index 24dfcd5c..9428e420 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java @@ -27,5 +27,12 @@ public interface IPdmBiDeviceService extends IService { */ List workproceduceDevices(Map param); + /** + * 根据点位查询对应设备 + * @param PointCode + * @return + */ + PdmBiDevice getDeviceByPointCode(String PointCode); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java index 1f9452da..115bc281 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java @@ -20,4 +20,6 @@ public interface PdmBiDeviceMapper extends BaseMapper { List getNotWorkDevice(Map query); List workproceduceDevices(Map query); + + PdmBiDevice getDeviceByPoint(String pointCode); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index 49637bba..dda8af9f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -39,4 +39,9 @@ GROUP BY pdm_bi_device.device_code HAVING currentQty > #{qty} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java index 7b7009f0..d24bc0a2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java @@ -30,4 +30,9 @@ public class PdmBiDeviceServiceImpl extends ServiceImpl workproceduceDevices(Map param) { return this.baseMapper.workproceduceDevices(param); } + + @Override + public PdmBiDevice getDeviceByPointCode(String PointCode) { + return this.baseMapper.getDeviceByPoint(PointCode); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 5372e036..3b58d7ee 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.*; import org.nl.common.utils.api.RestBusinessTemplate; @@ -117,7 +118,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .eq("device_code", param.getString("device_code")) @@ -535,13 +536,15 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); PdmProduceWorkorderrecord workorderrecord = packageRecordForm(workOrder); - reportRecordService.save(workorderrecord); - + try { + reportRecordService.save(workorderrecord); + }catch (Exception ex){ + throw new BadRequestException("当前工单存在未报工的报工记录,请先进行报工"); + } Map resp = wmsToAcsService.order(array); if (HttpStatus.BAD_REQUEST.equals(resp.get("status"))) { throw new BadRequestException(resp.get("message")!=null?String.valueOf(resp.get("message")):"acs反馈异常"); } - return RestBusinessTemplate.execute(() -> resp); } @@ -588,9 +591,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); - if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { - throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); - } +// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { +// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); +// } PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper() .eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成"))); if (one == null) { @@ -604,11 +607,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .set("report_qty", param.getBigDecimal("report_qty")) .set("nok_qty", param.getBigDecimal("nok_qty")) .set("repare_qty", param.getBigDecimal("repare_qty")) + .set("report_status", ReportEnum.REPORT_STATUS.code("报工")) .set("needproduct_qty", Math.max(0,workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())) .eq("macoperate_id", one.getMacoperate_id())); return one.getMacoperate_id(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/dao/mapper/SchBaseRegionMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/dao/mapper/SchBaseRegionMapper.xml index 1db11e6a..178566a3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/dao/mapper/SchBaseRegionMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/dao/mapper/SchBaseRegionMapper.xml @@ -7,12 +7,12 @@ region.* FROM SCH_BASE_Region region - + 1=1 - region.product_area = #{product_area} + and region.product_area = #{product_area} - (region.region_code like '%${region_code}%' or region.region_name like '%${region_code}%') + and (region.region_code like '%${region_code}%' or region.region_name like '%${region_code}%') diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/TaskStatusEvent.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/TaskStatusEvent.java new file mode 100644 index 00000000..c7b91ee0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/TaskStatusEvent.java @@ -0,0 +1,25 @@ +package org.nl.wms.scheduler_manage.service.task; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.nl.common.publish.event.PublishEvent; +import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; + +import java.math.BigDecimal; + +/* + * @author ZZQ + * @Date 2023/5/10 11:37 + * 仓库物料事件 + */ +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class TaskStatusEvent extends PublishEvent { + + private String task_id; + private String type; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java index 457e6fc6..4cec9f98 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java @@ -90,6 +90,14 @@ public class IStivtlostorivnCpInController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/cancelConfirmvehicle") + @Log("取消组盘") + @ApiOperation("取消组盘") + public ResponseEntity cancelConfirmvehicle(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.cancelConfirmvehicle(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/divStruct") @Log("分配") @ApiOperation("分配") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java index d82b7976..d5a191a2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java @@ -91,6 +91,15 @@ public interface IStIvtIostorinvCpService extends IService { */ void confirmvehicle(JSONObject whereJson); + /** + * 取消组盘 + * @param whereJson + * { + * "dtl_row":{明细对象..} + * } + */ + void cancelConfirmvehicle(JSONObject whereJson); + /** * 删除 * @param ids @@ -144,4 +153,5 @@ public interface IStIvtIostorinvCpService extends IService { * } */ void confirm(JSONObject whereJson); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 2789151f..04a85910 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.jsonwebtoken.lang.Assert; @@ -202,6 +203,14 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id")) + ); + if (ObjectUtil.isNotEmpty(disIs)) throw new BadRequestException("此明细已组盘"); + List disDtlList = tableDisDtl .stream() .map(row -> (JSONObject) row) @@ -302,6 +311,55 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + ); + + if (ObjectUtil.isEmpty(disDaoList)) throw new BadRequestException("没有可取消组盘的分配明细!"); + + boolean is_struct = disDaoList.stream() + .anyMatch(row -> ObjectUtil.isNotEmpty(row.getStruct_id())); + + if (is_struct) throw new BadRequestException("有分配明细已分配货位不可取消组盘!"); + + // 2.更新载具扩展属性、 箱记录 + Map> collect = disDaoList.stream().collect(Collectors.groupingBy(StIvtIostorinvdisCp::getStoragevehicle_code)); + + for (String storagevehicle_code : collect.keySet()) { + // 更新载具扩展属性 + iMdPbStoragevehicleextService.update( + new UpdateWrapper().lambda() + .set(MdPbStoragevehicleext::getMaterial_id, "") + .set(MdPbStoragevehicleext::getStorage_qty, "0") + .eq(MdPbStoragevehicleext::getStoragevehicle_code, storagevehicle_code) + ); + + // 更新箱记录表 + iMdPbBucketrecordService.update( + new UpdateWrapper().lambda() + .set(MdPbBucketrecord::getStoragevehicle_code, "") + .set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成")) + .set(MdPbBucketrecord::getStoragevehicle_id, "") + .eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘")) + .eq(MdPbBucketrecord::getStoragevehicle_code, storagevehicle_code) + ); + } + + // 3.删除分配表 + iostorinvdisCpService.remove( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + ); + + } + + @Override + @Transactional(rollbackFor = Exception.class) public void delete(Long[] ids) { for (Long id : ids) { @@ -331,7 +389,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); @@ -170,10 +175,31 @@ public class StIvtMoreorlessmstBcpServiceImpl extends ServiceImpl().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, dtl.getStoragevehicle_code()) + ); + if (ObjectUtil.isNotEmpty(vehicleDao)) { + vehicleDao.setStorage_qty(NumberUtil.sub(vehicleDao.getStorage_qty(),mol_qty)); + iMdPbStoragevehicleextService.updateById(vehicleDao); + } + //如果库存变为0则删除记录 if (canuse_qty.compareTo(mol_qty) == 0 ) { iStIvtStructivtBcpService.removeById(ivt.getStruct_id()); + + // 更新载具扩展属性 - 释放载具对应物料关系 清空数量 + iMdPbStoragevehicleextService.update( + new MdPbStoragevehicleext() + .setMaterial_id("") + .setStorage_qty(BigDecimal.valueOf(0)), + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code,dtl.getStoragevehicle_code()) + ); + // 更新货位 -- 清除载具号 structattrService.update( new StIvtStructattr() @@ -222,9 +248,32 @@ public class StIvtMoreorlessmstBcpServiceImpl extends ServiceImpl().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, dtl.getStoragevehicle_code()) + ); + if (ObjectUtil.isNotEmpty(vehicleDao)) { + vehicleDao.setStorage_qty(mol_qty); + vehicleDao.setMaterial_id(dtl.getMaterial_id()); + iMdPbStoragevehicleextService.updateById(vehicleDao); + } + } else { BigDecimal canuse_qty = ivt.getCanuse_qty(); ivt.setCanuse_qty(NumberUtil.add(canuse_qty, mol_qty)); + + // 更新载具扩展属性 - 数量 + MdPbStoragevehicleext vehicleDao = iMdPbStoragevehicleextService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, dtl.getStoragevehicle_code()) + ); + + if (ObjectUtil.isNotEmpty(vehicleDao)) { + vehicleDao.setStorage_qty(NumberUtil.add(vehicleDao.getStorage_qty(), dtl.getMol_qty())); + iMdPbStoragevehicleextService.updateById(vehicleDao); + } + iStIvtStructivtBcpService.updateById(ivt); } diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml index 13eff24c..4a195bc6 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml @@ -22,11 +22,11 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - # url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false +# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} # password: ${DB_PWD:123456} - password: ${DB_PWD:123456} + password: ${DB_PWD:942464Yy} # 初始连接数 initial-size: 5 diff --git a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml index b72175f0..4be68a29 100644 --- a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -145,6 +145,33 @@ https://juejin.cn/post/6844903775631572999 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/resources/scheduler.xml b/mes/hd/nladmin-system/src/main/resources/scheduler.xml index b9aa5b65..62cc0d57 100644 --- a/mes/hd/nladmin-system/src/main/resources/scheduler.xml +++ b/mes/hd/nladmin-system/src/main/resources/scheduler.xml @@ -9,7 +9,6 @@ - diff --git a/mes/qd/src/views/wms/scheduler_manage/region/index.vue b/mes/qd/src/views/wms/scheduler_manage/region/index.vue index 6e18fc58..6952b258 100644 --- a/mes/qd/src/views/wms/scheduler_manage/region/index.vue +++ b/mes/qd/src/views/wms/scheduler_manage/region/index.vue @@ -70,9 +70,9 @@ - + @@ -111,9 +111,9 @@ - + @@ -150,7 +150,7 @@ const defaultForm = { product_area: 'A1', point_type_explain: null, point_status_explain: null, - merge: '1', + is_merge: '1', remark: null, create_id: null, create_name: null, diff --git a/mes/qd/src/views/wms/scheduler_manage/task/index.vue b/mes/qd/src/views/wms/scheduler_manage/task/index.vue index 7b58e463..3b962ae6 100644 --- a/mes/qd/src/views/wms/scheduler_manage/task/index.vue +++ b/mes/qd/src/views/wms/scheduler_manage/task/index.vue @@ -56,15 +56,6 @@ @keyup.enter.native="crud.toQuery" /> - - - - - - - - - + - 任务调度 + 任务调度 - - - + - @@ -242,7 +232,7 @@ import pagination from '@crud/Pagination' import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' import crudClassstandard from '@/api/wms/basedata/master/classstandard' -import {scheduler} from "./task"; +import { scheduler } from './task' export default { name: 'Task', @@ -266,7 +256,7 @@ export default { task_type: '', finished_type: '', product_area: 'A1', - task_status: '' + task_status: '-1' }, optShow: { add: false, @@ -284,6 +274,7 @@ export default { currentComponent: '', openParam: {}, create_time: [], + task_status: ['-1'], taskStatusList: [], taskTypeList: [], acsTaskTypeList: [], @@ -309,7 +300,7 @@ export default { crudTask.getAcsTaskType().then(res => { this.acsTaskTypeList = res }) - // this.crud.query.task_status = ['-1'] + this.crud.query.task_status = ['-1'] // this.crud.toQuery() }, methods: { @@ -359,12 +350,17 @@ export default { this.crud.toQuery() }, handTaskStatus(value) { - this.crud.query.more_task_status = null - if (value) { - this.crud.query.more_task_status = value.toString() - } + this.crud.query.task_status = value.toString() this.crud.toQuery() }, + acsTypeName(row, column) { + for (const item of this.acsTaskTypeList) { + if (Number(item.value) === Number(row.acs_task_type)) { + return item.label + } + } + return '' + }, formatTaskStatusName(row, column) { for (const item of this.taskStatusList) { if (item.value === row.task_status) { diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddBox.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddBox.vue index 3fd28f02..35aa17b3 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddBox.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddBox.vue @@ -67,7 +67,7 @@ - + @@ -99,6 +99,7 @@ import crudProductIn from '@/views/wms/storage_manage/product/productIn/producti const start = new Date() export default { name: 'AddBox', + dicts: ['BOX_STATUS'], components: { crudOperation, rrOperation, pagination, DateRangePicker }, cruds() { return CRUD({ @@ -155,6 +156,9 @@ export default { this.$emit('update:dialogShow', false) this.rows = this.$refs.multipleTable.selection this.$emit('tableChanged2', this.tableRadio) + }, + formterStatus(row) { + return this.dict.label.BOX_STATUS[row.status] } } } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue index 5cfb6f20..97b93c6b 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue @@ -70,8 +70,8 @@ - - + + @@ -106,6 +106,7 @@ import crudProductIn from '@/views/wms/storage_manage/product/productIn/producti const start = new Date() export default { name: 'AddDtl', + dicts: ['PCS_SAL_TYPE', 'PCS_SALE_STATUS'], components: { crudOperation, rrOperation, pagination, DateRangePicker }, cruds() { return CRUD({ @@ -160,6 +161,12 @@ export default { this.$emit('update:dialogShow', false) this.rows = this.$refs.multipleTable.selection this.$emit('tableChanged', this.tableRadio) + }, + formterType(row) { + return this.dict.label.PCS_SAL_TYPE[row.sale_type] + }, + formterStatus(row) { + return this.dict.label.PCS_SALE_STATUS[row.status] } } } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue index c16f7a52..474aade3 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue @@ -85,6 +85,7 @@ 组盘确认 + + 取消组盘 + import CRUD, { crud } from '@crud/crud' -import StructDiv from '@/views/wms/pub/StructDialog' +import StructDiv from '@/views/wms/storage_manage/product/productIn/StructDiv' import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin' import crudPoint from '@/views/wms/scheduler_manage/point/point' import AddBox from '@/views/wms/storage_manage/product/productIn/AddBox' @@ -474,6 +485,22 @@ export default { }) }) }, + cancelConfirmvehicle() { + if (!this.form.dtl_row) { + this.crud.notify('请选择一条明细', CRUD.NOTIFICATION_TYPE.INFO) + return + } + crudProductIn.cancelConfirmvehicle(this.form.dtl_row).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => { + this.form.vehicle_code = '' + this.form.bucketunique = '' + this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + }) + }) + }, sectQueryChange(val) { debugger this.sectProp = val @@ -493,20 +520,17 @@ export default { tableChanged(row) { this.form.sect_id = this.sect_id this.form.stor_id = this.stor_id - // 新增一行物料时,给行进行赋值 - for (let i = 0; i < this.form.tableMater.length; i++) { - this.form.tableMater[i].struct_id = row.point_id - this.form.tableMater[i].struct_code = row.point_code - this.form.tableMater[i].struct_name = row.point_name - this.form.tableMater[i].region_code = row.region_code - this.form.tableMater[i].region_name = row.region_name - this.form.tableMater.splice(i, 1, this.form.tableMater[i]) // 通过splice 替换数据 触发视图更新 - } - crudProductIn.divStruct(this.form).then(res => { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { + this.dis_row.struct_id = row.struct_id + this.divBtn = true + crudProductIn.divStruct(this.dis_row).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }) - this.form.tableMater = [] + }).finally(() => { + this.divBtn = false }) }, tableChanged2(row) { @@ -520,15 +544,14 @@ export default { this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO) return } - if (!this.sect_id) { - this.crud.notify('请先选择区域!', CRUD.NOTIFICATION_TYPE.INFO) - return - } // 如果勾选了,直接跳后台 if (this.form.checked) { + if (!this.sect_id) { + this.crud.notify('请先选择区域!', CRUD.NOTIFICATION_TYPE.INFO) + return + } this.divBtn = true - debugger this.dis_row.stor_id = this.stor_id.toString() this.dis_row.sect_id = this.sect_id.toString() crudProductIn.divStruct(this.dis_row).then(res => { @@ -542,6 +565,10 @@ export default { this.divBtn = false }) } else { + if (!this.stor_id) { + this.crud.notify('请先选择仓库!', CRUD.NOTIFICATION_TYPE.INFO) + return + } this.structShow = true this.$refs.child.getMsg(false) } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/StructDiv.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/StructDiv.vue new file mode 100644 index 00000000..667729b0 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/StructDiv.vue @@ -0,0 +1,208 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js b/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js index 57dccafb..e8674222 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js @@ -96,6 +96,14 @@ export function confirm(data) { }) } +export function cancelConfirmvehicle(data) { + return request({ + url: '/api/productIn/cancelConfirmvehicle', + method: 'post', + data + }) +} + export default { add, edit, @@ -108,5 +116,6 @@ export default { divStruct, unDivStruct, setPoint, - confirm + confirm, + cancelConfirmvehicle } diff --git a/mes/qd/src/views/wms/storage_manage/product/productMoreOrless/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productMoreOrless/AddDialog.vue index c1062b1f..d75d7b28 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productMoreOrless/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productMoreOrless/AddDialog.vue @@ -409,7 +409,7 @@ export default { this.nowrow = row }, async queryStruct() { - if (!this.form.mol_type) {structShow + if (!this.form.mol_type) { this.crud.notify('请先选择损溢类型!', CRUD.NOTIFICATION_TYPE.INFO) return } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java index 4ba931c8..0bbb62ac 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java @@ -349,7 +349,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i chm.put("error_code", "0"); acsToWmsService.feedDeviceStatusType(chm); feedDeviceStatusFlag = true; - } else if (this.itemProtocol.getIsonline() && (error == 1 || error == 51) && !feedDeviceStatusFlag) { + } else if (this.itemProtocol.getIsonline() && !feedDeviceStatusFlag) { JSONObject chm = new JSONObject(); chm.put("device_code", this.getDevice_code()); //设备报警 @@ -388,11 +388,12 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i } - if (mode == 1 && prepare_ready == 1 && move == 0 && in_ready == 0 && task != 0 && prepare_barcode != 99999 && (agvphase == 0x0A || agvphase == 0x21)) { + //error == 35 表示准备位扫码异常 error == 34表示对接位扫码异常 + if (mode == 1 && prepare_ready == 1 && move == 0 && in_ready == 0 && task != 0 && error != 35 && (agvphase == 0x0A || agvphase == 0x21)) { this.writing("to_agv_put_ready", "1"); - this.writing("to_agv_put_finish", "0"); + //this.writing("to_agv_put_finish", "0"); } - if (mode == 1 && prepare_ready == 1 && move == 0 && task != 0 && prepare_barcode != 99999 && (agvphase == 0x0E || agvphase == 0x25 || agvphase == 0x03)) { + if (mode == 1 && prepare_ready == 1 && move == 0 && task != 0 && error != 35 && (agvphase == 0x0E || agvphase == 0x25 || agvphase == 0x03)) { if (inst != null) { TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); if (taskDto != null) { @@ -435,7 +436,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i //agv到达送满框1或送满框2 //需要判断工作模式是联机,对接位无货,准备位就绪,对接位入箱就绪,任务号不等于0,准备位条码正常 //并且agv当前执行的指令存在并且指令号与缓存线提供的任务号一致才反馈agv允许放货 - if (mode == 1 && move == 0 && prepare_ready == 1 && in_ready == 1 && task != 0 && prepare_barcode != 99999 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { + if (mode == 1 && move == 0 && prepare_ready == 1 && in_ready == 1 && task != 0 && error != 35 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_PUT_FALL_SEND_FULL.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvTwoModeInst(agvphase, index, 0); @@ -466,7 +467,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (in_ready != 1) { noFeedMessage += "对接位入箱未就绪,"; } - if (prepare_barcode == 99999) { + if (error == 35) { noFeedMessage += "准备位条码异常,"; } this.noFeedAgvMessage = this.replace(noFeedMessage); @@ -476,20 +477,16 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i } else if (agvphase == 0x0C || agvphase == 0x23) { //agv送满框1完毕或送满框2完毕 //需要判断缓存线工作模式联机,对接位有货,任务号不为0,对接位条码正常才反馈agv以及电气放货完成 - if (mode == 1 && move == 1 && task != 0 && prepare_barcode != 99999 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { - + if (mode == 1 && in_finish == 1 && task != 0 && docking_barcode != 0 && error != 35 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { if (inst != null) { TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); if (taskDto != null) { - if (docking_barcode != 0) { - taskDto.setExt_param(new HashMap<>()); - taskDto.getExt_param().put("inbox", "" + docking_barcode); - } + taskDto.setExt_param(new HashMap<>()); + taskDto.getExt_param().put("inbox", "" + docking_barcode); taskDto.setVehicle_code(String.valueOf(docking_barcode)); taskserver.update(taskDto); } } - this.writing("to_agv_put_finish", "1"); inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); instructionService.update(inst); @@ -510,14 +507,14 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (in_ready != 1) { noFeedMessage += "对接位入箱未就绪,"; } - if (prepare_barcode == 99999) { + if (error == 35) { noFeedMessage += "准备位条码异常,"; } this.noFeedAgvMessage = this.replace(noFeedMessage); } } else if (agvphase == 0x0E || agvphase == 0x25) { //agv到达取空框1或取空框2 - if (mode == 1 && move == 1 && out_ready == 1 && task != 0 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task && prepare_barcode != 99999) { + if (mode == 1 && move == 1 && out_ready == 1 && task != 0 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { this.writing("to_agv_get_ready", "1"); inst.setExecute_status(InstActionEnum.EXECUTE_TO_GET_EMPTY.getCode()); instructionService.update(inst); @@ -532,11 +529,8 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (move != 1) { noFeedMessage += "对接位光电无货,"; } - if (prepare_ready != 1) { - noFeedMessage += "准备位未就绪,"; - } - if (prepare_barcode == 99999) { - noFeedMessage += "对接位条码异常,"; + if (out_ready != 1) { + noFeedMessage += "对接位出箱未就绪,"; } this.noFeedAgvMessage = this.replace(noFeedMessage); } @@ -589,9 +583,9 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i */ if (agvphase == 0x03) { //缓存线出满框 到达取货点 - if (mode == 1 && move == 1 && out_ready == 1 && task != 0 && docking_barcode != 99999 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { + if (mode == 1 && move == 1 && out_ready == 1 && task != 0 && error != 34 && ObjectUtil.isNotEmpty(inst) && Integer.parseInt(inst.getInstruction_code()) == task) { this.writing("to_agv_get_ready", "1"); - this.writing("to_agv_put_finish", "0"); + //this.writing("to_agv_put_finish", "0"); inst.setExecute_status(InstActionEnum.EXECUTE_TO_GET.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvTwoModeInst(agvphase, index, 0); @@ -618,13 +612,10 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (move != 0) { noFeedMessage += "对接位光电有货,"; } - if (prepare_ready != 1) { - noFeedMessage += "准备位未就绪,"; - } if (out_ready != 1) { noFeedMessage += "对接位出箱未就绪,"; } - if (prepare_barcode == 99999) { + if (error == 35) { noFeedMessage += "准备位条码异常,"; } this.noFeedAgvMessage = this.replace(noFeedMessage); @@ -633,7 +624,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i } } else if (agvphase == 0x05) { //缓存线出满框 取货完毕 - if (mode == 1 && move == 0 && prepare_barcode != 99999 && ObjectUtil.isNotEmpty(inst)) { + if (mode == 1 && move == 0 && ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status(InstActionEnum.EXECUTE_GET_FINISH.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvTwoModeInst(agvphase, index, 0); @@ -653,9 +644,6 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (move != 0) { noFeedMessage += "对接位光电有货,"; } - if (prepare_barcode == 99999) { - noFeedMessage += "对接位条码异常,"; - } this.noFeedAgvMessage = this.replace(noFeedMessage); } } else if (agvphase == 0x13 || agvphase == 0x17) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/ItemProtocol.java index c7e7e6fd..66e3507d 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/ItemProtocol.java @@ -43,25 +43,25 @@ public class ItemProtocol { //任务类型 public static String item_task_type = "task_type"; //物料规格 - public static String item_material_spec1= "material_spec1"; + public static String item_material_spec1 = "material_spec1"; - public static String item_material_spec2= "material_spec2"; + public static String item_material_spec2 = "material_spec2"; - public static String item_material_spec3= "material_spec3"; + public static String item_material_spec3 = "material_spec3"; - public static String item_material_spec4= "material_spec4"; + public static String item_material_spec4 = "material_spec4"; - public static String item_material_spec5= "material_spec5"; + public static String item_material_spec5 = "material_spec5"; - public static String item_material_spec6= "material_spec6"; + public static String item_material_spec6 = "material_spec6"; - public static String item_material_spec7= "material_spec7"; + public static String item_material_spec7 = "material_spec7"; - public static String item_material_spec8= "material_spec8"; + public static String item_material_spec8 = "material_spec8"; - public static String item_material_spec9= "material_spec9"; + public static String item_material_spec9 = "material_spec9"; - public static String item_material_spec10= "material_spec10"; + public static String item_material_spec10 = "material_spec10"; //准备位条码 public static String item_prepare_barcode = "prepare_barcode"; //对接位条码 @@ -163,45 +163,45 @@ public class ItemProtocol { public static String item_to_pause_out_check = "to_pause_out_check"; //物料规格 - public static String item_to_material_spec1= "to_material_spec1"; + public static String item_to_material_spec1 = "to_material_spec1"; - public static String item_to_material_spec2= "to_material_spec2"; + public static String item_to_material_spec2 = "to_material_spec2"; - public static String item_to_material_spec3= "to_material_spec3"; + public static String item_to_material_spec3 = "to_material_spec3"; - public static String item_to_material_spec4= "to_material_spec4"; + public static String item_to_material_spec4 = "to_material_spec4"; - public static String item_to_material_spec5= "to_material_spec5"; + public static String item_to_material_spec5 = "to_material_spec5"; - public static String item_to_material_spec6= "to_material_spec6"; + public static String item_to_material_spec6 = "to_material_spec6"; - public static String item_to_material_spec7= "to_material_spec7"; + public static String item_to_material_spec7 = "to_material_spec7"; - public static String item_to_material_spec8= "to_material_spec8"; + public static String item_to_material_spec8 = "to_material_spec8"; - public static String item_to_material_spec9= "to_material_spec9"; + public static String item_to_material_spec9 = "to_material_spec9"; - public static String item_to_material_spec10= "to_material_spec10"; + public static String item_to_material_spec10 = "to_material_spec10"; - public static String item_to_material_spec11= "to_material_spec11"; + public static String item_to_material_spec11 = "to_material_spec11"; - public static String item_to_material_spec12= "to_material_spec12"; + public static String item_to_material_spec12 = "to_material_spec12"; - public static String item_to_material_spec13= "to_material_spec13"; + public static String item_to_material_spec13 = "to_material_spec13"; - public static String item_to_material_spec14= "to_material_spec14"; + public static String item_to_material_spec14 = "to_material_spec14"; - public static String item_to_material_spec15= "to_material_spec15"; + public static String item_to_material_spec15 = "to_material_spec15"; - public static String item_to_material_spec16= "to_material_spec16"; + public static String item_to_material_spec16 = "to_material_spec16"; - public static String item_to_material_spec17= "to_material_spec17"; + public static String item_to_material_spec17 = "to_material_spec17"; - public static String item_to_material_spec18= "to_material_spec18"; + public static String item_to_material_spec18 = "to_material_spec18"; - public static String item_to_material_spec19= "to_material_spec19"; + public static String item_to_material_spec19 = "to_material_spec19"; - public static String item_to_material_spec20= "to_material_spec20"; + public static String item_to_material_spec20 = "to_material_spec20"; //准备位条码准备 public static String item_to_prepare_barcode_write = "to_prepare_barcode_write"; @@ -271,7 +271,6 @@ public class ItemProtocol { public static String item_to_barcode30 = "to_barcode30"; - private HailiangAutoCacheLineDeviceDriver driver; public ItemProtocol(HailiangAutoCacheLineDeviceDriver driver) { @@ -285,6 +284,7 @@ public class ItemProtocol { public int getError() { return this.getOpcIntegerValue(item_error); } + public int getMode() { return this.getOpcIntegerValue(item_mode); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java index 9ac4a5ae..3d963e86 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java @@ -341,7 +341,7 @@ public class HailiangEngravingMachineDeviceDriver extends AbstractOpcDeviceDrive } // 修改工单状态为生产中 - if (mode == 1 && order > 0 && order_now == 0) { + if (mode == 1 && order > 0) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_device/HailiangOldSpecialDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_device/HailiangOldSpecialDeviceDriver.java index 95efe83a..57db38ab 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_device/HailiangOldSpecialDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_device/HailiangOldSpecialDeviceDriver.java @@ -211,7 +211,7 @@ public class HailiangOldSpecialDeviceDriver extends AbstractOpcDeviceDriver impl } // 修改工单状态为生产中 - if (mode == 1 && order > 0 && now_order_prod_num == 0) { + if (mode == 1 && order > 0 && order_prod_allnum > 0) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { @@ -222,7 +222,7 @@ public class HailiangOldSpecialDeviceDriver extends AbstractOpcDeviceDriver impl } //修改工单状态为自动完成 - if (mode == 1 && finish != last_finish && finish == 1 && order > 0) { + if (mode == 1 && finish != last_finish && finish == 1 && order > 0 && now_order_prod_num == order_prod_allnum) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_full_station/HailiangOldSpecialFullStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_full_station/HailiangOldSpecialFullStationDeviceDriver.java index 77cfd1ea..7b68c90b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_full_station/HailiangOldSpecialFullStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_full_station/HailiangOldSpecialFullStationDeviceDriver.java @@ -304,30 +304,6 @@ public class HailiangOldSpecialFullStationDeviceDriver extends AbstractOpcDevice } return false; } -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// //判断是否需要AGV搬运 需要就申请任务 不需要不申请 -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(this.getOrder())); -// if (produceshiftorderDto != null && StrUtil.equals(produceshiftorderDto.getIs_needmove(), StatusEnum.NEED_MOVE.getCode())) { -// JSONObject reqParam = new JSONObject(); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("type", StatusEnum.FULL_REQ.getCode()); -// reqParam.put("quantity", this.getFull_number()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { -// JSONObject resp = JSONObject.parseObject(httpResponse.body()); -// if (resp.getInteger("status") == 200) { -// requireSucess = true; -// return true; -// } -// } -// } -// return false; -// } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_pour_station/HailiangOldSpecialPourStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_pour_station/HailiangOldSpecialPourStationDeviceDriver.java index abeb5904..9e5263f1 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_pour_station/HailiangOldSpecialPourStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_old_special_pour_station/HailiangOldSpecialPourStationDeviceDriver.java @@ -281,28 +281,6 @@ public class HailiangOldSpecialPourStationDeviceDriver extends AbstractOpcDevice } return false; } -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// if (produceshiftorderDto != null && StrUtil.equals(produceshiftorderDto.getIs_needmove(), StatusEnum.NEED_MOVE.getCode())) { -// JSONObject reqParam = new JSONObject(); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("type", StatusEnum.LACK_REQ.getCode()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (httpResponse != null && httpResponse.getStatus() == 200) { -// JSONObject resp = JSONObject.parseObject(httpResponse.body()); -// if (resp.getInteger("status") == 200) { -// requireSucess = true; -// return true; -// } -// } -// } -// return false; -// } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java index 16259430..2c38fafa 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java @@ -327,7 +327,7 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i } // 修改工单状态为生产中 - if (mode == 1 && order > 0 && order_now == 0) { + if (mode == 1 && order > 0) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { @@ -537,26 +537,6 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i } return false; } -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// TaskDto taskDto = taskService.findByStartCode(device_code); -// if (produceshiftorderDto != null && produceshiftorderDto.getIs_needmove().equals(StatusEnum.NEED_MOVE.getCode()) && taskDto == null) { -// JSONObject reqParam = new JSONObject(); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("type", StatusEnum.BZ_EMPTY_REQ.getCode()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { -// requireSucess = true; -// return true; -// } -// } -// return false; -// } } /** @@ -587,29 +567,6 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i } return false; } -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// TaskDto taskDto = taskService.findByNextCode(device_code); -// if (produceshiftorderDto != null && produceshiftorderDto.getIs_needmove().equals(StatusEnum.NEED_MOVE.getCode()) && taskDto == null) { -// JSONObject reqParam = new JSONObject(); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("type", StatusEnum.BZ_FULL_REQ.getCode()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { -// JSONObject resp = JSONObject.parseObject(httpResponse.body()); -// if (resp.getInteger("status") == 200) { -// requireSucess = true; -// return true; -// } -// } -// } -// return false; -// } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java index 8c069a4e..2a2a8962 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java @@ -219,7 +219,7 @@ public class HailiangSpecialDeviceDriver extends AbstractOpcDeviceDriver impleme } // 修改工单状态为生产中 - if (mode == 1 && order > 0 && now_order_prod_num == 0) { + if (mode == 1 && order > 0 && order_prod_allnum > 0) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java index 08c2bbbd..5702b9f1 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java @@ -284,7 +284,6 @@ public class HailiangSpecialFullStationDeviceDriver extends AbstractOpcDeviceDri * @return */ public synchronized boolean apply_task() { - if (redisUtils.hasKey("apply:" + this.device_code)) { return false; } else { @@ -308,31 +307,6 @@ public class HailiangSpecialFullStationDeviceDriver extends AbstractOpcDeviceDri } return false; } - -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// //判断是否需要AGV搬运 需要就申请任务 不需要不申请 -// JSONObject reqParam = new JSONObject(); -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(this.getOrder())); -// if (produceshiftorderDto != null && StrUtil.equals(produceshiftorderDto.getIs_needmove(), StatusEnum.NEED_MOVE.getCode())) { -// reqParam.put("type", StatusEnum.FULL_REQ.getCode()); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("quantity", this.getFull_number()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { -// JSONObject resp = JSONObject.parseObject(httpResponse.body()); -// if (resp.getInteger("status") == 200) { -// requireSucess = true; -// return true; -// } -// } -// } -// return false; -// } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_pour_station/HailiangSpecialPourStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_pour_station/HailiangSpecialPourStationDeviceDriver.java index 7121b0e6..0a8241d0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_pour_station/HailiangSpecialPourStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_pour_station/HailiangSpecialPourStationDeviceDriver.java @@ -288,32 +288,6 @@ public class HailiangSpecialPourStationDeviceDriver extends AbstractOpcDeviceDri } return false; } -// Date date = new Date(); -// if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { -// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); -// return false; -// } else { -// ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// if (produceshiftorderDto != null && StrUtil.equals(produceshiftorderDto.getIs_needmove(), StatusEnum.NEED_MOVE.getCode())) { -// JSONObject reqParam = new JSONObject(); -// reqParam.put("device_code", this.getDevice_code()); -// reqParam.put("type", StatusEnum.LACK_REQ.getCode()); -// reqParam.put("workorder_code", this.getOrder()); -// HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); -// if (httpResponse != null && httpResponse.getStatus() == 200) { -// JSONObject resp = JSONObject.parseObject(httpResponse.body()); -// if (resp.getInteger("status") == 200) { -// requireSucess = true; -// return true; -// } else { -// message = "申请任务失败,原因:" + resp.getString("message"); -// } -// } else { -// message = "申请任务失败,原因:接口不通!"; -// } -// } -// return false; -// } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java index 78af3100..4a549692 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java @@ -314,7 +314,7 @@ public class HailiangStackingStationDriver extends AbstractOpcDeviceDriver imple } // 修改工单状态为生产中 - if (mode == 1 && order > 0 && order_now == 0) { + if (mode == 1 && order > 0) { ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); if (pdto != null) { if (pdto.getOrder_status().equals("0")) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java index ebbb90a7..8f481493 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -348,4 +348,6 @@ public interface InstructionService { * @param dto */ void removeCacheLinePhase(Instruction dto); + + Instruction findInstByPutDeviceCode(String put_device_code); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 14ac7ffc..e06f704c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -1021,6 +1021,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu deviceService.changeDeviceStatus(jo1); this.update(entity); + removeCacheLinePhase(entity); } @Override @@ -1434,11 +1435,28 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu if (put_device != null && put_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) put_device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(0, 0, null); + if (hailiangAutoCacheLineDeviceDriver.getTask() != 0 && hailiangAutoCacheLineDeviceDriver.getTask() == Integer.parseInt(dto.getInstruction_code())) { + hailiangAutoCacheLineDeviceDriver.writing("to_task_finish", "1"); + } } if (start_device != null && next_device != null && start_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver && next_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) start_device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(0, 0, null); + if (hailiangAutoCacheLineDeviceDriver.getTask() != 0 && hailiangAutoCacheLineDeviceDriver.getTask() == Integer.parseInt(dto.getInstruction_code())) { + hailiangAutoCacheLineDeviceDriver.writing("to_task_finish", "1"); + } } } } + + @Override + public Instruction findInstByPutDeviceCode(String put_device_code) { + return Optional + .ofNullable(this.instructions) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(i -> i.getPut_device_code().equals(put_device_code)) + .findFirst() + .orElse(null); + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 5ab56b91..81619542 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -574,6 +574,8 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { } Instruction dto = instructionService.createInstDtoByTask(taskDto, link_no); instructionService.create(dto); + taskDto.setTask_status(StatusEnum.TASK_RUNNING.getCode()); + this.update(taskDto); } if (tasksByLinkNum.size() == 2) { TaskDto taskDto1 = tasksByLinkNum.get(0); @@ -589,6 +591,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { Instruction dto1 = instructionService.createInstDtoByTask(taskDto1, link_no); Instruction dto2 = instructionService.createInstDtoByTask(taskDto2, link_no); instructionService.createTwoInst(dto1, dto2); + taskDto1.setTask_status(StatusEnum.TASK_RUNNING.getCode()); + taskDto1.setUpdate_time(DateUtil.now()); + this.update(taskDto1); + taskDto2.setTask_status(StatusEnum.TASK_RUNNING.getCode()); + taskDto2.setUpdate_time(DateUtil.now()); + this.update(taskDto2); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index e587cd25..4548932b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -5,8 +5,11 @@ import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.acsEnum.AgvTypeEnum; import org.nl.acs.acsEnum.StatusEnum; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_auto_cache_line.HailiangAutoCacheLineDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.system.util.CodeUtil; @@ -29,6 +32,8 @@ public class AutoCreateInst { private TaskService taskService; @Autowired private InstructionService instructionService; + @Autowired + private DeviceAppService deviceAppService; /** @@ -57,7 +62,7 @@ public class AutoCreateInst { .orElse(new ArrayList<>()) .stream() .collect(Collectors.groupingBy(TaskDto::getLink_num)); - + HailiangAutoCacheLineDeviceDriver hailiangAutoCacheLineDeviceDriver; //遍历分组任务 如果任务数为2则是下发双任务,如果任务数为1 则下发单任务 for (Map.Entry> task_values : link_num_tasks.entrySet()) { List tasks = @@ -81,6 +86,31 @@ public class AutoCreateInst { if (StrUtil.equals(taskDto.getIs_send(), StatusEnum.NO_SEND.getCode())) { continue; } + + //单入任务 判断缓存线是否有任务 + String task_type = taskDto.getTask_type(); + if (StrUtil.equals(task_type, AgvTypeEnum.NB_TYPE_3.getAgvInstType())) { + String put_device_code = taskDto.getPut_device_code(); + Device device = deviceAppService.findDeviceByCode(put_device_code); + if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); + if (hailiangAutoCacheLineDeviceDriver.getTask() != 0) { + continue; + } + } + } + //单工任务 判断缓存线是否有任务 + if (StrUtil.equals(task_type, AgvTypeEnum.NB_TYPE_2.getAgvInstType())) { + String start_device_code = taskDto.getStart_device_code(); + Device device = deviceAppService.findDeviceByCode(start_device_code); + if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); + if (hailiangAutoCacheLineDeviceDriver.getTask() != 0) { + continue; + } + } + } + //生产指令关联编号 String link_no = CodeUtil.getNewCode("LINK_NO"); @@ -99,11 +129,30 @@ public class AutoCreateInst { taskService.update(taskDto); } else if (tasks.size() == TASK_SIZE_2) { - //生产指令关联编号 - String link_no = CodeUtil.getNewCode("LINK_NO"); TaskDto taskDto1 = tasks.get(0); TaskDto taskDto2 = tasks.get(1); + + //关联编号一致 任务类型不一致 不生成任务 + if (!taskDto1.getTask_type().equals(taskDto2.getTask_type())) { + continue; + } + + //如果是双入任务 则判断缓存线是否有任务 + if (StrUtil.equals(taskDto1.getTask_type(), AgvTypeEnum.NB_TYPE_4.getAgvInstType())) { + Device device = deviceAppService.findDeviceByCode(taskDto1.getPut_device_code()); + if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); + if (hailiangAutoCacheLineDeviceDriver.getTask() != 0) { + continue; + } + } + } + + //生产指令关联编号 + String link_no = CodeUtil.getNewCode("LINK_NO"); + + Instruction instDto1 = instructionService.createInstDtoByTask(taskDto1, link_no); Instruction instDto2 = instructionService.createInstDtoByTask(taskDto2, link_no);