opt: 压片前段业务
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.basedata_manage.service;
|
package org.nl.wms.basedata_manage.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||||
|
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -49,12 +50,12 @@ public interface PdaBuildParamService {
|
|||||||
/**
|
/**
|
||||||
* 构建出库单参数
|
* 构建出库单参数
|
||||||
* @param param
|
* @param param
|
||||||
* @param sectattr
|
* @param storId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr);
|
JSONObject doBuildOutInvObj(JSONObject param, String storId);
|
||||||
|
|
||||||
JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, String invId);
|
JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, IOStorInvDtlDto ioStorInvDtlDto);
|
||||||
|
|
||||||
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
|||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||||
|
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -163,26 +164,25 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr) {
|
public JSONObject doBuildOutInvObj(JSONObject param, String storId) {
|
||||||
JSONObject insertInvObj = new JSONObject();
|
JSONObject insertInvObj = new JSONObject();
|
||||||
JSONArray rows = param.getJSONArray("rows");
|
JSONArray rows = param.getJSONArray("rows");
|
||||||
JSONObject row = rows.getJSONObject(0);
|
|
||||||
List<JSONObject> result = filterAndSumByMaterialIdAndPcsn(rows);
|
List<JSONObject> result = filterAndSumByMaterialIdAndPcsn(rows);
|
||||||
List<JSONObject> rowList = new ArrayList<>();
|
List<JSONObject> rowList = new ArrayList<>();
|
||||||
for (JSONObject rowObj : result) {
|
for (JSONObject rowObj : result) {
|
||||||
List<JSONObject> temps = outBillService.getCanuseSpecifiedIvt(MapOf.of("stor_id", row.getString("stor_id")
|
List<JSONObject> temps = outBillService.getCanuseSpecifiedIvt(MapOf.of("stor_id", rowObj.getString("stor_id")
|
||||||
, "sect_id", row.getString("sect_id")
|
, "sect_id", rowObj.getString("sect_id")
|
||||||
, "struct_code", row.getString("struct_code")
|
, "struct_code", rowObj.getString("struct_code")
|
||||||
, "material_code", row.getString("material_code")
|
, "material_code", rowObj.getString("material_code")
|
||||||
, "pcsn", rowObj.getString("pcsn")
|
, "pcsn", rowObj.getString("pcsn")
|
||||||
, "vehicle_code", row.getString("vehicle_code")));
|
, "vehicle_code", rowObj.getString("vehicle_code")));
|
||||||
if (temps.size() > 0) {
|
if (temps.size() > 0) {
|
||||||
JSONObject temp = temps.get(0);
|
JSONObject temp = temps.get(0);
|
||||||
temp.put("plan_qty", rowObj.getString("qty"));
|
temp.put("plan_qty", rowObj.getString("qty"));
|
||||||
rowList.add(temp);
|
rowList.add(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
insertInvObj.put("stor_id", sectattr.getStor_id());
|
insertInvObj.put("stor_id", storId);
|
||||||
insertInvObj.put("bill_status", "10");
|
insertInvObj.put("bill_status", "10");
|
||||||
insertInvObj.put("bill_type", param.getString("bill_type"));
|
insertInvObj.put("bill_type", param.getString("bill_type"));
|
||||||
insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||||
@@ -224,27 +224,28 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, String invId) {
|
public JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, IOStorInvDtlDto ioStorInvDtlDto) {
|
||||||
JSONObject outDivObj = new JSONObject();
|
JSONObject outDivObj = new JSONObject();
|
||||||
JSONObject row = param.getJSONArray("rows").getJSONObject(0);
|
// 对应的明细id和主表id
|
||||||
List<MdPbStoragevehicleextDto> dtoList = outBillService.queryAvailableSpecifiedInv(MapOf.of("stor_id", outStructAttr.getStor_id()
|
JSONObject row = new JSONObject();
|
||||||
, "material_code", row.getString("material_code")
|
outDivObj.put("row", row);
|
||||||
, "sect_id", outStructAttr.getSect_id()
|
row.put("iostorinv_id", ioStorInvDtlDto.getIostorinv_id());
|
||||||
, "struct_code", row.getString("struct_code")
|
row.put("iostorinvdtl_id", ioStorInvDtlDto.getIostorinvdtl_id());
|
||||||
, "pcsn", row.getString("pcsn")
|
// 托盘中的某个明细
|
||||||
, "vehicle_code", row.getString("vehicle_code")));
|
JSONObject pRow = param.getJSONObject("row");
|
||||||
if (dtoList.size() == 0) {
|
String vehicleCode = pRow.getString("vehicle_code");
|
||||||
throw new BadRequestException("未找到库存信息!");
|
JSONArray dtLMaterialInfo = groupplateService.getDtLMaterialInfo(vehicleCode, ioStorInvDtlDto.getMaterial_id(), ioStorInvDtlDto.getPcsn());
|
||||||
|
outDivObj.put("rows", dtLMaterialInfo);
|
||||||
|
for (int i = 0; i < dtLMaterialInfo.size(); i++) {
|
||||||
|
JSONObject rowsJSONObject = dtLMaterialInfo.getJSONObject(i);
|
||||||
|
rowsJSONObject.put("sect_id", pRow.getString("sect_id"));
|
||||||
|
rowsJSONObject.put("sect_name", pRow.getString("sect_name"));
|
||||||
|
rowsJSONObject.put("sect_code", pRow.getString("sect_code"));
|
||||||
|
rowsJSONObject.put("struct_id", pRow.getString("struct_id"));
|
||||||
|
rowsJSONObject.put("struct_code", pRow.getString("struct_code"));
|
||||||
|
rowsJSONObject.put("struct_name", pRow.getString("struct_name"));
|
||||||
}
|
}
|
||||||
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(dtoList.get(0)));
|
|
||||||
List<Map<String, Object>> invDtls = ioStorInvDtlMapper.selectMaps(new LambdaQueryWrapper<IOStorInvDtl>()
|
|
||||||
.eq(IOStorInvDtl::getIostorinv_id, invId));
|
|
||||||
for (Map<String, Object> invDtl : invDtls) {
|
|
||||||
invDtl.put("storagevehicle_code", row.getString("vehicle_code"));
|
|
||||||
}
|
|
||||||
jsonObject.put("iostorinv_id", invId);
|
|
||||||
outDivObj.put("row", jsonObject);
|
|
||||||
outDivObj.put("rows", invDtls);
|
|
||||||
return outDivObj;
|
return outDivObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.pda.general_management.service.impl;
|
package org.nl.wms.pda.general_management.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
@@ -41,6 +42,7 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
|||||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||||
|
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||||
import org.redisson.api.RLock;
|
import org.redisson.api.RLock;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -111,22 +113,21 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(search)) {
|
if (ObjectUtil.isEmpty(search)) {
|
||||||
throw new BadRequestException("载具不存在!");
|
throw new BadRequestException("载具不存在!");
|
||||||
}
|
}
|
||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1"));
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1", "2"));
|
||||||
return PdaResponse.requestParamOk(res);
|
return PdaResponse.requestParamOk(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse getStockGroupInfo(JSONObject param) {
|
public PdaResponse getStockGroupInfo(JSONObject param) {
|
||||||
// sect_code, material_id, pcsn
|
// material_id, pcsn
|
||||||
if (ObjectUtil.isEmpty(param.get("sect_code"))) {
|
|
||||||
throw new BadRequestException("请选择库区!");
|
|
||||||
}
|
|
||||||
List<JSONObject> res = groupplateService.getStockGroupInfo(param);
|
List<JSONObject> res = groupplateService.getStockGroupInfo(param);
|
||||||
return PdaResponse.requestParamOk(res);
|
return PdaResponse.requestParamOk(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PdaResponse confirmCallMaterial(JSONObject param) {
|
public PdaResponse confirmCallMaterial(JSONObject param) {
|
||||||
|
// hint: 没有创建出库单
|
||||||
// point_code, row,sect_code
|
// point_code, row,sect_code
|
||||||
log.info("手持托盘叫料:{}", param);
|
log.info("手持托盘叫料:{}", param);
|
||||||
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
||||||
@@ -140,12 +141,47 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(endPoint)) {
|
if (ObjectUtil.isEmpty(endPoint)) {
|
||||||
throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!");
|
throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!");
|
||||||
}
|
}
|
||||||
|
if (!"1".equals(endPoint.getPoint_status())) {
|
||||||
|
throw new BadRequestException("该点位不是空位,请检查后呼叫!");
|
||||||
|
}
|
||||||
|
// 判断任务是否创建
|
||||||
|
List<SchBaseTask> tasks = taskService.getTaskByQuery(new LambdaQueryWrapper<SchBaseTask>()
|
||||||
|
.eq(SchBaseTask::getPoint_code1, pointCode));
|
||||||
|
if (tasks.size() > 0) {
|
||||||
|
throw new BadRequestException("该点位已创建过任务!");
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject row = param.getJSONObject("row");
|
JSONObject row = param.getJSONObject("row");
|
||||||
|
// 如果是制粒,需要走正规出入库流程
|
||||||
|
if ("ZLQ".equals(endPoint.getRegion_code())) {
|
||||||
|
Structattr structattr = structattrService.getByCode(row.getString("struct_code"));
|
||||||
|
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("批料出库"));
|
||||||
|
// 1 创建出库单、明细、分配明细
|
||||||
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(row.getString("vehicle_code"), Arrays.asList("1", "2"));
|
||||||
|
param.put("rows", res);
|
||||||
|
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id());
|
||||||
|
String invId = outBillService.insertDtl(invObj);
|
||||||
|
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
|
||||||
|
// 2 循环,根据插入的dtl 去寻找袋的组盘信息调用手动分配
|
||||||
|
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
|
||||||
|
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
|
||||||
|
JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, sectattr, ioStorInvDtlDto);
|
||||||
|
outBillService.manualDiv(divObj);
|
||||||
|
}
|
||||||
|
// 3 创建任务
|
||||||
|
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(endPoint, invId);
|
||||||
|
outBillService.allSetPoint(jsonMst);
|
||||||
|
|
||||||
|
return PdaResponse.requestOk("呼叫成功!");
|
||||||
|
}
|
||||||
|
|
||||||
// 创建任务
|
// 创建任务
|
||||||
JSONObject taskParam = new JSONObject();
|
JSONObject taskParam = new JSONObject();
|
||||||
taskParam.put("point_code1", row.getString("struct_code"));
|
taskParam.put("point_code1", row.getString("struct_code"));
|
||||||
taskParam.put("point_code2", param.getString("point_code"));
|
taskParam.put("point_code2", param.getString("point_code"));
|
||||||
taskParam.put("vehicle_code", row.getString("vehicle_code"));
|
taskParam.put("vehicle_code", row.getString("vehicle_code"));
|
||||||
|
// 代表任务完成的时候不需要调用库存完成
|
||||||
|
taskParam.put("flag", "1");
|
||||||
palletOutTask.create(taskParam);
|
palletOutTask.create(taskParam);
|
||||||
return PdaResponse.requestOk("呼叫成功!");
|
return PdaResponse.requestOk("呼叫成功!");
|
||||||
}
|
}
|
||||||
@@ -405,7 +441,15 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (res.size() == 0) {
|
if (res.size() == 0) {
|
||||||
throw new BadRequestException("当前托盘号不存在物料信息,请检查!");
|
throw new BadRequestException("当前托盘号不存在物料信息,请检查!");
|
||||||
}
|
}
|
||||||
preProcessingInTask.create(param);
|
// 如果是仓位就需要走原辅料入库
|
||||||
|
Sectattr sectCode = sectattrService.findByCode(param.getString("sect_code"), false);
|
||||||
|
if (ObjectUtil.isNotEmpty(sectCode)) {
|
||||||
|
// 辅料入库
|
||||||
|
param.put("rows", res);
|
||||||
|
receivedIn(param);
|
||||||
|
} else {
|
||||||
|
preProcessingInTask.create(param);
|
||||||
|
}
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -424,6 +468,16 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
param.getString("vehicle_code")));
|
param.getString("vehicle_code")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 各工序作业完成,组盘后下料入库或缓存:
|
||||||
|
* 1、称量、粉碎下料组盘后,扫点位/载具点确认,系统分配物料存放室或批料室空货位入库;
|
||||||
|
* 2、压片下料组盘后,扫点位、载具点确认,系统分配中间站空货位入库;
|
||||||
|
* 3、包衣下料组盘后,扫点位点呼叫AGV,系统呼叫AGV来取货;扫点位、载具点确认,系统分配中间站空货位入库;
|
||||||
|
* 4、码垛完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
||||||
|
* 5、缠膜完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse productionLine(JSONObject param) {
|
public PdaResponse productionLine(JSONObject param) {
|
||||||
// point_code, vehicle_code
|
// point_code, vehicle_code
|
||||||
@@ -435,11 +489,55 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
throw new BadRequestException("点位[" + pointCode +"]不存在!");
|
throw new BadRequestException("点位[" + pointCode +"]不存在!");
|
||||||
}
|
}
|
||||||
|
if (point.getRegion_code().startsWith("FSSQ")) {
|
||||||
|
// 粉碎室入库逻辑
|
||||||
|
productionInStorage(param, point);
|
||||||
|
return PdaResponse.requestOk();
|
||||||
|
}
|
||||||
|
|
||||||
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
||||||
task.create(param);
|
task.create(param);
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库
|
||||||
|
* @param param
|
||||||
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void productionInStorage(JSONObject param, SchBasePoint point) {
|
||||||
|
// 入库库区
|
||||||
|
String inSect = point.getIn_sect();
|
||||||
|
if (ObjectUtil.isEmpty(inSect)) {
|
||||||
|
throw new BadRequestException("点位【" + point.getPoint_code() + "】未配置入库库区!");
|
||||||
|
}
|
||||||
|
Sectattr sectattr = sectattrService.findByCode(inSect, false);
|
||||||
|
if (ObjectUtil.isEmpty(sectattr)) {
|
||||||
|
throw new BadRequestException("库区不存在,请确保库区存在!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 入库三件套
|
||||||
|
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("粉碎入库"));
|
||||||
|
// 设置rows(需要根据物料和批次区分)
|
||||||
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(param.getString("vehicle_code")
|
||||||
|
, Arrays.asList("1"));
|
||||||
|
// 需要过滤出物料id+批次并汇总qty
|
||||||
|
JSONArray jsonArray = new JSONArray();
|
||||||
|
jsonArray.addAll(res);
|
||||||
|
List<JSONObject> jsonObjects = DefaultPdaBuildParamService.filterAndSumByMaterialIdAndPcsn(jsonArray);
|
||||||
|
param.put("rows", jsonObjects);
|
||||||
|
// 1 创建入库单、明细、分配明细
|
||||||
|
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, point, sectattr);
|
||||||
|
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||||
|
// 2 调用分配
|
||||||
|
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true);
|
||||||
|
rawAssistIStorService.divStruct(divObj);
|
||||||
|
// 3 创建任务
|
||||||
|
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(point, invId);
|
||||||
|
rawAssistIStorService.divPoint(jsonMst);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse receivedIn(JSONObject param) {
|
public PdaResponse receivedIn(JSONObject param) {
|
||||||
@@ -459,6 +557,9 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
|
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
|
||||||
throw new BadRequestException("点位载具号为空!");
|
throw new BadRequestException("点位载具号为空!");
|
||||||
}
|
}
|
||||||
|
if (!ObjectUtil.equals(startPoint.getVehicle_code(), param.getString("vehicle_code"))) {
|
||||||
|
throw new BadRequestException("点位载具号不一致!!!");
|
||||||
|
}
|
||||||
Sectattr sectattr = sectattrService.findByCode(sect_code, true);
|
Sectattr sectattr = sectattrService.findByCode(sect_code, true);
|
||||||
if (ObjectUtil.isEmpty(sectattr)) {
|
if (ObjectUtil.isEmpty(sectattr)) {
|
||||||
throw new BadRequestException("库区不存在或者被禁用!");
|
throw new BadRequestException("库区不存在或者被禁用!");
|
||||||
@@ -469,6 +570,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (tasks.size() > 0) {
|
if (tasks.size() > 0) {
|
||||||
throw new BadRequestException("该点位已创建过任务!");
|
throw new BadRequestException("该点位已创建过任务!");
|
||||||
}
|
}
|
||||||
|
storagevehicleinfoService.getByCode(param.getString("vehicle_code"));
|
||||||
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库"));
|
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库"));
|
||||||
// 1 创建入库单、明细、分配明细
|
// 1 创建入库单、明细、分配明细
|
||||||
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
|
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
|
||||||
|
|||||||
@@ -100,7 +100,9 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
|
|
||||||
// 点位上锁
|
// 点位上锁
|
||||||
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("其他锁"))
|
.set(Structattr::getLock_type, ObjectUtil.isNotEmpty(json.get("flag"))
|
||||||
|
? IOSEnum.LOCK_TYPE.code("其他锁")
|
||||||
|
: IOSEnum.LOCK_TYPE.code("出库锁"))
|
||||||
.eq(Structattr::getStruct_code, task.getPoint_code1()));
|
.eq(Structattr::getStruct_code, task.getPoint_code1()));
|
||||||
|
|
||||||
// 下发任务
|
// 下发任务
|
||||||
@@ -123,7 +125,7 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
|
|
||||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
acsTaskDto.setIs_wait(taskDao.getIs_wait());
|
acsTaskDto.setIs_wait(taskDao.getIs_wait());
|
||||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||||
|
|
||||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||||
@@ -192,6 +194,11 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||||
);
|
);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(taskObj.getRequest_param());
|
||||||
|
if (ObjectUtil.isEmpty(jsonObject.get("flag"))) {
|
||||||
|
// 解锁、库存清空
|
||||||
|
outBillService.taskFinish(taskObj);
|
||||||
|
}
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setRemark("已完成");
|
taskObj.setRemark("已完成");
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public class PreProcessingInTask extends AbstractTask {
|
|||||||
@Override
|
@Override
|
||||||
public String create(JSONObject json) {
|
public String create(JSONObject json) {
|
||||||
// 获取终点
|
// 获取终点
|
||||||
|
// 考虑提供的室区域还是库区
|
||||||
List<SchBasePoint> points = pointService.getCanUsePointByRegion(json.getString("sect_code"));
|
List<SchBasePoint> points = pointService.getCanUsePointByRegion(json.getString("sect_code"));
|
||||||
if (ObjectUtil.isEmpty(points)) {
|
if (ObjectUtil.isEmpty(points)) {
|
||||||
throw new BadRequestException("暂无可用点位!");
|
throw new BadRequestException("暂无可用点位!");
|
||||||
@@ -88,7 +89,7 @@ public class PreProcessingInTask extends AbstractTask {
|
|||||||
|
|
||||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
||||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||||
|
|
||||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||||
|
|||||||
@@ -0,0 +1,189 @@
|
|||||||
|
package org.nl.wms.sch_manage.service.util.tasks;
|
||||||
|
|
||||||
|
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.common.utils.CodeUtil;
|
||||||
|
import org.nl.common.utils.SecurityUtils;
|
||||||
|
import org.nl.config.IdUtil;
|
||||||
|
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||||
|
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||||
|
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.ACSTaskTypeEnum;
|
||||||
|
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||||
|
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||||
|
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||||
|
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||||
|
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生产入库:粉碎入库
|
||||||
|
* @author: lyd
|
||||||
|
* @date: 2026/1/8
|
||||||
|
*/
|
||||||
|
@Component("ProduceInTask")
|
||||||
|
public class ProduceInTask extends AbstractTask {
|
||||||
|
@Resource
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
@Resource
|
||||||
|
private IRawAssistIStorService rawAssistIStorService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||||
|
@Resource
|
||||||
|
private ISchBasePointService pointService;
|
||||||
|
@Override
|
||||||
|
public String create(JSONObject json) {
|
||||||
|
SchBaseTask task = new SchBaseTask();
|
||||||
|
task.setTask_id(IdUtil.getStringId());
|
||||||
|
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||||
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
|
task.setConfig_code(ProduceInTask.class.getSimpleName());
|
||||||
|
task.setPoint_code1(json.getString("point_code1"));
|
||||||
|
task.setPoint_code2(json.getString("point_code2"));
|
||||||
|
task.setVehicle_code(json.getString("vehicle_code"));
|
||||||
|
task.setMaterial_id(json.getString("material_id"));
|
||||||
|
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||||
|
task.setGroup_id(json.getString("group_id"));
|
||||||
|
task.setRequest_param(json.toString());
|
||||||
|
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||||
|
task.setPriority(json.getString("Priority"));
|
||||||
|
task.setIs_wait(json.getString("is_wait"));
|
||||||
|
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||||
|
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||||
|
task.setCreate_time(DateUtil.now());
|
||||||
|
taskService.save(task);
|
||||||
|
|
||||||
|
// 下发任务
|
||||||
|
// this.sendTaskOne(task.getTask_id());
|
||||||
|
return task.getTask_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AcsTaskDto sendAcsParam(String taskId) {
|
||||||
|
SchBaseTask taskDao = taskService.getById(taskId);
|
||||||
|
|
||||||
|
// 组织下发给acs的数据
|
||||||
|
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||||
|
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||||
|
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||||
|
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||||
|
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||||
|
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||||
|
|
||||||
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
|
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
||||||
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||||
|
|
||||||
|
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||||
|
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||||
|
acsTaskDto.setIs_get_pause(IOSConstant.ZERO);
|
||||||
|
acsTaskDto.setIs_put_pause(IOSConstant.ZERO);
|
||||||
|
|
||||||
|
return acsTaskDto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
|
// 校验任务
|
||||||
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||||
|
throw new BadRequestException("该任务已完成!");
|
||||||
|
}
|
||||||
|
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||||
|
throw new BadRequestException("该任务已取消!");
|
||||||
|
}
|
||||||
|
// 根据传来的类型去对任务进行操作
|
||||||
|
if (status.equals(TaskStatus.EXECUTING)) {
|
||||||
|
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||||
|
taskObj.setRemark("执行中");
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
}
|
||||||
|
if (status.equals(TaskStatus.FINISHED)) {
|
||||||
|
this.finishTask(taskObj);
|
||||||
|
}
|
||||||
|
if (status.equals(TaskStatus.CANCELED)) {
|
||||||
|
this.cancelTask(taskObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
|
// 取消任务
|
||||||
|
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||||
|
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||||
|
.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())
|
||||||
|
);
|
||||||
|
|
||||||
|
// 更新任务状态
|
||||||
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
|
taskObj.setRemark("已取消");
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void finishTask(SchBaseTask taskObj) {
|
||||||
|
// 任务完成
|
||||||
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskObj.setRemark("已完成");
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
rawAssistIStorService.taskFinish(taskObj);
|
||||||
|
// 更新起点
|
||||||
|
pointService.update(
|
||||||
|
new UpdateWrapper<SchBasePoint>().lambda()
|
||||||
|
.set(SchBasePoint::getVehicle_code, "")
|
||||||
|
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||||
|
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||||
|
.set(SchBasePoint::getIng_task_code, "")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forceFinish(String task_code) {
|
||||||
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
|
throw new BadRequestException("该任务不存在");
|
||||||
|
}
|
||||||
|
this.finishTask(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel(String task_code) {
|
||||||
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
|
throw new BadRequestException("该任务不存在");
|
||||||
|
}
|
||||||
|
if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
|
||||||
|
throw new BadRequestException("任务状态必须为生成才能取消任务");
|
||||||
|
}
|
||||||
|
this.cancelTask(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void taskConfirm(String task_code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
|||||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@@ -87,7 +88,7 @@ public class RawInTask extends AbstractTask {
|
|||||||
|
|
||||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
||||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||||
|
|
||||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||||
@@ -121,6 +122,7 @@ public class RawInTask extends AbstractTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void cancelTask(SchBaseTask taskObj) {
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
// 取消任务
|
// 取消任务
|
||||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||||
@@ -144,6 +146,7 @@ public class RawInTask extends AbstractTask {
|
|||||||
taskService.updateById(taskObj);
|
taskService.updateById(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void finishTask(SchBaseTask taskObj) {
|
public void finishTask(SchBaseTask taskObj) {
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
|||||||
@@ -35,12 +35,14 @@ public enum IOSEnum {
|
|||||||
"原辅料入库", "0001",
|
"原辅料入库", "0001",
|
||||||
"剩料回库", "0002",
|
"剩料回库", "0002",
|
||||||
"中间站入库", "0003",
|
"中间站入库", "0003",
|
||||||
"直接入库", "0004"
|
"直接入库", "0004",
|
||||||
|
"粉碎入库", "0005"
|
||||||
)),
|
)),
|
||||||
|
|
||||||
// 出库业务类型
|
// 出库业务类型
|
||||||
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
||||||
"原辅料出库", "1001",
|
"原辅料出库", "1001",
|
||||||
|
"批料出库", "1002",
|
||||||
"直接出库", "1099"
|
"直接出库", "1099"
|
||||||
)),
|
)),
|
||||||
|
|
||||||
@@ -52,12 +54,15 @@ public enum IOSEnum {
|
|||||||
|
|
||||||
// 入库任务配置类编码
|
// 入库任务配置类编码
|
||||||
IN_CONFIG_CODE(MapOf.of("0009", "HandInTask",
|
IN_CONFIG_CODE(MapOf.of("0009", "HandInTask",
|
||||||
"0001", "RawInTask", "0002", "RawInTask", "0003", "CenterInTask"
|
"0001", "RawInTask",
|
||||||
|
"0002", "RawInTask",
|
||||||
|
"0003", "CenterInTask",
|
||||||
|
"0005", "ProduceInTask"
|
||||||
)),
|
)),
|
||||||
|
|
||||||
// 出库任务配置类编码
|
// 出库任务配置类编码
|
||||||
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask",
|
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask",
|
||||||
"1001", "CallMaterialTask"
|
"1001", "CallMaterialTask", "1002", "PalletOutTask"
|
||||||
)),
|
)),
|
||||||
// 下料任务配置编码
|
// 下料任务配置编码
|
||||||
DOWN_CONFIG_CODE(MapOf.of("YPQ", "TabletingInTask"
|
DOWN_CONFIG_CODE(MapOf.of("YPQ", "TabletingInTask"
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.warehouse_management.service;
|
package org.nl.wms.warehouse_management.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
@@ -113,4 +114,6 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
|||||||
* @return List<MdMeMaterialbase>
|
* @return List<MdMeMaterialbase>
|
||||||
*/
|
*/
|
||||||
List<MdMeMaterialbase> queryMaterList();
|
List<MdMeMaterialbase> queryMaterList();
|
||||||
|
|
||||||
|
JSONArray getDtLMaterialInfo(String vehicleCode, String materialId, String pcsn);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.warehouse_management.service.dao.mapper;
|
package org.nl.wms.warehouse_management.service.dao.mapper;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@@ -69,4 +70,6 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
|
|||||||
List<JSONObject> getPalletViewByVehicleCode(String search, List<String> status);
|
List<JSONObject> getPalletViewByVehicleCode(String search, List<String> status);
|
||||||
|
|
||||||
List<JSONObject> getStockGroupInfo(JSONObject param);
|
List<JSONObject> getStockGroupInfo(JSONObject param);
|
||||||
|
|
||||||
|
JSONArray getDtLMaterialInfo(String vehicleCode, String materialId, String pcsn);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,9 +207,15 @@
|
|||||||
AND
|
AND
|
||||||
mg.pcsn = #{pcsn}
|
mg.pcsn = #{pcsn}
|
||||||
</if>
|
</if>
|
||||||
<if test="sect_code != null and sect_code != ''">
|
</select>
|
||||||
AND
|
<select id="getDtLMaterialInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
ss.sect_code = #{sect_code}
|
SELECT
|
||||||
</if>
|
g.*,
|
||||||
|
g.vehicle_code AS storagevehicle_code,
|
||||||
|
g.qty AS canuse_qty
|
||||||
|
FROM
|
||||||
|
`md_pb_groupplate` g
|
||||||
|
WHERE g.vehicle_code = #{vehicleCode} AND g.material_id = #{materialId}
|
||||||
|
AND g.pcsn = #{pcsn} AND `status` = '2'
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.wms.warehouse_management.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -212,4 +213,9 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
|||||||
.eq(MdMeMaterialbase::getIs_used, IOSConstant.ONE)
|
.eq(MdMeMaterialbase::getIs_used, IOSConstant.ONE)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONArray getDtLMaterialInfo(String vehicleCode, String materialId, String pcsn) {
|
||||||
|
return this.baseMapper.getDtLMaterialInfo(vehicleCode, materialId, pcsn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user