opt: 压片前段业务

This commit is contained in:
2025-12-25 09:57:51 +08:00
parent c9bb61c6cd
commit 7e555c7b32
9 changed files with 67 additions and 33 deletions

View File

@@ -1,5 +1,6 @@
package org.nl.wms.basedata_manage.service.dao;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -239,6 +240,7 @@ public class Structattr implements Serializable {
/**
* 存储载具号
*/
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String storagevehicle_code;
/**

View File

@@ -48,12 +48,10 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.nl.common.utils.ValidationUtil.*;
@@ -113,7 +111,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
if (ObjectUtil.isEmpty(search)) {
throw new BadRequestException("载具不存在!");
}
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search);
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1"));
return PdaResponse.requestParamOk(res);
}
@@ -158,7 +156,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
if (ObjectUtil.isEmpty(search)) {
throw new BadRequestException("请输入袋号编码!");
}
List<JSONObject> groups = groupplateService.getPalletView(search, "2");
List<JSONObject> groups = groupplateService.getPalletView(search, Arrays.asList("1", "2"));
if (groups.size() != 1) {
throw new BadRequestException(groups.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
}
@@ -195,7 +193,6 @@ public class PdaProductionServiceImpl implements PdaProductionService {
throw new BadRequestException("未找到当前托盘的原始库位信息!");
}
Structattr structattr = startPoints.get(0);
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
// 手动更新库存信息
// 1、创建出库单、明细、分配明细
// 1.1 单据表
@@ -247,7 +244,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
dtl.setIostorinvdtl_id(IdUtil.getStringId());
dtl.setIostorinv_id(invId);
dtl.setSeq_no("1");
dtl.setMaterial_id(row.getString("material_code"));
dtl.setMaterial_id(row.getString("material_id"));
dtl.setPcsn(groupPlate.getPcsn());
dtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
dtl.setQty_unit_id(groupPlate.getQty_unit_id());
@@ -305,6 +302,13 @@ public class PdaProductionServiceImpl implements PdaProductionService {
if (zeroQtyVehicles.size() > 0) {
storagevehicleextService.removeByIds(zeroQtyVehicles.stream().map(MdPbStoragevehicleext::getStoragevehicleext_id).collect(Collectors.toList()));
}
if (nonZeroQtyVehicles.size() == 0) {
// 说明托盘没东西了,点位释放
structattr.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定"));
structattr.setStoragevehicle_code(null);
structattr.setIs_emptyvehicle("0");
structattrService.updateById(structattr);
}
return PdaResponse.requestOk("取料成功!");
}
@@ -326,6 +330,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public PdaResponse leftoverMaterialBack(JSONObject param) {
// search, rows 按照托盘号原来的库区回去
String search = param.getString("search");
@@ -336,21 +341,33 @@ public class PdaProductionServiceImpl implements PdaProductionService {
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
throw new BadRequestException("该点位没有载具信息!");
}
// List<GroupPlate> list = groupplateService.list(new LambdaQueryWrapper<GroupPlate>()
// .eq(GroupPlate::getVehicle_code, search)
// .ne(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")));
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search);
List<Structattr> points = structattrService.getByVehicleCode(startPoint.getVehicle_code()
, IOSEnum.LOCK_TYPE.code("其他锁"), false);
if (points.size() != 1) {
throw new BadRequestException(points.size() > 1
? "该托盘号绑定在多个点位" + points.stream().map(Structattr::getStruct_code).collect(Collectors.toList()) + ",请检查!"
: "该托盘号未绑定到点位或者点位被禁用或者点位以上锁,请检查!");
}
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(startPoint.getVehicle_code()
, Arrays.asList("2"));
if (res.size() > 0) {
log.info("剩料回库");
// 剩料回库
param.put("rows", res);
Sectattr sectattr = sectattrService.findByCode(startPoint.getOut_sect(), false);
Structattr structattr = points.get(0);
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("剩料回库"));
// 1 创建入库单、明细、分配明细
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
invObj.put("nonChecked", "1");
String invId = rawAssistIStorService.insertDtl(invObj);
// 2 调用分配
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true);
// 2 调用手动分配
param.put("sect_code", structattr.getSect_code());
param.put("sect_name", structattr.getSect_name());
param.put("struct_id", structattr.getStruct_id());
param.put("struct_name", structattr.getStruct_name());
param.put("struct_code", structattr.getStruct_code());
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, false);
rawAssistIStorService.divStruct(divObj);
// 3 创建任务
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
@@ -359,7 +376,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
log.info("空载具回库");
// 空载具回库
JSONObject vin = new JSONObject();
vin.put("storagevehicle_code", search);
vin.put("storagevehicle_code", startPoint.getVehicle_code());
vin.put("sect_code", startPoint.getOut_sect());
vin.put("point_code", startPoint.getPoint_code());
vehicleInService.create(vin);
@@ -370,7 +387,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
@Override
public PdaResponse preProcessingDown(JSONObject param) {
log.info("加工下料:{}", param);
// vehicle_code、 point_code, region_code, 。。。rows
// vehicle_code、 point_code, sect_code, 。。。rows
assertNotBlankJson(param, "请求参数不能为空!", "vehicle_code", "point_code", "sect_code");
String pointCode = param.getString("point_code");
SchBasePoint startPoint = pointService.getByPointCode(pointCode, false);
@@ -384,7 +401,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
throw new BadRequestException("该点位已创建过任务!");
}
String vehicleCode = param.getString("vehicle_code");
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(vehicleCode);
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(vehicleCode, Arrays.asList("1"));
if (res.size() == 0) {
throw new BadRequestException("当前托盘号不存在物料信息,请检查!");
}
@@ -480,7 +497,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
if (ObjectUtil.isEmpty(search)) {
throw new BadRequestException("载具不存在!");
}
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search);
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1"));
return PdaResponse.requestParamOk(res);
}
}

View File

@@ -27,6 +27,7 @@ import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -63,7 +64,7 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService {
if (ObjectUtil.isEmpty(search)) {
throw new BadRequestException("请输入袋号编码!");
}
List<JSONObject> groups = groupplateService.getPalletView(search, "0");
List<JSONObject> groups = groupplateService.getPalletView(search, Arrays.asList("0"));
if (groups.size() != 1) {
throw new BadRequestException(groups.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
}

View File

@@ -46,7 +46,7 @@ public class PreProcessingInTask extends AbstractTask {
@Override
public String create(JSONObject json) {
// 获取终点
List<SchBasePoint> points = pointService.getCanUsePointByRegion(json.getString("region_code"));
List<SchBasePoint> points = pointService.getCanUsePointByRegion(json.getString("sect_code"));
if (ObjectUtil.isEmpty(points)) {
throw new BadRequestException("暂无可用点位!");
}
@@ -55,7 +55,7 @@ public class PreProcessingInTask extends AbstractTask {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_status(TaskStatus.CREATE.getCode());
task.setTask_status(TaskStatus.CREATED.getCode());
task.setConfig_code(PreProcessingInTask.class.getSimpleName());
task.setPoint_code1(json.getString("point_code"));
task.setPoint_code2(point.getPoint_code());

View File

@@ -95,9 +95,15 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
*/
List<GroupPlate> getByBagNo(String bagNo, String status);
List<JSONObject> getPalletView(String search, String status);
/**
*
* @param search 袋号
* @param status
* @return
*/
List<JSONObject> getPalletView(String search, List<String> status);
List<JSONObject> getPalletViewByVehicleCode(String search);
List<JSONObject> getPalletViewByVehicleCode(String search, List<String> status);
List<JSONObject> getStockGroupInfo(JSONObject param);
}

