diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaCommonController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaCommonController.java index d5b20f9..09ec94b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaCommonController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaCommonController.java @@ -20,7 +20,7 @@ import javax.annotation.Resource; import javax.validation.Valid; /** - * 手持普通搬运任务 + * 空载具管理 * @Author: lyd * @Date: 2025/11/24 */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java index 80e3b64..03187c9 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java @@ -54,7 +54,7 @@ public interface PdaBuildParamService { */ JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr); - JSONObject buildManuaOutDivData(JSONObject param, String invId); + JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, String invId); JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/dto/TurnoverDetailDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/dto/TurnoverDetailDto.java new file mode 100644 index 0000000..f12e8ba --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/dto/TurnoverDetailDto.java @@ -0,0 +1,65 @@ +package org.nl.wms.pda.general_management.service.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * @Author: lyd + * @Date: 2025/12/10 + */ +@Data +public class TurnoverDetailDto { + @JsonProperty("turnout_struct_code") + private String turnout_struct_code; + + @JsonProperty("qty_unit_id") + private String qty_unit_id; + + @JsonProperty("stor_id") + private String stor_id; + + @JsonProperty("storagevehicle_code") + private String storagevehicle_code; + + @JsonProperty("qty") + private Integer qty; + + @JsonProperty("sect_id") + private String sect_id; + + @JsonProperty("qty_unit_name") + private String qty_unit_name; + + @JsonProperty("struct_id") + private String struct_id; + + @JsonProperty("material_id") + private String material_id; + + @JsonProperty("pcsn") + private String pcsn; + + @JsonProperty("turnout_sect_code") + private String turnout_sect_code; + + @JsonProperty("frozen_qty") + private Integer frozen_qty; + + @JsonProperty("turnout_sect_name") + private String turnout_sect_name; + + @JsonProperty("material_name") + private String material_name; + + @JsonProperty("storagevehicleext_id") + private String storagevehicleext_id; + + @JsonProperty("material_code") + private String material_code; + + @JsonProperty("plan_qty") + private Integer plan_qty; + + @JsonProperty("edit") + private Boolean edit = Boolean.TRUE; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java index b82ee1b..cbc67d3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java @@ -3,19 +3,25 @@ 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.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.list.TreeList; import org.nl.common.exception.BadRequestException; +import org.nl.config.MapOf; 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.dto.MdPbStoragevehicleextDto; import org.nl.wms.pda.general_management.service.PdaBuildParamService; import org.nl.wms.pda.general_management.service.PdaCommonService; import org.nl.wms.pda.general_management.service.dto.AssemblyPalletParam; +import org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_management.service.IOutBillService; import org.nl.wms.warehouse_management.service.IRawAssistIStorService; import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; @@ -47,6 +53,8 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { private IMdPbGroupplateService groupplateService; @Resource private IRawAssistIStorService rawAssistIStorService; + @Resource + private IOutBillService outBillService; @Override public void doGroupPallet(JSONObject param, String vehicleCode) { @@ -154,21 +162,56 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { public JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr) { JSONObject insertInvObj = new JSONObject(); JSONArray rows = param.getJSONArray("rows"); + JSONObject row = rows.getJSONObject(0); + List list = new TreeList<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject object = rows.getJSONObject(i); + if (!list.contains(object.getString("pcsn"))) { + list.add(object.getString("pcsn")); + } + } + List rowss = new ArrayList<>(); + for (String s : list) { + List temps = outBillService.getCanuseSpecifiedIvt(MapOf.of("stor_id", row.getString("stor_id") + , "sect_id", row.getString("sect_id") + , "struct_code", row.getString("struct_code") + , "material_code", row.getString("material_code") + , "pcsn", s + , "vehicle_code", row.getString("vehicle_code"))); + if (temps.size() > 0) { + rowss.add(temps.get(0)); + } + } insertInvObj.put("stor_id", sectattr.getStor_id()); insertInvObj.put("bill_status", "10"); insertInvObj.put("bill_type", param.getString("bill_type")); insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd")); - insertInvObj.put("tableData", rows); + insertInvObj.put("tableData", rowss); return insertInvObj; } @Override - public JSONObject buildManuaOutDivData(JSONObject param, String invId) { + public JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, String invId) { JSONObject outDivObj = new JSONObject(); JSONObject row = param.getJSONArray("rows").getJSONObject(0); - row.put("iostorinv_id", invId); - outDivObj.put("row", row); - outDivObj.put("rows", param.getJSONArray("rows")); + List dtoList = outBillService.queryAvailableSpecifiedInv(MapOf.of("stor_id", outStructAttr.getStor_id() + , "material_code", row.getString("material_code") + , "sect_id", outStructAttr.getSect_id() + , "struct_code", row.getString("struct_code") + , "pcsn", row.getString("pcsn") + , "vehicle_code", row.getString("vehicle_code"))); + if (dtoList.size() == 0) { + throw new BadRequestException("未找到库存信息!"); + } + JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(dtoList.get(0))); + List> invDtls = ioStorInvDtlMapper.selectMaps(new LambdaQueryWrapper() + .eq(IOStorInvDtl::getIostorinv_id, invId)); + for (Map 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; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java index e9c228a..c6c59a5 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java @@ -110,7 +110,6 @@ public class PdaProductionServiceImpl implements PdaProductionService { } @Override - @Transactional(rollbackFor = Exception.class) public PdaResponse confirmCallMaterial(JSONObject param) { // point_code, rows,sect_code log.info("手持托盘叫料:{}", param); @@ -138,7 +137,7 @@ public class PdaProductionServiceImpl implements PdaProductionService { JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, outStructAttr); String invId = outBillService.insertDtl(invObj); // 2 调用分配 - JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, invId); + JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, outStructAttr, invId); outBillService.manualDiv(divObj); // 3 创建任务 JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(endPoint, invId); @@ -333,6 +332,7 @@ public class PdaProductionServiceImpl implements PdaProductionService { @Override public PdaResponse receivedIn(JSONObject param) { log.info("拆包缓冲间确认入库:{}", param); + assertNotBlankJson(param, "参数不能为空!", "point_code", "vehicle_code", "sect_code", "rows"); RLock lock = redissonClient.getLock("lock:confirmPalletAssemblyIn"); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { @@ -340,9 +340,6 @@ public class PdaProductionServiceImpl implements PdaProductionService { // param:point_code(点位), vehicle_code, sect_code,rows String search = param.getString("point_code"); String sect_code = param.getString("sect_code"); - if (ObjectUtil.isEmpty(search)) { - throw new BadRequestException("请输入点位编码!"); - } SchBasePoint startPoint = pointService.getByPointCode(search, true); if (ObjectUtil.isEmpty(startPoint)) { throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!"); @@ -350,9 +347,6 @@ public class PdaProductionServiceImpl implements PdaProductionService { if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) { throw new BadRequestException("点位载具号为空!"); } - if (ObjectUtil.isEmpty(sect_code)) { - throw new BadRequestException("请选择入库库区!"); - } Sectattr sectattr = sectattrService.findByCode(sect_code, true); if (ObjectUtil.isEmpty(sectattr)) { throw new BadRequestException("库区不存在或者被禁用!"); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java index b3add1c..db5fd9e 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java @@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; +import org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.warehouse_management.service.dao.IOStorInv; import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -179,4 +181,8 @@ public interface IOutBillService extends IService { * @param ioStorInv 主表实体类 */ void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv); + + List getCanuseSpecifiedIvt(Map param); + + List queryAvailableSpecifiedInv(Map param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java index 695e231..9bcb696 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java @@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; +import org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto; import org.nl.wms.warehouse_management.service.dao.IOStorInv; import org.nl.wms.warehouse_management.service.dto.GroupPlateDto; import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,4 +32,7 @@ public interface IOStorInvMapper extends BaseMapper { List getVehicleGroup ( List collect); + List getCanuseSpecifiedIvt(@Param("param")Map param); + + List queryAvailableSpecifiedInv(@Param("param")Map param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml index 782fe01..605be45 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml @@ -213,4 +213,121 @@ ORDER BY gp.create_time DESC + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java index ed57ce7..51d0dc0 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java @@ -30,6 +30,7 @@ import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; import org.nl.wms.basedata_manage.service.dto.StrategyMater; import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO; import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; +import org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto; 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; @@ -1121,6 +1122,16 @@ public class OutBillServiceImpl extends ServiceImpl ioStorInvDisMapper.updateById(dis); } + @Override + public List getCanuseSpecifiedIvt(Map param) { + return this.baseMapper.getCanuseSpecifiedIvt(param); + } + + @Override + public List queryAvailableSpecifiedInv(Map param) { + return this.baseMapper.queryAvailableSpecifiedInv(param); + } + @Override @Transactional public void confirm(JSONObject whereJson) {