Browse Source

opt: 取消NDC任务,手持下发任务优化

master
yanps 6 days ago
parent
commit
d92ec484fa
  1. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java
  2. 4
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/impl/WmsToConnectorServiceImpl.java
  3. 17
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java
  4. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml
  5. 9
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  6. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java
  7. 31
      lms/nladmin-ui/src/views/wms/sch/group/index.vue

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java

@ -69,7 +69,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
}; };
log.info("下发删除AGV指令--{}", Bytes2HexString(b)); log.info("下发删除AGV指令--{}", Bytes2HexString(b));
// NDCSocketConnectionAutoRun.write(b); OneNDCSocketConnectionAutoRun.write(b);
System.out.println("下发删除agv指令数据:" + Bytes2HexString(b)); System.out.println("下发删除agv指令数据:" + Bytes2HexString(b));
} }

4
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/impl/WmsToConnectorServiceImpl.java

@ -60,9 +60,9 @@ public class WmsToConnectorServiceImpl implements WmsToConnectorService {
materials.forEach(material -> { materials.forEach(material -> {
String replace = StrUtil.replace(StrUtil.toString(material), "=", ":"); String replace = StrUtil.replace(StrUtil.toString(material), "=", ":");
JSONObject jsonObject1 = JSONObject.parseObject(replace); JSONObject jsonObject1 = JSONObject.parseObject(replace);
jsonObject1.put("due_date", "2000-10-01 00:00:00 "); jsonObject1.put("due_date", "2000-10-01 00:00:00");
jsonObject1.put("next_region_code", ""); jsonObject1.put("next_region_code", "");
jsonObject1.put("priority", "5"); jsonObject1.put("priority", "");
objects.add(jsonObject1); objects.add(jsonObject1);
}); });
jsonObject.put("data", objects); jsonObject.put("data", objects);

17
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java

@ -108,6 +108,7 @@ public class HandheldServiceImpl implements HandheldService {
private void applyDeliveryRacks(String vehicle, String device_code, JSONObject param) { private void applyDeliveryRacks(String vehicle, String device_code, JSONObject param) {
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code); SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!"); if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
if (schBasePoint.getIs_lock()) throw new BadRequestException("当前点位存在任务!");
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle); MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle);
if (ObjectUtil.isEmpty(mdBaseVehicle)) if (ObjectUtil.isEmpty(mdBaseVehicle))
throw new BadRequestException("载具不存在!"); throw new BadRequestException("载具不存在!");
@ -127,7 +128,9 @@ public class HandheldServiceImpl implements HandheldService {
jo.put("vehicle_type", mdBaseVehicle.getVehicle_type()); jo.put("vehicle_type", mdBaseVehicle.getVehicle_type());
jo.put("ext_data", param); jo.put("ext_data", param);
connectorTask.apply(jo); connectorTask.apply(jo);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
.set(SchBasePoint::getIs_lock, true));
} }
/** /**
@ -285,7 +288,7 @@ public class HandheldServiceImpl implements HandheldService {
/** /**
* connector下料入库 * connector下料入库
* *
* @param schBasePoint * @param
* @param param * @param param
* @param region_code * @param region_code
* @param device_code * @param device_code
@ -305,9 +308,7 @@ public class HandheldServiceImpl implements HandheldService {
connectorTask.apply(jo); connectorTask.apply(jo);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, device_code) .eq(SchBasePoint::getPoint_code, device_code)
.set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue()) .set(SchBasePoint::getIs_lock, true));
.set(SchBasePoint::getIs_lock, true)
.set(SchBasePoint::getVehicle_code, null));
} }
/** /**
@ -330,12 +331,12 @@ public class HandheldServiceImpl implements HandheldService {
if (StrUtil.isBlank(region_code)) { if (StrUtil.isBlank(region_code)) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
JSONArray jsonArray = new JSONArray(); JSONArray jsonArray = new JSONArray();
HashMap<String, Object> map = new HashMap<>();
materials.stream().forEach(material2 -> { materials.stream().forEach(material2 -> {
boolean material_code = ObjectUtil.isEmpty(((LinkedHashMap) material2).get("material_code")); boolean material_code = ObjectUtil.isEmpty(((LinkedHashMap) material2).get("material_code"));
if (material_code) { if (material_code) {
((LinkedHashMap) material2).remove("material_code"); ((LinkedHashMap) material2).remove("material_code");
} }
HashMap<String, Object> map = new HashMap<>();
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material2); cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material2);
map.put("order_code", jsonObject.get("order_code")); map.put("order_code", jsonObject.get("order_code"));
map.put("qty", jsonObject.get("material_qty")); map.put("qty", jsonObject.get("material_qty"));
@ -428,9 +429,7 @@ public class HandheldServiceImpl implements HandheldService {
connectorTask.apply(jo); connectorTask.apply(jo);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, device_code) .eq(SchBasePoint::getPoint_code, device_code)
.set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue()) .set(SchBasePoint::getIs_lock, true));
.set(SchBasePoint::getIs_lock, true)
.set(SchBasePoint::getVehicle_code, null));
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class) iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code)); .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code));
materials.stream().forEach(material -> { materials.stream().forEach(material -> {

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml

@ -78,7 +78,7 @@
ROW_NUMBER() OVER (PARTITION BY vg.vehicle_code ORDER BY vg.due_date) AS rn ROW_NUMBER() OVER (PARTITION BY vg.vehicle_code ORDER BY vg.due_date) AS rn
FROM FROM
sch_base_vehiclematerialgroup vg sch_base_vehiclematerialgroup vg
where 1=1 where vg.is_delete = 0
<if test="query.vehicle_code != null"> <if test="query.vehicle_code != null">
AND vg.vehicle_code = #{query.vehicle_code} AND vg.vehicle_code = #{query.vehicle_code}
</if> </if>
@ -97,6 +97,7 @@
<if test="query.material_id != null"> <if test="query.material_id != null">
AND vg.material_id like CONCAT('%', #{query.material_id}, '%') AND vg.material_id like CONCAT('%', #{query.material_id}, '%')
</if> </if>
order by vg.region_code desc
) )
SELECT * SELECT *
FROM RankedVehicles FROM RankedVehicles

9
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java

@ -77,7 +77,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
if (StrUtil.isNotBlank(item.getRegion_code())) { if (StrUtil.isNotBlank(item.getRegion_code())) {
item.setRegion_name(item.getRegion_code()); item.setRegion_name(item.getRegion_code());
} else { } else {
item.setRegion_name("未知"); item.setRegion_code("未知");
} }
SchBasePoint one = pointService.getOne(Wrappers.lambdaQuery(SchBasePoint.class) SchBasePoint one = pointService.getOne(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getVehicle_code, item.getVehicle_code())); .eq(SchBasePoint::getVehicle_code, item.getVehicle_code()));
@ -170,7 +170,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
if (CollUtil.isNotEmpty(order_code)) { if (CollUtil.isNotEmpty(order_code)) {
orderList.put("region_code", order_code.get(0).getRegion_code()); orderList.put("region_code", order_code.get(0).getRegion_code());
orderList.put("due_date", order_code.get(0).getDue_date()); orderList.put("due_date", order_code.get(0).getDue_date());
orderList.put("priority",order_code.get(0).getPriority()); orderList.put("priority", order_code.get(0).getPriority());
} }
}); });
maps = maps.stream().sorted(Comparator.comparingLong(order -> { maps = maps.stream().sorted(Comparator.comparingLong(order -> {
@ -193,6 +193,10 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
@Override @Override
public Object createTask(JSONObject entity) { public Object createTask(JSONObject entity) {
Assert.noNullElements(new Object[]{entity.get("point_code2"), entity.get("vehicle_code")}, "载具号不能为空!"); Assert.noNullElements(new Object[]{entity.get("point_code2"), entity.get("vehicle_code")}, "载具号不能为空!");
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(entity.getString("point_code2"));
if (ObjectUtil.isEmpty(schBasePoint) || schBasePoint.getIs_lock()) {
throw new BadRequestException("当前点位不存在或点位正在执行任务");
}
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("device_code", entity.get("point_code2")); param.put("device_code", entity.get("point_code2"));
param.put("config_code", "PcOperationCMTask"); param.put("config_code", "PcOperationCMTask");
@ -201,7 +205,6 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
pcOperationCMTask.apply(param); pcOperationCMTask.apply(param);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, entity.get("point_code2")) .eq(SchBasePoint::getPoint_code, entity.get("point_code2"))
.eq(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue())
.set(SchBasePoint::getIs_lock, true)); .set(SchBasePoint::getIs_lock, true));
this.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class) this.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.get("vehicle_code")) .eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.get("vehicle_code"))

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -293,7 +293,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Override @Override
public SchBasePoint selectByPointCode(String start_device_code) { public SchBasePoint selectByPointCode(String start_device_code) {
return pointMapper.selectOne(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getPoint_code, start_device_code) return pointMapper.selectOne(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, start_device_code)
.eq(SchBasePoint::getIs_used, true)); .eq(SchBasePoint::getIs_used, true));
} }

31
lms/nladmin-ui/src/views/wms/sch/group/index.vue

@ -267,8 +267,8 @@
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> <el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialogVisible" title="物料图片"> <el-dialog :visible.sync="dialogVisible1" title="物料图片">
<img :src="imageUrl" alt="物料图片" style="max-width: 100%;"> <img :src="errGif" alt="物料图片" style="max-width: 100%;">
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title="创建任务" title="创建任务"
@ -322,10 +322,23 @@
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column v-if="false" prop="group_id" label="组盘编码" :min-width="flexWidth('group_id',crud.data,'组盘编码')" /> <el-table-column v-if="false" prop="group_id" label="组盘编码" :min-width="flexWidth('group_id',crud.data,'组盘编码')" />
<el-table-column prop="vehicle_code" label="载具编码" width="100" /> <el-table-column prop="vehicle_code" label="载具编码" width="100" />
<el-table-column prop="region_code" label="下道工序" :min-width="flexWidth('region_name',crud.data,'下道工序')" /> <el-table-column prop="region_code" label="下道工序" :min-width="flexWidth('region_code',crud.data,'下道工序')" />
<el-table-column prop="order_code" label="工单编码" :min-width="flexWidth('order_code',crud.data,'工单编码')" /> <el-table-column prop="order_code" label="工单编码" :min-width="flexWidth('order_code',crud.data,'工单编码')" />
<el-table-column v-if="false" prop="material_name" label="物料名称" show-overflow-tooltip :min-width="flexWidth('material_name',crud.data,'物料数量')" /> <el-table-column v-if="false" prop="material_name" label="物料名称" show-overflow-tooltip :min-width="flexWidth('material_name',crud.data,'物料数量')" />
<el-table-column prop="material_id" label="物料编码" show-overflow-tooltip :min-width="flexWidth('material_id',crud.data,'物料编码')" @click="showImage" /> <el-table-column prop="material_id" label="物料编码" show-overflow-tooltip :min-width="flexWidth('material_id',crud.data,'物料编码')">
<template slot-scope="scope">
<el-tooltip
class="item"
effect="dark"
content="点击查看图片"
placement="top"
>
<div @click="showImage(scope.row.material_id)">
{{ scope.row.material_id }}
</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="material_qty" label="物料数量" show-overflow-tooltip :min-width="flexWidth('material_qty',crud.data,'物料数量')" /> <el-table-column prop="material_qty" label="物料数量" show-overflow-tooltip :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="job_name" label="jobName" show-overflow-tooltip :min-width="flexWidth('job_name',crud.data,'jobName')" /> <el-table-column prop="job_name" label="jobName" show-overflow-tooltip :min-width="flexWidth('job_name',crud.data,'jobName')" />
<el-table-column prop="due_date" label="交期时间" show-overflow-tooltip :min-width="flexWidth('due_date',crud.data,'交期时间')" /> <el-table-column prop="due_date" label="交期时间" show-overflow-tooltip :min-width="flexWidth('due_date',crud.data,'交期时间')" />
@ -375,6 +388,7 @@ import MaterialDialog from '@/views/wms/sch/group/MaterialDialog.vue'
import WorkOrderDialog from '@/views/wms/sch/group/WorkOrderDialog.vue' import WorkOrderDialog from '@/views/wms/sch/group/WorkOrderDialog.vue'
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint' import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion' import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion'
import errGif from '@/assets/images/background2.jpg'
const defaultForm = { const defaultForm = {
group_id: null, group_id: null,
@ -451,11 +465,13 @@ export default {
materialDialog: false, materialDialog: false,
workOrderDialog: false, workOrderDialog: false,
dialogVisible: false, dialogVisible: false,
dialogVisible1: false,
newTask: { newTask: {
point_code2: '', point_code2: '',
vehicle_code: '', vehicle_code: '',
point_code1: '' point_code1: ''
} },
errGif: errGif
} }
}, },
created() { created() {
@ -468,6 +484,11 @@ export default {
[CRUD.HOOK.beforeRefresh]() { [CRUD.HOOK.beforeRefresh]() {
return true return true
}, },
showImage(materialId) {
console.log('Clicked material_id:', materialId)
this.dialogVisible1 = true
//
},
getWorkShopList() { // getWorkShopList() { //
crudMdBaseWorkShop.getWorkShopList().then(res => { crudMdBaseWorkShop.getWorkShopList().then(res => {
this.workShopList = res this.workShopList = res

Loading…
Cancel
Save