View File

@@ -64,9 +64,9 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
*/
List<JSONObject> pdaGetPointDtl(@Param("param") JSONObject whereJson);
List<JSONObject> getPalletView(String search, String status);
List<JSONObject> getPalletView(String search, List<String> status);
List<JSONObject> getPalletViewByVehicleCode(String search);
List<JSONObject> getPalletViewByVehicleCode(String search, List<String> status);
List<JSONObject> getStockGroupInfo(JSONObject param);
}

View File

@@ -149,7 +149,10 @@
`md_pb_groupplate` g
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
WHERE g.bag_code = #{search} AND g.`status` = #{status}
WHERE g.bag_code = #{search} AND g.`status` IN
<foreach collection="status" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</select>
<select id="getPalletViewByVehicleCode" resultType="com.alibaba.fastjson.JSONObject">
SELECT
@@ -164,7 +167,10 @@
`md_pb_groupplate` g
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
WHERE g.vehicle_code = #{search} AND g.`status` = '1'
WHERE g.vehicle_code = #{search} AND g.`status` IN
<foreach collection="status" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</select>
<select id="getStockGroupInfo" resultType="com.alibaba.fastjson.JSONObject">
SELECT

View File

@@ -190,13 +190,13 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
}
@Override
public List<JSONObject> getPalletView(String search, String status) {
public List<JSONObject> getPalletView(String search, List<String> status) {
return this.baseMapper.getPalletView(search, status);
}
@Override
public List<JSONObject> getPalletViewByVehicleCode(String search) {
return this.baseMapper.getPalletViewByVehicleCode(search);
public List<JSONObject> getPalletViewByVehicleCode(String search, List<String> status) {
return this.baseMapper.getPalletViewByVehicleCode(search, status);
}
@Override

View File

@@ -239,8 +239,10 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
//判断该载具编号是否已经存在库内
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code, row.get("storagevehicle_code")));
if (ObjectUtil.isNotEmpty(structattr)) {
throw new BadRequestException("载具编码:" + row.get("storagevehicle_code") + "已存在库内,请对数据进行核实!");
if (ObjectUtil.isEmpty(whereJson.get("nonChecked"))) {
if (ObjectUtil.isNotEmpty(structattr)) {
throw new BadRequestException("载具编码:" + row.get("storagevehicle_code") + "已存在库内,请对数据进行核实!");
}
}
ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class));