diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml index 0350f23..b9c5948 100644 --- a/lms/nladmin-system/nlsso-server/pom.xml +++ b/lms/nladmin-system/nlsso-server/pom.xml @@ -35,6 +35,10 @@ + org.reflections + reflections + 0.9.10 + org.codehaus.groovy groovy-all 3.0.13 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java index b566cfa..ad3cbbb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java @@ -45,8 +45,8 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { // 查询条件 LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); - String search = MapUtil.getStr(whereJson, "storagevehicle_code"); - String storagevehicle_type = MapUtil.getStr(whereJson, "storagevehicle_type"); + String search = MapUtil.getStr(whereJson, "vehicle_code"); + String storagevehicle_type = MapUtil.getStr(whereJson, "vehicle_type"); if (ObjectUtil.isNotEmpty(search)) { queryWrapper.likeRight(MdPbStoragevehicleinfo::getStoragevehicle_code, search) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index c0399be..0d3940d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -148,7 +148,7 @@ public class StructattrServiceImpl extends ServiceImpl() - .eq(Sectattr::getSect_code, dto.getSect_id()) + .eq(Sectattr::getSect_code, dto.getSect_code()) .eq(Sectattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"))); BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById(sectattr.getStor_id()); dto.setSect_id(sectattr.getSect_id()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java index d56032b..54f3f45 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; @@ -29,9 +30,13 @@ import org.nl.wms.pm_manage.service.IPdmBdWorkorderService; import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder; import org.nl.wms.record_manage.service.IMdPbRegionMemberService; import org.nl.wms.record_manage.service.dao.MdPbRegionMember; +import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.tasks.jb.JbUpAgvTask; +import org.nl.wms.system_manage.enums.TagNameEnum; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; import org.nl.wms.system_manage.service.param.ISysParamService; @@ -47,6 +52,9 @@ import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMappe import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,6 +62,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; /** * @Author: lyd @@ -100,6 +110,10 @@ public class PdaJBServiceImpl implements PdaJBService { private ISysParamService sysParamService; @Resource private IMdPbRegionMemberService regionMemberService; + @Resource + private RedissonClient redissonClient; + @Resource + private ISchBaseTaskService taskService; @Override public PdaResponse getOrderList(JSONObject whereJson) { String flag = whereJson.getString("flag"); @@ -109,117 +123,129 @@ public class PdaJBServiceImpl implements PdaJBService { return PdaResponse.requestParamOk(workorders); } + @SneakyThrows @Override @Transactional(rollbackFor = Exception.class) public PdaResponse callMaterial(JSONObject whereJson) { log.info("解包叫料,请求参数:{}", whereJson); // workorder_id、area、point_code String pointCode = whereJson.getString("point_code"); - String workorderId = whereJson.getString("workorder_id"); - PdmBdWorkorder workorder = workorderService.getById(workorderId); - if (ObjectUtil.isEmpty(workorder)) { - throw new BadRequestException("工单不存在!"); - } - if (!"1".equals(workorder.getWorkorder_status())) { - throw new BadRequestException("该工单不是未生产,无法开工!"); - } - // 出库的仓位 - Structattr outStructAttr = structattrService.getByCode(workorder.getStruct_code()); - if (ObjectUtil.isEmpty(outStructAttr)) { - throw new BadRequestException("仓位【" + workorder.getStruct_code() + "】不存在!"); - } - MdMeMaterialbase materialbase = materialbaseService.getById(workorder.getMaterial_id()); - if (ObjectUtil.isEmpty(materialbase)) { - throw new BadRequestException("物料【" + workorder.getMaterial_id() + "】不存在!"); - } - GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper() - .eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code()) - .eq(GroupPlate::getStatus, "02")); - if (ObjectUtil.isEmpty(groupPlate)) { - throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!"); - } - // 1、创建出库单、明细、分配明细 - JSONObject insertInvObj = new JSONObject(); - JSONArray tableData = new JSONArray(); - JSONObject table = new JSONObject(); - tableData.add(table); - insertInvObj.put("stor_id", outStructAttr.getStor_id()); - insertInvObj.put("stor_code", outStructAttr.getStor_code()); - insertInvObj.put("bill_status", "10"); - insertInvObj.put("total_qty", workorder.getPlan_weight()); - insertInvObj.put("detail_count", 1); - insertInvObj.put("bill_type", "1012"); - insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd")); - insertInvObj.put("tableData", tableData); - table.put("turnout_struct_code", outStructAttr.getStruct_code()); - table.put("turnout_sect_code", outStructAttr.getSect_code()); - table.put("turnout_sect_name", outStructAttr.getSect_name()); - table.put("sect_id", outStructAttr.getSect_id()); - table.put("struct_id", outStructAttr.getStruct_id()); - table.put("group_id", groupPlate.getGroup_id()); - table.put("storagevehicle_code", outStructAttr.getStoragevehicle_code()); - table.put("storagevehicle_type", workorder.getVehicle_type()); - table.put("material_id", materialbase.getMaterial_id()); - table.put("pcsn", groupPlate.getPcsn()); - table.put("qty", groupPlate.getQty()); - table.put("qty_unit_id", groupPlate.getQty_unit_id()); - table.put("qty_unit_name", groupPlate.getQty_unit_name()); - table.put("fronzen_qty", 0); - table.put("status", "01"); - table.put("material_code", materialbase.getMaterial_code()); - table.put("material_name", materialbase.getMaterial_name()); - table.put("material_spec", materialbase.getMaterial_spec()); - String invId = outBillService.insertDtl(insertInvObj); - // 调用手工分配 - JSONObject param = new JSONObject(); - JSONObject row = new JSONObject(); - JSONArray rows = new JSONArray(); - rows.add(row); - param.put("rows", rows); - IOStorInvDtl dtl = ioStorInvDtlMapper.selectOne(new LambdaQueryWrapper() - .eq(IOStorInvDtl::getIostorinv_id, invId)); - param.put("row", dtl); - row.put("storagevehicle_code", outStructAttr.getStoragevehicle_code()); - row.put("pcsn", groupPlate.getPcsn()); - row.put("qty", groupPlate.getQty()); - row.put("qty_unit_name", groupPlate.getQty_unit_name()); - row.put("frozen_qty", groupPlate.getFrozen_qty()); - row.put("struct_id", outStructAttr.getStruct_id()); - row.put("struct_code", outStructAttr.getStruct_code()); - row.put("struct_name", outStructAttr.getStruct_name()); - row.put("sect_id", outStructAttr.getSect_id()); - row.put("sect_code", outStructAttr.getSect_code()); - row.put("sect_name", outStructAttr.getSect_name()); - row.put("material_code", groupPlate.getMaterial_code()); - row.put("material_name", groupPlate.getMaterial_name()); - row.put("edit", true); - outBillService.manualDiv(param); + RLock lock = redissonClient.getLock(pointCode); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + String workorderId = whereJson.getString("workorder_id"); + PdmBdWorkorder workorder = workorderService.getById(workorderId); + if (ObjectUtil.isEmpty(workorder)) { + throw new BadRequestException("工单不存在!"); + } + if (!"1".equals(workorder.getWorkorder_status())) { + throw new BadRequestException("该工单不是未生产,无法开工!"); + } + // 出库的仓位 + Structattr outStructAttr = structattrService.getByCode(workorder.getStruct_code()); + if (ObjectUtil.isEmpty(outStructAttr)) { + throw new BadRequestException("仓位【" + workorder.getStruct_code() + "】不存在!"); + } + MdMeMaterialbase materialbase = materialbaseService.getById(workorder.getMaterial_id()); + if (ObjectUtil.isEmpty(materialbase)) { + throw new BadRequestException("物料【" + workorder.getMaterial_id() + "】不存在!"); + } + GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code()) + .eq(GroupPlate::getStatus, "02")); + if (ObjectUtil.isEmpty(groupPlate)) { + throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!"); + } + // 1、创建出库单、明细、分配明细 + JSONObject insertInvObj = new JSONObject(); + JSONArray tableData = new JSONArray(); + JSONObject table = new JSONObject(); + tableData.add(table); + insertInvObj.put("stor_id", outStructAttr.getStor_id()); + insertInvObj.put("stor_code", outStructAttr.getStor_code()); + insertInvObj.put("bill_status", "10"); + insertInvObj.put("total_qty", workorder.getPlan_weight()); + insertInvObj.put("detail_count", 1); + insertInvObj.put("bill_type", "1012"); + insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd")); + insertInvObj.put("tableData", tableData); + table.put("turnout_struct_code", outStructAttr.getStruct_code()); + table.put("turnout_sect_code", outStructAttr.getSect_code()); + table.put("turnout_sect_name", outStructAttr.getSect_name()); + table.put("sect_id", outStructAttr.getSect_id()); + table.put("struct_id", outStructAttr.getStruct_id()); + table.put("group_id", groupPlate.getGroup_id()); + table.put("storagevehicle_code", outStructAttr.getStoragevehicle_code()); + table.put("storagevehicle_type", workorder.getVehicle_type()); + table.put("material_id", materialbase.getMaterial_id()); + table.put("pcsn", groupPlate.getPcsn()); + table.put("qty", groupPlate.getQty()); + table.put("qty_unit_id", groupPlate.getQty_unit_id()); + table.put("qty_unit_name", groupPlate.getQty_unit_name()); + table.put("fronzen_qty", 0); + table.put("status", "01"); + table.put("material_code", materialbase.getMaterial_code()); + table.put("material_name", materialbase.getMaterial_name()); + table.put("material_spec", materialbase.getMaterial_spec()); + String invId = outBillService.insertDtl(insertInvObj); + // 调用手工分配 + JSONObject param = new JSONObject(); + JSONObject row = new JSONObject(); + JSONArray rows = new JSONArray(); + rows.add(row); + param.put("rows", rows); + IOStorInvDtl dtl = ioStorInvDtlMapper.selectOne(new LambdaQueryWrapper() + .eq(IOStorInvDtl::getIostorinv_id, invId)); + param.put("row", dtl); + row.put("storagevehicle_code", outStructAttr.getStoragevehicle_code()); + row.put("pcsn", groupPlate.getPcsn()); + row.put("qty", groupPlate.getQty()); + row.put("qty_unit_name", groupPlate.getQty_unit_name()); + row.put("frozen_qty", groupPlate.getFrozen_qty()); + row.put("struct_id", outStructAttr.getStruct_id()); + row.put("struct_code", outStructAttr.getStruct_code()); + row.put("struct_name", outStructAttr.getStruct_name()); + row.put("sect_id", outStructAttr.getSect_id()); + row.put("sect_code", outStructAttr.getSect_code()); + row.put("sect_name", outStructAttr.getSect_name()); + row.put("material_code", groupPlate.getMaterial_code()); + row.put("material_name", groupPlate.getMaterial_name()); + row.put("edit", true); + outBillService.manualDiv(param); - // 创建任务 - SchBasePoint outPoint = pointService.getOne(new LambdaQueryWrapper() - .eq(SchBasePoint::getParent_point_code, pointCode) - .eq(SchBasePoint::getRegion_code, "CKQ")); - JSONObject taskParam = new JSONObject(); - taskParam.put("order_id", workorderId); - taskParam.put("iostorinv_id", invId); - taskParam.put("point_code", outPoint.getPoint_code()); - outBillService.allSetPoint(taskParam); + // 创建任务 + SchBasePoint outPoint = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getParent_point_code, pointCode) + .eq(SchBasePoint::getRegion_code, "CKQ")); + JSONObject taskParam = new JSONObject(); + taskParam.put("order_id", workorderId); + taskParam.put("iostorinv_id", invId); + taskParam.put("point_code", outPoint.getPoint_code()); + outBillService.allSetPoint(taskParam); - // 3、工单状态修改,设置实际开始时间 - workorder.setWorkorder_status("3"); - workorder.setOperator(SecurityUtils.getCurrentNickName()); - workorder.setReal_weight(workorder.getPlan_weight()); - workorder.setRealproducestart_date(DateUtil.now()); - workorder.setUpdate_time(DateUtil.now()); - workorder.setUpdate_id(SecurityUtils.getCurrentUserId()); - workorder.setUpdate_name(SecurityUtils.getCurrentNickName()); - workorderService.updateById(workorder); + // 3、工单状态修改,设置实际开始时间 + workorder.setWorkorder_status("3"); + workorder.setOperator(SecurityUtils.getCurrentNickName()); + workorder.setReal_weight(workorder.getPlan_weight()); + workorder.setRealproducestart_date(DateUtil.now()); + workorder.setUpdate_time(DateUtil.now()); + workorder.setUpdate_id(SecurityUtils.getCurrentUserId()); + workorder.setUpdate_name(SecurityUtils.getCurrentNickName()); + workorderService.updateById(workorder); + } else { + throw new BadRequestException("速度太快啦,稍后再试..."); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return PdaResponse.requestOk(); } @Override public PdaResponse getWeight(JSONObject whereJson) { - // todo: 调用acs获取 String currentUserId = SecurityUtils.getCurrentUserId(); String pointCode = whereJson.getString("point_code"); String workorder_id = whereJson.getString("workorder_id"); @@ -227,6 +253,7 @@ public class PdaJBServiceImpl implements PdaJBService { if (ObjectUtil.isEmpty(param)) { throw new BadRequestException("请先定义 " + JB_STANDARD_ERROR + " 系统参数!"); } + // todo: 调用acs获取 JSONObject res = new JSONObject(); res.put("weight", "999.99"); res.put("flag", "1"); @@ -242,10 +269,12 @@ public class PdaJBServiceImpl implements PdaJBService { return PdaResponse.requestParamOk(res); } + @SneakyThrows @Override @Transactional(rollbackFor = Exception.class) public PdaResponse downMaterial(JSONObject whereJson) { // 用任务组的方式下发任务(3条任务) + MDC.put(TagNameEnum.TAG_NAME.getTag(), TagNameEnum.PDA_JB_DOWN_MATERIAL.getTag()); log.info("解包下料,请求参数:{}", whereJson); String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); @@ -254,57 +283,79 @@ public class PdaJBServiceImpl implements PdaJBService { String area = whereJson.getString("area"); // 设备 String pointCode = whereJson.getString("point_code"); - BigDecimal weight = whereJson.getBigDecimal("weight"); - String tpCode = whereJson.getString("tp_code"); - String ltCode = whereJson.getString("lt_code"); - String workorderId = whereJson.getString("workorder_id"); + RLock lock = redissonClient.getLock(pointCode); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + BigDecimal weight = whereJson.getBigDecimal("weight"); + String tpCode = whereJson.getString("tp_code"); + String ltCode = whereJson.getString("lt_code"); + String workorderId = whereJson.getString("workorder_id"); + // 存在任务就不继续 + List list = taskService.list(new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, false) + .and(ll -> ll.like(SchBaseTask::getPoint_code1, pointCode).or() + .like(SchBaseTask::getPoint_code2, pointCode).or() + .like(SchBaseTask::getPoint_code3, pointCode).or() + .like(SchBaseTask::getPoint_code4, pointCode).or())); + if (list.size() > 0) { + throw new BadRequestException(pointCode + " 该点位已存在任务!"); + } + PdmBdWorkorder workorder = workorderService.getById(workorderId); + if (ObjectUtil.isEmpty(workorder)) { + throw new BadRequestException("工单不存在!"); + } + // 物料 + MdMeMaterialbase materialbase = materialbaseService.getById(workorder.getMaterial_id()); + if (ObjectUtil.isEmpty(materialbase)) { + throw new BadRequestException("物料【" + workorder.getMaterial_id() + "】不存在!"); + } + // 0、创建组盘 + GroupPlate groupPlate = new GroupPlate(); + groupPlate.setGroup_id(IdUtil.getStringId()); + groupPlate.setStoragevehicle_code(ltCode); + // 料桶类型根据工单,工单是根据点位 + groupPlate.setStoragevehicle_type(workorder.getVehicle_type()); + groupPlate.setMaterial_id(materialbase.getMaterial_id()); + groupPlate.setPcsn(DateUtil.format(new Date(), "yyyy-MM-dd")); + groupPlate.setQty(weight); + groupPlate.setQty_unit_id("11"); + groupPlate.setQty_unit_name("kg"); + groupPlate.setFrozen_qty(BigDecimal.ZERO); + groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘")); + groupPlate.setCreate_id(currentUserId); + groupPlate.setCreate_name(nickName); + groupPlate.setCreate_time(now); + groupplateService.save(groupPlate); - PdmBdWorkorder workorder = workorderService.getById(workorderId); - if (ObjectUtil.isEmpty(workorder)) { - throw new BadRequestException("工单不存在!"); + Dict dict = dictService.getDictByCodeAndValue("storagevehicle_type", workorder.getVehicle_type()); + Sectattr sect = sectattrService.findByCode(dict.getPara1()); + // 组装插入主表明细表的数据 + Map insertInvObj = buildInsertData(ltCode, workorder, materialbase, groupPlate, sect); + String invId = inBillService.insertDtl(insertInvObj); + + // 组织数据,调用分配货位 + JSONObject divObj = buildDivStructData(sect, invId); + inBillService.divStruct(divObj); + + // 一键设置,创建任务 + // 组建参数 + Map jsonMst = buildTaskData(pointCode, workorderId, invId); + inBillService.divPoint(jsonMst); + + // 工单完成 + workorder.setWorkorder_status("5"); + workorder.setRealproduceend_date(DateUtil.now()); + workorderService.updateById(workorder); + } + } finally { + if (tryLock) { + lock.unlock(); + } else { + throw new BadRequestException("速度太快啦,稍后再试..."); + } } - // 物料 - MdMeMaterialbase materialbase = materialbaseService.getById(workorder.getMaterial_id()); - if (ObjectUtil.isEmpty(materialbase)) { - throw new BadRequestException("物料【" + workorder.getMaterial_id() + "】不存在!"); - } - // 0、创建组盘 - GroupPlate groupPlate = new GroupPlate(); - groupPlate.setGroup_id(IdUtil.getStringId()); - groupPlate.setStoragevehicle_code(ltCode); - // 料桶类型根据工单,工单是根据点位 - groupPlate.setStoragevehicle_type(workorder.getVehicle_type()); - groupPlate.setMaterial_id(materialbase.getMaterial_id()); - groupPlate.setPcsn(DateUtil.format(new Date(), "yyyy-MM-dd")); - groupPlate.setQty(weight); - groupPlate.setQty_unit_id("11"); - groupPlate.setQty_unit_name("kg"); - groupPlate.setFrozen_qty(BigDecimal.ZERO); - groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘")); - groupPlate.setCreate_id(currentUserId); - groupPlate.setCreate_name(nickName); - groupPlate.setCreate_time(now); - groupplateService.save(groupPlate); - - Dict dict = dictService.getDictByCodeAndValue("storagevehicle_type", workorder.getVehicle_type()); - Sectattr sect = sectattrService.findByCode(dict.getPara1()); - // 组装插入主表明细表的数据 - Map insertInvObj = buildInsertData(ltCode, workorder, materialbase, groupPlate, sect); - String invId = inBillService.insertDtl(insertInvObj); - - // 组织数据,调用分配货位 - JSONObject divObj = buildDivStructData(sect, invId); - inBillService.divStruct(divObj); - - // 一键设置,创建任务 - // 组建参数 - Map jsonMst = buildTaskData(pointCode, workorderId, invId); - inBillService.divPoint(jsonMst); - - // 工单完成 - workorder.setWorkorder_status("5"); - workorder.setRealproduceend_date(DateUtil.now()); - workorderService.updateById(workorder); return PdaResponse.requestOk(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java index 6bc3bd1..e4b3bb7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java @@ -76,6 +76,11 @@ public class SchBasePointController { public ResponseEntity getPointList(@RequestBody(required = false) SchBasePoint region) { return new ResponseEntity<>(schBasePointService.getPointList(region), HttpStatus.OK); } + @PostMapping("/getPointsByCode") + @Log("获取区域下拉框") + public ResponseEntity getPointsByCode(@RequestBody(required = false) String region) { + return new ResponseEntity<>(schBasePointService.getPointsByCode(region), HttpStatus.OK); + } @PostMapping("/getPointList2") @Log("获取区域下拉框") public ResponseEntity getPointList2(@RequestBody(required = false) SchBasePoint region) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskFinishedTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskFinishedTypeEnum.java new file mode 100644 index 0000000..85835cf --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskFinishedTypeEnum.java @@ -0,0 +1,30 @@ +package org.nl.wms.sch_manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: 任务完成枚举 + * @Date: 2023/6/13 + */ +@Getter +@AllArgsConstructor +public enum TaskFinishedTypeEnum { + /** + * ACS自动完成 + */ + AUTO_ACS("1", "ACS自动完成"), + /** + * PC手动完成 + */ + MANUAL_PC("2", "PC手动完成"), + /** + * PDA手持 + */ + MANUAL_PDA("3", "PDA手持"); + + private final String code; + + private final String description; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index 9c807f9..7c5917d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -133,4 +133,6 @@ public interface ISchBasePointService extends IService { List getCanUseCFGJs(SchBasePoint parentPoint, String pointStatus); List getPointList2(SchBasePoint region); + + List getPointsByCode(String regions); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java index 003659e..65e5a9f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java @@ -54,5 +54,5 @@ public interface ISchBaseTaskconfigService extends IService { List getTaskConfigList(); - + SchBaseTaskconfig getTaskByConfigCode(String code); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index b9aceec..d2bf148 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -185,10 +185,7 @@ public class SchBasePointServiceImpl extends ServiceImpl() - .eq(SchBasePoint::getRegion_code, region.getRegion_code()) - //点位类型,根据传入的值是否为空增加判断 - .eq(StringUtils.isNotBlank(region.getPoint_type()), SchBasePoint::getPoint_type, region.getPoint_type()) - .eq(SchBasePoint::getIs_has_workder, true)); + .eq(SchBasePoint::getRegion_code, region.getRegion_code())); } @Override @@ -332,4 +329,14 @@ public class SchBasePointServiceImpl extends ServiceImpl getPointsByCode(String regions) { + if (ObjectUtil.isEmpty(regions)) { + return this.list(); + } + List collect = Arrays.stream(regions.split(",")).collect(Collectors.toList()); + return pointMapper.selectList(new LambdaQueryWrapper() + .in(SchBasePoint::getRegion_code, collect)); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskconfigServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskconfigServiceImpl.java index 34a32ee..59f1099 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskconfigServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskconfigServiceImpl.java @@ -138,4 +138,10 @@ public class SchBaseTaskconfigServiceImpl extends ServiceImpl() + .eq(SchBaseTaskconfig::getConfig_code, code)); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AbstractTask.java index 9ad0afa..48b1b75 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AbstractTask.java @@ -70,7 +70,9 @@ public abstract class AbstractTask { // 查询未执行下发的任务 List taskList = taskService.list(new LambdaQueryWrapper() .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) - .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode())); + .eq(SchBaseTask::getTask_status, TaskStatus.CREATED.getCode()) + .orderByAsc(SchBaseTask::getTask_group_id) + .orderByAsc(SchBaseTask::getTask_group_seq)); if (ObjectUtil.isEmpty(taskList)) { return; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AcsTaskDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AcsTaskDto.java index 652b419..0cb293e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AcsTaskDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AcsTaskDto.java @@ -2,6 +2,7 @@ package org.nl.wms.sch_manage.service.util; import lombok.Data; +import java.math.BigDecimal; import java.util.Map; /** @@ -124,4 +125,10 @@ public class AcsTaskDto { * 扩展属性 */ Map params; + + + private String task_group_id; + + + private BigDecimal task_group_seq; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java index a591eba..f1e33b6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java @@ -5,32 +5,35 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.nl.config.SpringContextHolder; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.system_manage.enums.TagNameEnum; import org.nl.wms.warehouse_manage.enums.IOSConstant; +import org.reflections.Reflections; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.List; +import java.util.Set; @Slf4j @Component +@Order(value = 1) public class AutoTask { - /** - * 任务服务 - */ - @Autowired - private ISchBaseTaskService taskService; + private static Set> subTypes; - /** - * 任务工厂服务 - */ - @Autowired - private TaskFactory taskFactory; + // 类加载时候执行扫描 + static { + Reflections reflections = new Reflections("org.nl.wms.sch_manage.service.util.tasks"); + subTypes = reflections.getSubTypesOf(AbstractTask.class); + } @SneakyThrows public void run() { @@ -44,17 +47,19 @@ public class AutoTask { * 定时下发任务 */ private void sendTask() { - List taskList = taskService.list(new LambdaQueryWrapper() - .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) - .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode()) - .orderByAsc(SchBaseTask::getTask_group_seq)); - if (ObjectUtil.isEmpty(taskList)) { - return; - } - // 整理下发acs参数 - for (SchBaseTask taskDao : taskList) { - AbstractTask task = taskFactory.getTask(taskDao.getConfig_code()); - task.sendTaskOne(taskDao.getTask_id()); - } + subTypes.forEach(clz -> { + // 调用AbstractAcsTask类的每个子类的schedule()方法 + try { + Object obj = SpringContextHolder.getBean(clz); + Method m = obj.getClass().getMethod("schedule"); + m.invoke(obj); + } catch (InvocationTargetException e) { + e.printStackTrace(); + log.info("定时器执行失败:{}", e.getTargetException().getMessage()); + } catch (Exception e) { + e.printStackTrace(); + log.info("定时器执行失败:{}", e.getMessage()); + } + }); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbBackAgvTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbBackAgvTask.java index 38e3db7..2311ec4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbBackAgvTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbBackAgvTask.java @@ -3,15 +3,22 @@ package org.nl.wms.sch_manage.service.util.tasks.jb; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; +import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; +import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -26,8 +33,22 @@ import javax.annotation.Resource; public class JbBackAgvTask extends AbstractTask { @Resource private ISchBaseTaskService taskService; + @Resource + private ISchBaseTaskconfigService taskconfigService; + @Resource + private IInBillService inBillService; + @Resource + private IOStorInvDisMapper ioStorInvDisMapper; @Override public String create(JSONObject json) { + // 获取任务配置的优先级 + String priority= "1"; + SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(json.getString("task_type")); + if (ObjectUtil.isNotEmpty(json.getString("Priority"))) { + priority = json.getString("Priority"); + } else if (ObjectUtil.isNotEmpty(taskconfig)){ + priority = taskconfig.getPriority(); + } SchBaseTask task = new SchBaseTask(); task.setTask_id(IdUtil.getStringId()); task.setTask_code(json.getString("TaskCode")); @@ -41,7 +62,7 @@ public class JbBackAgvTask extends AbstractTask { task.setVehicle_code2(json.getString("vehicle_code2")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); + task.setPriority(priority); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); @@ -51,7 +72,23 @@ public class JbBackAgvTask extends AbstractTask { @Override public AcsTaskDto sendAcsParam(String taskId) { - return null; + SchBaseTask taskDao = taskService.getById(taskId); + SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(taskDao.getConfig_code()); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setStart_device_code2(taskDao.getPoint_code3()); + acsTaskDto.setNext_device_code2(taskDao.getPoint_code4()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setAgv_system_type(taskconfig.getAcs_task_type()); + acsTaskDto.setTask_type(taskconfig.getTask_type()); + acsTaskDto.setTask_group_id(taskDao.getTask_group_id()); + acsTaskDto.setTask_group_seq(taskDao.getTask_group_seq()); + return acsTaskDto; } @Override @@ -87,10 +124,6 @@ public class JbBackAgvTask extends AbstractTask { this.finishTask(taskObj); } - private void finishTask(SchBaseTask taskObj) { - - } - @Override public void cancel(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); @@ -103,8 +136,29 @@ public class JbBackAgvTask extends AbstractTask { this.cancelTask(taskObj); } - private void cancelTask(SchBaseTask taskObj) { + private void finishTask(SchBaseTask taskObj) { + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("已完成"); + taskService.updateById(taskObj); + inBillService.taskFinish(taskObj); + } + private void cancelTask(SchBaseTask taskObj) { + // 取消任务 + taskService.update(new LambdaUpdateWrapper() + .set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode()) + .set(SchBaseTask::getRemark, "已取消") + .eq(SchBaseTask::getTask_id, taskObj.getTask_id()) + ); + //分配表清除任务 + ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getTask_id,null) + .set(IOStorInvDis::getPoint_code,null) + .set(IOStorInvDis::getIs_issued,0) + .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成")) + .eq(IOStorInvDis::getTask_id,taskObj.getTask_id()) + ); } @Override diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbDownAgvTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbDownAgvTask.java index 03a3a59..53b7d84 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbDownAgvTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbDownAgvTask.java @@ -14,8 +14,10 @@ import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.warehouse_manage.enums.IOSEnum; @@ -45,6 +47,8 @@ public class JbDownAgvTask extends AbstractTask { private IOStorInvDisMapper ioStorInvDisMapper; @Resource private ISchBasePointService pointService; + @Resource + private ISchBaseTaskconfigService taskconfigService; @Override public String create(JSONObject param) { // 改造:多条任务 @@ -80,7 +84,23 @@ public class JbDownAgvTask extends AbstractTask { @Override public AcsTaskDto sendAcsParam(String taskId) { - return null; + SchBaseTask taskDao = taskService.getById(taskId); + SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(taskDao.getConfig_code()); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setStart_device_code2(taskDao.getPoint_code3()); + acsTaskDto.setNext_device_code2(taskDao.getPoint_code4()); + acsTaskDto.setTask_group_id(taskDao.getTask_group_id()); + acsTaskDto.setTask_group_seq(taskDao.getTask_group_seq()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setAgv_system_type(taskconfig.getAcs_task_type()); + acsTaskDto.setTask_type(taskconfig.getTask_type()); + return acsTaskDto; } @Override @@ -126,7 +146,7 @@ public class JbDownAgvTask extends AbstractTask { private void finishTask(SchBaseTask taskObj) { // 任务完成 - taskObj.setRemark("等待最后一条任务完成"); + taskObj.setRemark("该任务已完成,等待最后一条任务完成后全部完成!"); if ("1".equals(taskObj.getTask_group_seq().toString())) { // 开盖设置成有盖 SchBasePoint khgPoint = pointService.getById(taskObj.getPoint_code2()); @@ -142,9 +162,9 @@ public class JbDownAgvTask extends AbstractTask { pointService.updateById(jbjPoint); } if ("3".equals(taskObj.getTask_group_seq().toString())) { - // 开盖设置成有盖 + // 开盖设置成空位 SchBasePoint khgPoint = pointService.getById(taskObj.getPoint_code2()); - khgPoint.setPoint_status("2"); + khgPoint.setPoint_status("1"); khgPoint.setUpdate_time(DateUtil.now()); pointService.updateById(khgPoint); SchBaseTask task = new SchBaseTask(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java index 195f8ef..e083db1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java @@ -14,8 +14,10 @@ import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.warehouse_manage.enums.IOSEnum; @@ -50,6 +52,8 @@ public class JbUpAgvTask extends AbstractTask { private IMdPbGroupplateService groupplateService; @Resource private IStructattrService structattrService; + @Resource + private ISchBaseTaskconfigService taskconfigService; @Override public String create(JSONObject json) { @@ -76,7 +80,21 @@ public class JbUpAgvTask extends AbstractTask { @Override public AcsTaskDto sendAcsParam(String taskId) { - return null; + SchBaseTask taskDao = taskService.getById(taskId); + SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(taskDao.getConfig_code()); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setStart_device_code2(taskDao.getPoint_code3()); + acsTaskDto.setNext_device_code2(taskDao.getPoint_code4()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setAgv_system_type(taskconfig.getAcs_task_type()); + acsTaskDto.setTask_type(taskconfig.getTask_type()); + return acsTaskDto; } @Override @@ -160,6 +178,11 @@ public class JbUpAgvTask extends AbstractTask { .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code2()) .set(Structattr::getOccupancy_state, 2) .eq(Structattr::getStruct_code, taskObj.getPoint_code4())); + } else { + // 仓位设置空 + structattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getOccupancy_state, 1) + .eq(Structattr::getStruct_code, taskObj.getPoint_code4())); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java index 3c68c40..9576828 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java @@ -21,12 +21,12 @@ public class SysParamConstant { * ACS系统IP */ public final static String ACS_URL = "acs_url"; - public final static String MES_URL = "mes_url"; /** * ERP系统IP */ public final static String ERP_URL = "erp_url"; + public final static String MES_URL = "mes_url"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java index 391e0e2..32549fb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java @@ -19,7 +19,14 @@ public enum TagNameEnum { * LMS系统 */ LMS("LMS系统"), + /*** + * 自动下发任务到ACS + */ AUTO_TASK_SEND("自动下发任务到ACS"), + /** + * 解包手持下料 + */ + PDA_JB_DOWN_MATERIAL("解包手持下料"), /** * 标记符号 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index f3ebe88..34076f9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -769,6 +769,8 @@ public class InBillServiceImpl extends ServiceImpl i task.put("point_code2", emptyPoint.getPoint_code()); task.put("point_code3", fullPoint.getPoint_code()); task.put("point_code4", structCode); + task.put("vehicle_code", fullPoint.getVehicle_code()); + task.put("vehicle_code2", emptyPoint.getStoragevehicle_code()); jbBackAgvTask.create(task); } else if (StatusEnum.IOBILL_TYPE_IN.code("来料入库").equals(invObj.getBill_type())) { // 获取组盘信息 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java index 5c58dad..8d0944c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java @@ -980,6 +980,9 @@ public class OutBillServiceImpl extends ServiceImpl i if (ObjectUtil.isEmpty(inPoint) || ObjectUtil.isEmpty(outPoint)) { throw new BadRequestException("解包机输送线点位不存在或者存在任务!"); } + if (!"1".equals(inPoint.getPoint_status())) { + throw new BadRequestException("原料进对接位状态不为空位,请检查确认!"); + } JSONObject task_form = new JSONObject(); task_form.put("task_type", "JbUpAgvTask"); task_form.put("order_id", whereJson.getString("order_id")); diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index b708b69..3458b37 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -103,9 +103,9 @@ - - - + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/structattr/index.vue b/lms/nladmin-ui/src/views/wms/basedata/structattr/index.vue index 203dad4..d09c71c 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/structattr/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/structattr/index.vue @@ -133,7 +133,7 @@ - + - + diff --git a/lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js b/lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js index 45be7b8..48fff23 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js +++ b/lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js @@ -39,6 +39,13 @@ export function getPointList(data) { data }) } +export function getPointsByCode(data) { + return request({ + url: 'api/schBasePoint/getPointsByCode', + method: 'post', + data + }) +} export function getPointList2(data) { return request({ url: 'api/schBasePoint/getPointList2', @@ -55,4 +62,4 @@ export function changeLock(data) { }) } -export default { add, edit, del, changeUsed, getPointList, getPointList2, changeLock } +export default { add, edit, del, changeUsed, getPointList, getPointsByCode, getPointList2, changeLock } diff --git a/lms/nladmin-ui/src/views/wms/sch/taskconfig/index.vue b/lms/nladmin-ui/src/views/wms/sch/taskconfig/index.vue index b6bf28a..01013d9 100644 --- a/lms/nladmin-ui/src/views/wms/sch/taskconfig/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/taskconfig/index.vue @@ -136,6 +136,20 @@ style="width: 240px;" /> + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -236,17 +236,17 @@ - - - - - - + + + + + + + + + + + @@ -279,7 +279,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue index 238ca2e..4d14c56 100644 --- a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue @@ -259,13 +259,9 @@ export default { this.sects = res.content }) - const area_type = 'YLXCQ' - - // 点位类型,因为卸货区的点位类型(出库区、入库区)会变动,因需要增加点位类型字段进行判断 - // 1-入库区,2-出库区 - const region_type = '1' - crudPoint.getPointList({ 'region_code': area_type, 'region_type': region_type }).then(res => { - this.pointlist = res + const area_type = 'RKQ,YLXCQ' + crudPoint.getPointsByCode(area_type).then(res => { + this.pointList = res }) }, toDelete(data) { diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue index 8bd6118..c25c813 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -161,6 +161,7 @@ { this.sects = res.content }) - const area_type = 'YLXCQ' - // 点位类型,因为卸货区的点位类型(出库区、入库区)会变动,因需要增加点位类型字段进行判断 - // 1-入库区,2-出库区 - const region_type = '2' - crudPoint.getPointList({ 'region_code': area_type, 'region_type': region_type }).then(res => { - this.pointlist = res + + const area_type = 'CKQ,YLXCQ' + crudPoint.getPointsByCode(area_type).then(res => { + this.pointList = res }) }, close() {