rev:修改

This commit is contained in:
2026-01-31 12:36:14 +08:00
parent d62547fc25
commit 1311bfb8ab
17 changed files with 109 additions and 35 deletions

View File

@@ -138,4 +138,9 @@ public class MdCsSupplierbase implements Serializable {
*/
private String remark;
/**
* 质量代码
*/
private String quality_code;
}

View File

@@ -187,5 +187,10 @@ public class MdMeMaterialbase implements Serializable {
*/
private String execution_stand;
/**
* 供应商编码
*/
private String supp_code;
}

View File

@@ -5,10 +5,13 @@
<select id="queryAllByPage" resultType="com.alibaba.fastjson.JSONObject">
SELECT
mater.*,
class.class_name
class.class_name,
supp.supp_name,
supp.quality_code
FROM
md_me_materialbase mater
LEFT JOIN md_pb_classstandard class ON class.class_id = mater.material_type_id
LEFT JOIN md_cs_supplierbase supp ON supp.supp_code = mater.supp_code
<where>
1 = 1
<if test="param.search != null and param.search != ''">
@@ -26,24 +29,24 @@
class.class_name,
class.class_code,
unit.unit_code,
unit.unit_name
unit.unit_name,
supp.supp_name,
supp.quality_code
FROM
md_me_materialbase mater
LEFT JOIN md_pb_classstandard class ON class.class_id = mater.material_type_id
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mater.base_unit_id
LEFT JOIN md_cs_supplierbase supp ON supp.supp_code = mater.supp_code
<where>
mater.is_used = '1'
AND mater.is_delete = '0'
<if test="param.material_code != null and param.material_code != ''">
AND
(mater.material_code LIKE #{param.material_code} or
mater.material_name LIKE #{param.material_code})
</if>
<if test="param.class_code != null and param.class_code != ''">
AND
class.class_code = #{param.class_code}
(mater.material_code LIKE '%${param.class_code}%' or
mater.material_name LIKE '%${param.class_code}%'or
class.class_code LIKE '%${param.class_code}%')
</if>
</where>
ORDER BY mater.update_time Desc
</select>

View File

@@ -42,4 +42,11 @@ public class AcsToWmsController {
return new ResponseEntity<>(acsToWmsService.resultCar(whereJson), HttpStatus.OK);
}
@PostMapping("/applyTask")
@Log(value = "ACS向WMS申请任务")
@SaIgnore
public ResponseEntity<Object> applyTask(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.applyTask(whereJson), HttpStatus.OK);
}
}

View File

@@ -34,4 +34,14 @@ public interface AcsToWmsService {
* @return BaseResponse
*/
BaseResponse resultCar(JSONObject whereJson);
/**
* ACS向WMS申请任务
* @param whereJson {
* type1-缠绕机 2- 机械手
* type_dtl1-申请取货 2-申请放货
* }
* @return BaseResponse
*/
BaseResponse applyTask(JSONObject whereJson);
}

View File

@@ -1,28 +1,21 @@
package org.nl.wms.ext.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.unit.DataUnit;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.hikvision.HikvisionSnapshotUtil;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.ext.enums.ResultAcsStatus;
import org.nl.wms.ext.service.AcsToWmsService;
import org.nl.wms.ext.util.BaseResponse;
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.SecondaryPackagingService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.util.tasks.EmpVehicleInTask;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
@@ -74,6 +67,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
/**
* 申请任务
*/
@Autowired
private SecondaryPackagingService secondaryPackagingService;
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
@@ -150,4 +149,55 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("ACS向WMS反馈任务车号返回参数--------------------------------------" + BaseResponse.responseOk().toString());
return BaseResponse.responseOk();
}
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
public BaseResponse applyTask(JSONObject whereJson) {
log.info("ACS向WMS申请任务请求参数--------------------------------------" + whereJson.toString());
String device_code = whereJson.getString("device_code");
String type = whereJson.getString("type");
String type_dtl = whereJson.getString("type_dtl");
RLock lock = redissonClient.getLock(device_code);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
// 缠绕机
if (type.equals(IOSConstant.ONE)) {
if (type_dtl.equals(IOSConstant.ONE)) {
// 下料
secondaryPackagingService.wrappingDown(whereJson);
}
if (type_dtl.equals(IOSConstant.TWO)) {
// 上料
secondaryPackagingService.wrappingCall(whereJson);
}
}
// 机械手
if (type.equals(IOSConstant.TWO)) {
if (type_dtl.equals(IOSConstant.ONE)) {
// 下料
secondaryPackagingService.palletizingDown(whereJson);
}
if (type_dtl.equals(IOSConstant.TWO)) {
// 上料
secondaryPackagingService.palletizingCallEmpty(whereJson);
}
}
/* // 拆盘机
if (type.equals(IOSConstant.THREE)) {
// 找一垛空托盘
}*/
} else {
throw new BadRequestException("设备编码为:" + device_code + "的设备正在操作中!");
}
} finally {
if (tryLock) {
lock.unlock();
}
}
log.info("ACS向WMS申请任务返回参数--------------------------------------" + BaseResponse.responseOk().toString());
return BaseResponse.responseOk();
}
}

View File

