From d5d4f74b5cac8f338e60b5c8f521c342964bce45 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 24 May 2023 09:27:37 +0800 Subject: [PATCH 1/8] =?UTF-8?q?rev:=20=E4=BB=A3=E7=A0=81=E9=94=99=E4=B9=B1?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/SectattrController.java | 4 +- .../service/storage/dao/StIvtStructattr.java | 2 + .../impl/StIvtSectattrServiceImpl.java | 2 +- .../service/task/dao/SchBaseTask.java | 2 + .../IStivtlostorivnCpInController.java | 24 ++ .../iostorInv/IStIvtIostorinvCpService.java | 27 +++ .../iostorInv/dao/StIvtIostorinvdisCp.java | 2 + .../iostorInv/dao/StIvtIostorinvdtlCp.java | 2 + .../mapper/xml/StIvtIostorinvdtlCpMapper.xml | 2 +- .../impl/StIvtIostorinvCpServiceImpl.java | 226 +++++++++++++++++- .../util/impl/DivRuleCpServiceImpl.java | 3 +- mes/qd/src/api/wms/basedata/st/sectattr.js | 2 +- .../product/productIn/AddDialog.vue | 26 +- .../product/productIn/DivDialog.vue | 69 +++--- .../product/productIn/index.vue | 6 +- .../product/productIn/productin.js | 31 ++- 16 files changed, 356 insertions(+), 74 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/SectattrController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/SectattrController.java index 97e0db90..8b0df038 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/SectattrController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/SectattrController.java @@ -72,10 +72,10 @@ public class SectattrController { return new ResponseEntity<>(HttpStatus.OK); } - @GetMapping("/getSect") + @PostMapping("/getSect") @Log("查询库区下拉框") @ApiOperation("查询库区下拉框") - public ResponseEntity querySect(@RequestBody(required = false) JSONObject query) { + public ResponseEntity querySect(@RequestBody JSONObject query) { List list = isectattrService.getSect(query); return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dao/StIvtStructattr.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dao/StIvtStructattr.java index 7fa3e8c8..97d11d6a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dao/StIvtStructattr.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dao/StIvtStructattr.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; @@ -18,6 +19,7 @@ import java.util.Date; * @since 2023-05-04 */ @Data +@Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @TableName("st_ivt_structattr") public class StIvtStructattr implements Serializable { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtSectattrServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtSectattrServiceImpl.java index 96a9083c..b8a3a07f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtSectattrServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtSectattrServiceImpl.java @@ -120,7 +120,7 @@ public class StIvtSectattrServiceImpl extends ServiceImpl(); for (Map map : sectList) { Map sect_cas = new HashMap<>(); - sect_cas.put("value", map.get("sect_id")); + sect_cas.put("value", String.valueOf(map.get("sect_id"))); sect_cas.put("label", map.get("sect_name")); sect_ja.add(sect_cas); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java index 47307911..897aeee2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java @@ -7,6 +7,7 @@ import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; /** *

@@ -17,6 +18,7 @@ import lombok.EqualsAndHashCode; * @since 2023-05-11 */ @Data +@Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @TableName("sch_base_task") public class SchBaseTask implements Serializable { 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 580a8248..457e6fc6 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 @@ -98,4 +98,28 @@ public class IStivtlostorivnCpInController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/unDivStruct") + @Log("取消分配") + @ApiOperation("取消分配") + public ResponseEntity unDivStruct(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.unDivStruct(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/setPoint") + @Log("设置起点") + @ApiOperation("设置起点") + public ResponseEntity setPoint(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.setPoint(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("强制确认") + @ApiOperation("强制确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + } 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 479c8aed..1ef898a0 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 @@ -117,4 +117,31 @@ public interface IStIvtIostorinvCpService extends IService { * } */ void divStruct(JSONObject whereJson); + + /** + * 取消分配 + * @param whereJson + * { + * 分配明细 + * } + */ + void unDivStruct(JSONObject whereJson); + + /** + * 设置起点 + * @param whereJson + * { + * 分配明细 + * } + */ + void setPoint(JSONObject whereJson); + + /** + * 强制确认 + * @param whereJson + * { + * "iostorinv_id": 主表标识 + * } + */ + void confirm(JSONObject whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdisCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdisCp.java index 457de168..5ca546b0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdisCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdisCp.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,6 +28,7 @@ public class StIvtIostorinvdisCp implements Serializable { /** * 出入单分配标识 */ + @TableId private String iostorinvdis_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdtlCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdtlCp.java index 8405ece2..22ec712c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdtlCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/StIvtIostorinvdtlCp.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import lombok.experimental.Accessors; @@ -25,6 +26,7 @@ public class StIvtIostorinvdtlCp implements Serializable { /** * 出入单明细标识 */ + @TableId private String iostorinvdtl_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvdtlCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvdtlCpMapper.xml index c4c6e44b..5e4e5c63 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvdtlCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvdtlCpMapper.xml @@ -76,7 +76,7 @@ AND mst.bill_code =#{bill_code} - AND mst.bill_code =#{iostorinv_id} + AND mst.iostorinv_id =#{iostorinv_id} order by dtl.seq_no ASC 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 a204117e..9ab1c117 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 @@ -1,7 +1,9 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -11,6 +13,8 @@ import io.jsonwebtoken.lang.Assert; import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; @@ -23,7 +27,15 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattr import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +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.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto; +import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService; @@ -41,7 +53,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -79,6 +94,14 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))); + if (ObjectUtil.isNotEmpty(disDao.getStruct_code())) throw new BadRequestException("此明细已分配"); String struct_id = whereJson.getString("struct_id"); StIvtStructattr attrDao = new StIvtStructattr(); @@ -359,6 +386,196 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) + ); + if (ObjectUtil.isEmpty(disDao)) throw new BadRequestException("分配明细不存在!"); + + + SchBaseTask taskDao = iSchBaseTaskService.getOne( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_id, disDao.getTask_id()) + .gt(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()) + ); + if (ObjectUtil.isNotEmpty(taskDao)) throw new BadRequestException("任务已下发,不可取消!"); + + // 2.更新分配明细 + iStIvtIostorinvdisdtlCpService.update( + new StIvtIostorinvdisdtlCp() + .setStruct_name("") + .setStruct_code("") + .setStruct_id("") + .setSect_id("") + .setSect_code("") + .setSect_name(""), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id()) + ); + + // 3.更新任务 + iSchBaseTaskService.update( + new SchBaseTask().setIs_delete(true), + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_id, disDao.getTask_id()) + .lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode()) + ); + + // 解锁货位 + iStIvtStructattrService.update( + new StIvtStructattr() + .setLock_type("1") // TODO 暂时写死 + .setInv_code("") + .setInv_type("") + .setInv_id(""), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, disDao.getStruct_code()) + ); + + // 4.更新分配 + iostorinvdisCpService.updateById( + disDao.setStruct_name("").setStruct_code("") + .setStruct_id("").setSect_id("") + .setSect_code("").setSect_name("") + .setPoint_id("").setPoint_code("") + .setPoint_name("") + ); + + // 5.更新明细 + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id()) + ); + + if (StrUtil.equals(dtlDao.getBill_status(), IOSEnum.BILL_STATUS.code("生成"))) { + throw new BadRequestException("没有可取消的分配明细!"); + } + + dtlDao.setAssign_qty(NumberUtil.sub(dtlDao.getAssign_qty(),disDao.getReal_qty())); + dtlDao.setUnassign_qty(disDao.getReal_qty()); + + if (dtlDao.getAssign_qty().doubleValue() == 0) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + } else if (dtlDao.getAssign_qty().doubleValue() > 0) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + iostorinvdtlCpService.updateById(dtlDao); + + // 6.更新主表 + updateMst(dtlDao.getIostorinv_id()); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void setPoint(JSONObject whereJson) { + StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id")); + + // 1.校验是否设置过起点 + if (ObjectUtil.isNotEmpty(disDao.getPoint_id())) throw new BadRequestException("此明细已生成任务!"); + + // 2.下发任务 + SchBasePoint pointDao = iSchBasePointService.getOne( + new QueryWrapper().lambda() + .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) + ); + + PointEvent event = PointEvent.builder() + .type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode()) + .point_code1(disDao.getStruct_code()) + .point_code2(pointDao.getPoint_code()) + .callback((Consumer) disDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 3.更新分配表 + iostorinvdisCpService.updateById( + disDao.setPoint_id(pointDao.getPoint_id()) + .setPoint_code(pointDao.getPoint_code()) + .setPoint_name(pointDao.getPoint_name()) + ); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(JSONObject whereJson) { + + // 1.更新主表为完成 + StIvtIostorinvCp mstDao = this.getById(whereJson.getString("iostorinv_id")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + mstDao.setConfirm_id(SecurityUtils.getCurrentUserId()); + mstDao.setConfirm_name(SecurityUtils.getCurrentNickName()); + mstDao.setConfirm_time(DateUtil.now()); + this.updateById(mstDao); + + // 2.判断所有明细是否为分配完 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + boolean is_dis = dtlDaoList.stream() + .anyMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (!is_dis) throw new BadRequestException("请先分配单据!"); + + // 3.更新明细表为完成 + iostorinvdtlCpService.update( + new StIvtIostorinvdtlCp() + .setBill_status(IOSEnum.BILL_STATUS.code("完成")), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + // 3.更新任务为完成、更新库存 + List disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + Map> collect = disDaoList.stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getTask_id)); + + for (String task_id : collect.keySet()) { + // 1)更新任务为完成 + SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); + // 已完成则不更新 + if (StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) continue; + + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + iSchBaseTaskService.updateById(taskDao); + + // 2)更新库存 + List disList = collect.get(task_id); + for (StIvtIostorinvdisCp dao : disList) { + // 根据托盘对应货位更新 + structivtflowService.recordStructivtFlow( + StIvtStructivtflowDto.builder() + .bill_code(mstDao.getBill_code()) + .change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND) + .bill_table("st_ivt_iostorinv_cp") + .material_id(dao.getMaterial_id()) + .pcsn(dao.getPcsn()) + .struct_code(dao.getStruct_code()) + .result_qty(dao.getReal_qty()) + .change_qty(dao.getReal_qty()) + .task_id(dao.getTask_id()) + .storagevehicle_code(dao.getStoragevehicle_code()) + .build() + ); + } + } + + } + @NotNull private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) { JSONArray rows = whereJson.getJSONArray("tableData"); @@ -493,6 +710,13 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))); + + if (is_create) mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + this.updateById(mstDao); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java index efd3bacf..c87e99be 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java @@ -45,7 +45,8 @@ public class DivRuleCpServiceImpl implements DivRuleCpService { .isNull(StIvtStructattr::getStoragevehicle_code) .eq(StIvtStructattr::getIs_used, "1") //TODO 暂时写死 .eq(StIvtStructattr::getLock_type, "1") //TODO 暂时写死 - ); + .orderByAsc(StIvtStructattr::getStruct_code) + ,false); break; } diff --git a/mes/qd/src/api/wms/basedata/st/sectattr.js b/mes/qd/src/api/wms/basedata/st/sectattr.js index 5ffa83c6..2b5f2936 100644 --- a/mes/qd/src/api/wms/basedata/st/sectattr.js +++ b/mes/qd/src/api/wms/basedata/st/sectattr.js @@ -27,7 +27,7 @@ export function edit(data) { export function getSect(data) { return request({ url: 'api/sectattr/getSect', - method: 'get', + method: 'post', data }) } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue index 16f02500..3036be26 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue @@ -62,28 +62,6 @@ /> - - - - - - - - - - { + crudStorattr.getStor({ 'stor_type': '4' }).then(res => { this.storlist = res.content }) }, 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 fda420da..38604026 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 @@ -487,25 +487,6 @@ export default { row.qty = row.storage_qty this.bucketuniqueObj = row }, - divPoint() { - if (!this.form.point_code) { - this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO) - return - } - if (this.form.tableMater.length === 0) { - this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO) - return - } - crudProductIn.divPoint(this.form).then(res => { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { - this.openParam = res - }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.crud.notify('设置起点成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - }) - }) - }, divStruct() { if (this.dis_row === null) { this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO) @@ -519,17 +500,16 @@ export default { if (this.form.checked) { this.divBtn = true + debugger this.dis_row.stor_id = this.stor_id this.dis_row.sect_id = this.sect_id crudProductIn.divStruct(this.dis_row).then(res => { - /* crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).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) }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.divBtn = false - this.crud.notify('分配货位成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - })*/ }).finally(() => { this.divBtn = false }) @@ -539,23 +519,36 @@ export default { } }, unDivStruct() { - if (this.form.tableMater.length <= 0) { - this.crud.notify('不存在载具明细!', CRUD.NOTIFICATION_TYPE.INFO) + if (this.dis_row === null) { + this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO) return } - const flag = this.form.tableMater.some(mater => !mater.struct_code) - if (flag) { - this.crud.notify('明细存在未分配货位!', CRUD.NOTIFICATION_TYPE.INFO) - return - } - // 如果勾选了,直接跳后台 - crudProductIn.unDivStruct(this.form).then(res => { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { + + crudProductIn.unDivStruct(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) }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.crud.notify('取消分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + }) + }, + divPoint() { + if (!this.form.point_code) { + this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO) + return + } + if (this.dis_row === null) { + this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO) + return + } + this.dis_row.point_code = this.form.point_code + crudProductIn.setPoint(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) }) }) } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue index e6b3397f..072d186d 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue @@ -235,7 +235,7 @@ import DateRangePicker from '@/components/DateRangePicker/index' import AddDialog from '@/views/wms/storage_manage/product/productIn/AddDialog' import DivDialog from '@/views/wms/storage_manage/product/productIn/DivDialog' import ViewDialog from '@/views/wms/storage_manage/product/productIn/ViewDialog' -import crudStorattr from '@/api/wms/basedata/st/storattr' +import crudStorattr, {getStor} from '@/views/wms/storage_manage/basedata/basedata' import { mapGetters } from 'vuex' export default { @@ -281,7 +281,7 @@ export default { } }, created() { - crudStorattr.queryStor().then(res => { + crudStorattr.getStor({ 'stor_type': '4' }).then(res => { this.storlist = res.content }) }, @@ -341,7 +341,7 @@ export default { this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO) return } - crudProductIn.confirm(this.currentRow).then(res => { + crudProductIn.confirm({ 'iostorinv_id': this.currentRow.iostorinv_id }).then(res => { this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.toQuery() }) 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 5aaf216f..57dccafb 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 @@ -66,7 +66,31 @@ export function getSect(data) { export function divStruct(data) { return request({ - url: '/api/stIvtSectattr/divStruct', + url: '/api/productIn/divStruct', + method: 'post', + data + }) +} + +export function unDivStruct(data) { + return request({ + url: '/api/productIn/unDivStruct', + method: 'post', + data + }) +} + +export function setPoint(data) { + return request({ + url: '/api/productIn/setPoint', + method: 'post', + data + }) +} + +export function confirm(data) { + return request({ + url: '/api/productIn/confirm', method: 'post', data }) @@ -81,5 +105,8 @@ export default { vehicleCheck, confirmvehicle, getSect, - divStruct + divStruct, + unDivStruct, + setPoint, + confirm } From f581a3c4d1341a5bd3baf3d4253c33369480c678 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 24 May 2023 09:28:14 +0800 Subject: [PATCH 2/8] =?UTF-8?q?rev:=20=E4=BB=A3=E7=A0=81=E9=94=99=E4=B9=B1?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 9ab1c117..7d72874b 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 @@ -595,6 +595,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl Date: Wed, 24 May 2023 09:33:14 +0800 Subject: [PATCH 3/8] =?UTF-8?q?rev:=E5=8E=9F=E6=9D=90=E6=96=99=E5=87=BA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/StIvtIostorinvOutYlServiceImpl.java | 36 +++++ .../impl/StIvtIostorinvYlServiceImpl.java | 35 ++++- .../structIvt/dao/StIvtStructivtYl.java | 11 +- .../wms/old_manage/old_package/index.vue | 143 +++++++++--------- .../rawproduct/rawProductIn/index.vue | 4 +- .../rawproduct/rawProductOut/AddDialog.vue | 4 +- .../rawproduct/rawProductOut/index.vue | 4 +- 7 files changed, 154 insertions(+), 83 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java index 5f4242fc..00f92d90 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java @@ -16,6 +16,8 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.pcs_manage.service.purchase.IPcsIfPurchaseorderService; @@ -74,6 +76,9 @@ public class StIvtIostorinvOutYlServiceImpl extends ServiceImpl { + double need_qty = dtl.getPlan_qty().doubleValue(); + List list = structivtYlService.list(new QueryWrapper() + .eq("material_id", dtl.getMaterial_id()) + .eq("stor_id", mst.getStor_id()) + .eq("workshop_id", mst.getWorkshop_id())); + + MdMeMaterialbase mater = materialbaseService.getOne(new QueryWrapper().eq("material_id", dtl.getMaterial_id())); + + if (ObjectUtil.isEmpty(list)) { + throw new BadRequestException("当前仓库内不存在物料:" + mater.getMaterial_name()); + } + + for (StIvtStructivtYl ivt : list) { + //判断是否需要继续分配库存,不大于0时跳出循环 + if (need_qty > 0){ + double canuse_qty = ivt.getCanuse_qty().doubleValue(); + if (canuse_qty >= need_qty){ + //插入分配表 + + + //维护库存 + } + }else { + break; + } + } + if (need_qty > 0){ + throw new BadRequestException("物料:"+mater.getMaterial_name()+"库存不足,缺少:"+need_qty+"KG"); + } + }); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java index 357e6fa5..1e8bd5f4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.wms.storage_manage.rawmanage.service.iostorInv.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -74,7 +75,6 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); @@ -156,7 +156,36 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl().eq("struct_code", dis.getSect_code()).eq("material_id", dis.getMaterial_id())); + if (ObjectUtil.isNotEmpty(structivtYl)) { + structivtYl.setCanuse_qty(NumberUtil.add(structivtYl.getCanuse_qty(), dis.getPlan_qty())); + structivtYl.setIvt_qty(structivtYl.getCanuse_qty()); + structivtYlService.updateById(structivtYl); + } else { + structivtYlService.save(StIvtStructivtYl.builder() + .stockrecord_id(IdUtil.getStringId()) + .struct_id(dis.getStruct_id()) + .struct_code(dis.getStruct_code()) + .struct_name(dis.getStruct_name()) + .material_id(dis.getMaterial_id()) + .quality_scode(dis.getQuality_scode()) + .pcsn(dis.getPcsn()) + .ivt_level(dis.getIvt_level()) + .is_active(dis.getIs_active()) + .canuse_qty(dis.getReal_qty()) + .ivt_qty(dis.getReal_qty()) + .qty_unit_id(dis.getQty_unit_id()) + .instorage_time(DateUtil.now()) + .stor_id(mst.getStor_id()) + .workshop_id(mst.getWorkshop_id()) + .build() + ); + } + + /*//插入库存变动记录表 structivtflowService.recordStructivtFlow( StIvtStructivtflowDto.builder() .bill_code(mst.getBill_code()).change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM).bill_table("st_ivt_iostorinv_bcp") @@ -165,7 +194,7 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl - + @@ -132,19 +132,19 @@ - + - + - + @@ -163,7 +163,7 @@ - + @@ -189,12 +189,12 @@ - + - + @@ -202,13 +202,13 @@ - + - + @@ -216,7 +216,7 @@ - + @@ -248,7 +248,7 @@ - + @@ -270,29 +270,29 @@ @select="handleSelectionChange" @select-all="onSelectAll" > - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + - + - - From f73fdf49e61c601dea63e95c08560ec100167574 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Thu, 25 May 2023 19:27:14 +0800 Subject: [PATCH 8/8] =?UTF-8?q?add=20=E8=80=81=E8=BD=A6=E9=97=B4=E5=8C=85?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iliangOldLetteringPackageDeviceDriver.java | 69 +- .../ItemProtocol.java | 22 +- ...iliangLetteringPackageSsxDeviceDriver.java | 105 +-- .../HailiangOldPalletizingStationDriver.java | 47 +- .../HailiangOldStackingManipulatorDriver.java | 99 +-- ...ailiangOldUnboxingMachineDeviceDriver.java | 3 +- .../EalingMachineDeviceDriver.java | 1 + .../driver/AbstractOpcDeviceDriver.java | 7 + .../nl/acs/opc/DeviceOpcProtocolRunable.java | 9 +- .../hailiang_old_package_ssx_station.vue | 4 +- .../src/views/acs/monitor/device/index.vue | 601 ------------------ wcs/nladmin-ui/src/views/acs/order/index.vue | 40 +- .../src/views/system/monitor/device/index.vue | 42 ++ 13 files changed, 321 insertions(+), 728 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java index 5a265278..2575add0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java @@ -9,8 +9,11 @@ import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.basedriver.hailiang_one.MonitoringLargeScreenData; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.dto.DeviceErrorLogDto; @@ -19,8 +22,10 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; +import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.EalingOrderDto; import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -37,9 +42,15 @@ import java.util.Map; public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { protected ItemProtocol itemProtocol = new ItemProtocol(this); + @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); + @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); + @Autowired DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); int heartbeat = 0; @@ -47,12 +58,16 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr int error = 0; int task = 0; int move = 0; + int order = 0; + int finish = 0; String barcode,last_barcode; int last_heartbeat = 0; int last_mode = 0; int last_error = 0; int last_task = 0; + int last_finish = 0; + int last_order = 0; Boolean isonline = true; @@ -77,7 +92,8 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); error = this.itemProtocol.getError(); - + order = this.itemProtocol.getOrder(); + finish = this.itemProtocol.getOrder_finish(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } @@ -92,7 +108,33 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr } logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); } + if (finish != last_finish) { + if (mode == 2 && finish == 1) { + MonitoringLargeScreenData.orderData.put(String.valueOf(order), -1); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号finish:" + last_finish + "->" + finish); + } + // 修改工单状态为生产中 + if (mode == 2 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { + pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); + produceshiftorderService.update(pdto); + } + } + } + + //修改工单状态为自动完成 + if (mode == 2 && finish != last_finish && finish == 1 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { + produceshiftorderService.finished(pdto); + } + } + } } catch (Exception var17) { var17.printStackTrace(); @@ -117,6 +159,9 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr last_mode = mode; last_error = error; last_task = task; + last_finish = finish; + last_order = order; + } @@ -141,24 +186,30 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { - EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); - if (ealingOrderDto != null) { - String is_foreward = ealingOrderDto.getIs_foreward(); + if (dto != null) { Map map = new HashMap<>(); - map.put("to_qty", dto.getQty()); + map.put("to_clear", "1"); + map.put("to_order_qty", String.valueOf(dto.getQty())); map.put("to_order", dto.getOrder_code()); - map.put("item_to_bz_qty", dto.getPackage_qty()); - map.put("item_to_box_qty", dto.getBox_num()); + map.put("to_bz_qty", dto.getPackage_qty()); + map.put("to_box_qty", dto.getBox_num()); map.put("to_one_box_qty", dto.getOne_box_package_qty()); map.put("to_one_bag_qty", dto.getOne_package_qty()); - map.put("to_one_box_qty", dto.getOne_box_package_qty()); this.writing(map); } } @Override public void issuedOrderFinish(String autoFinish) { - + Map map = new HashMap<>(); + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + map.put("to_finished", "1"); + } else { + map.put("to_confirm_finished", "1"); + } + //map.put("to_order", "0"); + //map.put("to_clear", "1"); + this.writing(map); } @Override diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java index f0e9d9b2..9562df72 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java @@ -26,6 +26,7 @@ public class ItemProtocol { public static String item_kz_qty = "kz_qty"; public static String item_ds_qty = "ds_qty"; public static String item_bz_qty = "bz_qty"; + public static String item_bz_box_qty = "bz_box_qty"; public static String item_order_finish = "order_finish"; public static String item_order_compulsion_finish = "order_compulsion_finish"; public static String item_order = "order"; @@ -91,6 +92,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_bz_qty); } + public int getBz_box_qty() { + return this.getOpcIntegerValue(item_bz_box_qty); + } + public int getError() { return this.getOpcIntegerValue(item_error); } @@ -111,6 +116,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_order); } + public int getOrder_finish() { + return this.getOpcIntegerValue(item_order_finish); + } + //是否有货 public int hasGoods(int move) { @@ -157,12 +166,13 @@ public class ItemProtocol { list.add(new ItemDto(item_kz_error, "刻字机报警信号", "DB600.W18")); list.add(new ItemDto(item_ds_error, "点数机报警信号", "DB600.W20")); list.add(new ItemDto(item_bz_error, "包装机报警信号", "DB600.W22")); - list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.W24")); - list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.W26")); - list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W28")); - list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W30")); - list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W32")); - list.add(new ItemDto(item_order, "工单号", "DB600.D34")); + list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.D24")); + list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.D28")); + list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W32")); + list.add(new ItemDto(item_bz_box_qty, "包装箱数量", "DB600.W34")); + list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W36")); + list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W38")); + list.add(new ItemDto(item_order, "工单号", "DB600.D40")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java index 4b4ccaa7..64bb9c9c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java @@ -1,10 +1,13 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; @@ -24,6 +27,7 @@ import org.nl.acs.order.service.dto.ProduceshiftorderDto; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,6 +49,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr int heartbeat = 0; int mode = 0; + int action = 0; int error = 0; int task = 0; int move = 0; @@ -61,8 +66,8 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr Boolean isonline = true; String message = null; Boolean iserror = false; - - private int instruction_require_time_out; + private Date instruction_require_time = new Date(); + private int instruction_require_time_out = 3000; boolean requireSucess = false; private int instruction_finished_time_out; @@ -80,6 +85,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); move = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); barcode = this.itemProtocol.getBarcode(); @@ -88,11 +94,12 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } if (move != last_move){ - if(to_command != 0){ + message = null; + requireSucess =false; + if(to_command != 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ this.writing("to_command", "0"); this.writing("to_target", "0"); } - requireSucess =false; } if (error != last_error) { if (error != 0) { @@ -113,53 +120,16 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); } - if (!this.itemProtocol.getIsonline()) { - //this.setIsonline(false); - //this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { + if (mode == 0) { message = "未联机"; } else { - message = ""; Instruction instruction = null; List toInstructions; - if(move == 1 && error == 0 && barcode.length() > 0 && requireSucess == false ){ - //2305281100001 - if(barcode.trim().length() == 16){ - if(isNumeric(barcode.trim())){ - /** - * 工单为前9位 - * 第10位是否翻转 - * 第11位为前往巷道 - * 后5位为流水号 - */ - String order = barcode.trim().substring(0,9); - int isFlip = Integer.parseInt(barcode.trim().substring(9,10)); - int target = Integer.parseInt(barcode.trim().substring(10,11)); - if(isFlip>0 && target>0){ - this.writing("to_is_flip",String.valueOf(isFlip)); - this.writing("to_target", String.valueOf(target)); - this.writing("to_command","1"); - requireSucess = true; - } else { - message = "条码:"+ barcode + ",是否翻转:"+isFlip + "目标巷道:"+target; - } - - - } else { - message = "条码不为数字,无法解析"; - } - } else { - message = "条码长度不等于16,无法下发目标位置"; - } + if(action == 1 && move > 0 && error == 0 && barcode.length() > 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ + applyTarget(barcode.trim()); } - - - - } last_mode = mode; last_move = move; @@ -169,6 +139,43 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr } + public synchronized void applyTarget(String barcode) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return; + } else { + //2305281100001 + if (barcode.trim().length() == 16) { + if (isNumeric(barcode.trim())) { + /** + * 工单为前9位 + * 第10位是否翻转 + * 第11位为前往巷道 + * 后5位为流水号 + */ + String order = barcode.trim().substring(0, 9); + int isFlip = Integer.parseInt(barcode.trim().substring(9, 10)); + int target = Integer.parseInt(barcode.trim().substring(10, 11)); + if (target > 0) { + this.writing("to_is_flip", String.valueOf(isFlip)); + this.writing("to_target", String.valueOf(target)); + this.writing("to_command", "1"); + requireSucess = true; + } else { + message = "条码:" + barcode + ",是否翻转:" + isFlip + "目标巷道:" + target; + } + + + } else { + message = "条码不为数字,无法解析"; + } + } else { + message = "条码长度不等于16,无法下发目标位置"; + } + } + } + @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); @@ -178,23 +185,23 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; jo.put("hasGoods", false); - } else if (this.getMove() == 1) { + } else if (this.getMove() > 0) { move = "有货"; jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = "有托盘有货"; - jo.put("move", move); - jo.put("hasGoods", true); } jo.put("move", move); jo.put("mode", mode); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java index 7d5a0ea4..4f708bb2 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java @@ -1,5 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -22,6 +24,8 @@ import org.nl.acs.opc.DeviceAppService; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; @@ -56,7 +60,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - + @Autowired + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); Boolean isonline = true; int hasGoods = 0; String message = null; @@ -72,7 +77,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver private int instruction_require_time_out = 3000; //请求成功标记 Boolean requireSucess = false; - + JSONArray barcodeArr = new JSONArray(); + JSONArray last_barcodeArr = new JSONArray(); String device_code; //心跳 @@ -112,25 +118,17 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver error = this.itemProtocol.getError(); boxtype = this.itemProtocol.getBoxtype(); if (mode != last_mode) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + + if(!ObjectUtil.equal(barcodeArr,last_barcodeArr)){ + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛工位当前最新条码:"+barcodeArr.toString())); } - if (number != last_number) { - logServer.deviceItemValue(this.device_code, "number", String.valueOf(number)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号number:" + last_number + "->" + number); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); + + if(number != last_number && number ==0 ){ + barcodeArr.clear(); } + } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); return; @@ -157,6 +155,9 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver this.setIserror(false); } + last_mode = mode; + last_number = number; + last_barcodeArr = barcodeArr; } protected void executing(Instruction instruction) { @@ -180,6 +181,7 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.dispose(); } @@ -192,12 +194,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; @@ -209,11 +215,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver move = "有托盘有货"; jo.put("hasGoods", true); } + jo.put("move", move); + jo.put("mode", mode); + jo.put("number", this.itemProtocol.getNumber()); + jo.put("boxType", this.itemProtocol.getBoxtype()); jo.put("isOnline", this.getIsonline()); jo.put("isError", this.getIserror()); jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); + jo.put("barcodeArr",barcodeArr); return jo; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java index 8cdd07cb..42727180 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -99,8 +100,6 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Boolean singlePlacementRequireSuccess = false; //请求码垛完成标志 Boolean stackingRequireSuccess = false; - - JSONArray barcodeArr = new JSONArray(); //当前设备状态 01代表 关机, 02代表 开机, 03代表 生产中, 04代表 待机, 05代表 异常 int status_type = 0; //上次设备状态 @@ -162,25 +161,24 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); } - if (getStation != last_getStation) { - logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); - } - if (putStation != last_putStation) { - logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); - } - if (encoder_qty != last_encoder_qty) { - logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); - } +// if (getStation != last_getStation) { +// logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); +// } +// if (putStation != last_putStation) { +// logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); +// } +// if (encoder_qty != last_encoder_qty) { +// logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); +// } +// if (boxtype != last_boxtype) { +// logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); +// } } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); - return; } if (!this.itemProtocol.getIsonline()) { this.setIsonline(false); @@ -274,7 +272,7 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive } String order = barcode.trim().substring(0,9); ProduceshiftorderDto dto =produceshiftorderService.findByCodeFromCache(order); - if(Objects.isNull(dto)){ + if(ObjectUtil.isEmpty(dto)){ message = "获取托盘信息,工单号:" + order + "未找到对应工单"; return false; } @@ -302,7 +300,10 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; if(device.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver){ hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) device.getDeviceDriver(); - if(hailiangOldPalletizingStationDriver.getNumber() == 0 ){ + if(hailiangOldPalletizingStationDriver.getNumber() == 0 && + hailiangOldPalletizingStationDriver.getMode() == 2 && + hailiangOldPalletizingStationDriver.getMove()==1 && + hailiangOldPalletizingStationDriver.getBoxtype() ==0) { targetStation = putDeviceCodeList.get(i); lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode +",未找到相同箱型放货位,分配空放货位:"+ putDeviceCodeList.get(i))); putIndex = i; @@ -362,19 +363,29 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive //暂时不反馈MES Device getDevice = deviceAppservice.findDeviceByCode(getDeviceCode); + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); HailiangLetteringPackageSsxDeviceDriver hailiangLetteringPackageSsxDeviceDriver; + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + String barcode = null; if(getDevice.getDeviceDriver() instanceof HailiangLetteringPackageSsxDeviceDriver ){ hailiangLetteringPackageSsxDeviceDriver = (HailiangLetteringPackageSsxDeviceDriver) getDevice.getDeviceDriver(); - String barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); - if(Objects.isNull(barcode)){ + barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); + if(ObjectUtil.isEmpty(barcode)){ message = "单次码垛完成,取货位:"+getDeviceCode+"条码为空"; return false; } lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode)); - barcodeArr.add(barcode); + } + + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + JSONArray arr = hailiangOldPalletizingStationDriver.getBarcodeArr(); + arr.add(barcode.trim()); + hailiangOldPalletizingStationDriver.setBarcodeArr(arr); } this.writing("to_feedback", "2"); + this.writing("to_boxType", "0"); this.setSinglePlacementRequireSuccess(true); } return true; @@ -393,22 +404,34 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); //根据kep读取到的放货工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 String putDeviceCode = putDeviceCodeList.get(getPutStation() - 1).replace("\"", ""); + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); + JSONArray ja = null; + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + ja = hailiangOldPalletizingStationDriver.getBarcodeArr(); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成ja:"+ja.toString())); + } JSONObject map = new JSONObject(); map.put("device_code", putDeviceCode); map.put("encoder_qty", String.valueOf(getEncoder_qty())); map.put("boxtype", String.valueOf(getBoxtype())); - map.put("barcodeArr",barcodeArr); + map.put("barcodeArr", String.valueOf(ja)); map.put("id", IdUtil.simpleUUID()); - JSONObject resp = acsToWmsService.stackingCompleted(map); - int code = Integer.parseInt(resp.getString("code")); - String message = resp.getString("message"); - JSONObject data = resp.getJSONObject("data"); - if (code == 200) { - this.writing("to_feedback", "3"); - this.setStackingRequireSuccess(true); - } else { - log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); - } + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成反馈:"+map)); + +// JSONObject resp = acsToWmsService.stackingCompleted(map); +// int code = Integer.parseInt(resp.getString("code")); +// String message = resp.getString("message"); +// JSONObject data = resp.getJSONObject("data"); +// if (code == 200) { +// this.writing("to_feedback", "3"); +// this.setStackingRequireSuccess(true); +// } else { +// log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); +// } + this.writing("to_feedback", "3"); + this.setStackingRequireSuccess(true); } return true; } @@ -435,16 +458,18 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.disconnect(); } @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("mode", mode == 2 ? "联机" : "未联机"); jo.put("action", action); jo.put("error", ErrorUtil.getDictDetail("jxs_error_type", String.valueOf(error))); - jo.put("barcodeArr", barcodeArr); + jo.put("getStation", this.itemProtocol.getGetStation()); + jo.put("putStation", this.itemProtocol.getPutStation()); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java index 1b22675e..d5e27a8b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java @@ -129,11 +129,12 @@ public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDri @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode == 1 ? "联机" : "未联机"); jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); jo.put("qty", qty); - jo.put("status", this.itemProtocol.getStatus()==1 ? "未知":"工作中"); + jo.put("status", this.itemProtocol.getStatus()== 0 ? "未知":"工作中"); jo.put("one_qty", this.itemProtocol.getOne_qty()); jo.put("two_qty", this.itemProtocol.getTwo_qty()); jo.put("three_qty", this.itemProtocol.getThree_qty()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java index 6782b258..ef24be19 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java @@ -246,6 +246,7 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("isOnline", this.itemProtocol.getIsonline()); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index b2680b73..7d1b2e28 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -13,6 +13,8 @@ import org.nl.acs.opc.WcsConfig; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.acs.udw.UnifiedDataAppService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; @@ -144,6 +146,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc * @param value */ public void writing(String key, String value) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String opcServerId = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcServerId); @@ -151,6 +154,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc itemMap.put(getToParam() + key, value); ReadUtil.write(itemMap, server); server.disconnect(); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发单个电气信号:" + key + ",下发电气信号值:" + value)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发单个电气信号:" + key + ",下发电气信号值:" + value); } @@ -162,6 +166,8 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc */ public void writing(Map map) { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + Map itemMap = new HashMap(); map.forEach((key, value) -> { if (ObjectUtil.isNotEmpty(value)) { @@ -170,6 +176,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc }); if (ObjectUtil.isNotEmpty(itemMap)) { this.control(itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发多个电气信号:" + itemMap)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 601d1cc9..7ea25f40 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -412,11 +412,14 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Object obj = accessor_value.getValue(relate); sb.append("key:" + relate + "value:" + obj + ";"); } - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } else { - - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } } diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue index f6ab9efc..3130ac08 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -67,8 +67,8 @@ - - + + diff --git a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue index 14249508..e69de29b 100644 --- a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -1,601 +0,0 @@ - - - - - diff --git a/wcs/nladmin-ui/src/views/acs/order/index.vue b/wcs/nladmin-ui/src/views/acs/order/index.vue index 047f7d4a..504b9dca 100644 --- a/wcs/nladmin-ui/src/views/acs/order/index.vue +++ b/wcs/nladmin-ui/src/views/acs/order/index.vue @@ -135,6 +135,27 @@ + + + + + + + + + + + + + + + + + + + + +