opt: 入库
This commit is contained in:
@@ -20,7 +20,7 @@ import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 手持普通搬运任务
|
||||
* 空载具管理
|
||||
* @Author: lyd
|
||||
* @Date: 2025/11/24
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<String> 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<TurnoverDetailDto> rowss = new ArrayList<>();
|
||||
for (String s : list) {
|
||||
List<TurnoverDetailDto> 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<MdPbStoragevehicleextDto> 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<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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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("库区不存在或者被禁用!");
|
||||
|
||||
@@ -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<IOStorInv> {
|
||||
* @param ioStorInv 主表实体类
|
||||
*/
|
||||
void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv);
|
||||
|
||||
List<TurnoverDetailDto> getCanuseSpecifiedIvt(Map param);
|
||||
|
||||
List<MdPbStoragevehicleextDto> queryAvailableSpecifiedInv(Map param);
|
||||
}
|
||||
|
||||
@@ -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<IOStorInv> {
|
||||
|
||||
List<JSONObject> getVehicleGroup ( List<String> collect);
|
||||
|
||||
List<TurnoverDetailDto> getCanuseSpecifiedIvt(@Param("param")Map param);
|
||||
|
||||
List<MdPbStoragevehicleextDto> queryAvailableSpecifiedInv(@Param("param")Map param);
|
||||
}
|
||||
|
||||
@@ -213,4 +213,121 @@
|
||||
</where>
|
||||
ORDER BY gp.create_time DESC
|
||||
</select>
|
||||
<select id="getCanuseSpecifiedIvt"
|
||||
resultType="org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto">
|
||||
SELECT
|
||||
ext.storagevehicleext_id,
|
||||
ext.storagevehicle_code,
|
||||
ext.material_id,
|
||||
material.material_code,
|
||||
material.material_name,
|
||||
ext.pcsn,
|
||||
ext.qty_unit_id,
|
||||
ext.qty_unit_name,
|
||||
ext.canuse_qty AS qty,
|
||||
ext.canuse_qty AS plan_qty,
|
||||
ext.frozen_qty,
|
||||
attr.sect_name AS turnout_sect_name,
|
||||
attr.sect_code AS turnout_sect_code,
|
||||
attr.sect_id,
|
||||
attr.stor_id,
|
||||
attr.struct_id,
|
||||
attr.struct_code AS turnout_struct_code
|
||||
FROM
|
||||
md_pb_storagevehicleext ext
|
||||
INNER JOIN md_me_materialbase material ON material.material_id = ext.material_id
|
||||
INNER JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
|
||||
<where>
|
||||
attr.lock_type = '0'
|
||||
AND attr.is_used = "1"
|
||||
AND ext.canuse_qty > 0
|
||||
<if test="param.stor_id != null and param.stor_id != ''">
|
||||
AND
|
||||
attr.stor_id LIKE #{param.stor_id}
|
||||
</if>
|
||||
|
||||
<if test="param.sect_id != null and param.sect_id != ''">
|
||||
AND
|
||||
attr.sect_id = #{param.sect_id}
|
||||
</if>
|
||||
|
||||
<if test="param.struct_code != null and param.struct_code != ''">
|
||||
AND
|
||||
attr.struct_code LIKE #{param.struct_code}
|
||||
</if>
|
||||
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
material.material_code LIKE #{param.material_code}
|
||||
</if>
|
||||
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
AND
|
||||
ext.pcsn = #{param.pcsn}
|
||||
</if>
|
||||
|
||||
<if test="param.vehilcle_code != null and param.vehilcle_code != ''">
|
||||
AND
|
||||
ext.storagevehicle_code = #{param.vehilcle_code}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
ORDER BY ext.insert_time Desc
|
||||
</select>
|
||||
<select id="queryAvailableSpecifiedInv"
|
||||
resultType="org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto">
|
||||
SELECT
|
||||
ext.storagevehicleext_id,
|
||||
ext.storagevehicle_code,
|
||||
ext.pcsn,
|
||||
ext.qty_unit_name,
|
||||
ext.canuse_qty,
|
||||
ext.frozen_qty,
|
||||
ext.remark,
|
||||
ext.insert_time,
|
||||
attr.sect_id,
|
||||
attr.sect_code,
|
||||
attr.sect_name,
|
||||
attr.struct_id,
|
||||
attr.struct_code,
|
||||
attr.struct_name,
|
||||
mater.material_code,
|
||||
mater.material_name
|
||||
FROM
|
||||
md_pb_storagevehicleext ext
|
||||
INNER JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = ext.material_id
|
||||
<where>
|
||||
1 = 1
|
||||
<if test="param.stor_id != null and param.stor_id != ''">
|
||||
AND
|
||||
attr.stor_id = #{param.stor_id}
|
||||
</if>
|
||||
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
mater.material_code = #{param.material_code}
|
||||
</if>
|
||||
|
||||
<if test="param.sect_id != null and param.sect_id != ''">
|
||||
AND
|
||||
attr.sect_id = #{param.sect_id}
|
||||
</if>
|
||||
|
||||
<if test="param.struct_code != null and param.struct_code != ''">
|
||||
AND
|
||||
(attr.struct_code LIKE CONCAT('%', #{param.struct_code}, '%'))
|
||||
</if>
|
||||
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
AND
|
||||
ext.pcsn LIKE #{param.pcsn}
|
||||
</if>
|
||||
|
||||
<if test="param.vehicle_code != null and param.vehicle_code != ''">
|
||||
AND
|
||||
ext.storagevehicle_code = #{param.vehicle_code}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -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<IOStorInvMapper, IOStorInv>
|
||||
ioStorInvDisMapper.updateById(dis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TurnoverDetailDto> getCanuseSpecifiedIvt(Map param) {
|
||||
return this.baseMapper.getCanuseSpecifiedIvt(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MdPbStoragevehicleextDto> queryAvailableSpecifiedInv(Map param) {
|
||||
return this.baseMapper.queryAvailableSpecifiedInv(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void confirm(JSONObject whereJson) {
|
||||
|
||||
Reference in New Issue
Block a user