@@ -2,6 +2,7 @@ package org.nl.wms.pda.general_management.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@@ -703,7 +704,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
}
// todo:获取ACS的重量
res.put("total", bucketInfo.getBigDecimal("qty"));
res.put("rows", infoByBucket);
res.put("row", infoByBucket);
return PdaResponse.requestParamOk(res);
}
@@ -769,8 +770,8 @@ public class PdaProductionServiceImpl implements PdaProductionService {
JSONObject row = param.getJSONObject("row");
String currentPoint = param.getString("current_point");
String vehicleCode = param.getString("vehicle_code");
// ACS 获取的重量
BigDecimal currentTotal = param.getBigDecimal("weight");
// ACS 获取的重量(毛重)
BigDecimal currentTotal = NumberUtil.sub(param.getBigDecimal("weight"), row.getBigDecimal("bucket_weight"));
BigDecimal originalQty = row.getBigDecimal("qty");
Param threshold = paramService.findByCode("weighing_threshold");
// 对比与组盘的重量是否大于阈值

View File

@@ -273,7 +273,7 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService {
// 校验托盘数据与入库是否匹配
// 入库前检测
AssemblyPalletParam checkParam = new AssemblyPalletParam();
checkParam.setVehicle_code(param.getString("vehicel_code"));
checkParam.setVehicle_code(param.getString("vehicle_code"));
// res中包含g.*(md_pb_groupplate字段),但也会额外带一些展示字段;这里只取校验必需字段即可
List<JSONObject> rows = param.getJSONArray("rows").toJavaList(JSONObject.class);
List<GroupPlate> groupPlates = rows.stream().map(row -> {

View File

@@ -71,7 +71,7 @@ public class SecondaryPackagingServiceImpl implements SecondaryPackagingService
// 组盘
GroupPlate groupPlate = new GroupPlate();
groupPlate.setGroup_id(IdUtil.getStringId());
groupPlate.setVehicle_code( DateUtil.format(new Date(), "yyyyMMddss") + "-" + param.getString("vehicle_seq"));
groupPlate.setVehicle_code(IdUtil.getStringId());
groupPlate.setRemark(param.toJSONString());
groupPlate.setStatus("1");
groupPlate.setQty(param.getBigDecimal("qty"));

View File

@@ -55,7 +55,7 @@ public class MaterialBackTask extends AbstractTask {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_status(TaskStatus.CREATED.getCode());
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(MaterialBackTask.class.getSimpleName());
task.setPoint_code1(json.getString("point_code1"));
task.setPoint_code2(json.getString("point_code2"));

View File

@@ -29,7 +29,7 @@ import java.util.Collections;
import java.util.List;
/**
*
* 缠膜叫料任务类
* @author: lyd
* @date: 2026/1/12
*/

View File

@@ -33,7 +33,7 @@
FROM
md_pb_groupplate late
INNER JOIN md_me_materialbase mater ON mater.material_id = late.material_id
INNER JOIN md_cs_supplierbase supp ON supp.supp_code = late.supp_code
LEFT JOIN md_cs_supplierbase supp ON supp.supp_code = late.supp_code
LEFT JOIN md_pb_classstandard class ON class.class_id = mater.material_type_id
<where>
1 = 1

View File

@@ -145,7 +145,6 @@
<el-table-column prop="bucket_code" label="桶码" :min-width="flexWidth('bucket_code',crud.data,'桶码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="qty" label="重量" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="bucket_weight" label="桶自重" :formatter="crud.formatNum3" :min-width="100" />

View File

@@ -84,7 +84,6 @@
<el-table-column prop="bag_code" label="袋码" :min-width="flexWidth('bag_code',crud.data,'袋码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" />
<el-table-column prop="qty" label="组盘重量" :formatter="crud.formatNum3" :min-width="100" />

View File

@@ -191,7 +191,6 @@
<el-table-column prop="bag_code" label="袋码" :min-width="flexWidth('bag_code',crud.data,'袋码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" />
<el-table-column prop="qty" label="组袋重量" :formatter="crud.formatNum3" :min-width="100" />

View File

@@ -103,12 +103,10 @@
>
<el-table-column prop="material_code" label="物料编码" width="160" />
<el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip />
<el-table-column prop="material_spec" label="物料规格" width="140" />
<el-table-column prop="material_model" label="物料型号" />
<el-table-column prop="quality_code" label="供应商质量代码" width="140" />
<el-table-column prop="supp_name" label="供应商名称" width="200" />
<el-table-column prop="class_name" label="物料分类" width="140" />
<el-table-column prop="unit_name" label="计量单位" />
<el-table-column prop="standing_time" label="静置时间分钟" width="130px" />
<el-table-column prop="product_series_name" label="系列" />
<el-table-column label="启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch

View File

@@ -124,8 +124,6 @@
<el-table-column v-if="false" prop="storagevehicle_id" label="载具标识" />
<el-table-column prop="storagevehicle_type_name" label="载具类型" :formatter="formattType" />
<el-table-column prop="storagevehicle_code" label="载具编码" />
<el-table-column prop="storagevehicle_name" label="载具名称" />
<el-table-column prop="pcsn" label="绑定物料" />
<el-table-column prop="sect_code" label="所属库区" :min-width="flexWidth('sect_code',crud.data,'载具类型', 30)">
<template slot-scope="scope">
<span :class="{ 'text-danger': isSectMissing(scope.row.sect_code), 'blink': isSectMissing(scope.row.sect_code) }">
@@ -133,7 +131,7 @@
</span>
</template>
</el-table-column>
<el-table-column prop="weigth" label="托盘重量" />
<el-table-column prop="weigth" label="载具重量" />
<el-table-column label="是否启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch