fix:1.修复输送线命令下发是否校验库存;

2.组盘导入增加新物料;
    3.删除组盘信息,关联删除载具物料表;
This commit is contained in:
2025-02-10 22:13:28 +08:00
parent d4bcbf78f6
commit 33ad2a0d7e
10 changed files with 147 additions and 99 deletions

View File

@@ -55,9 +55,8 @@ public class EndDecisionChainer extends DecisionerChain<List> {
IStIvtStructattrService iStIvtStructattrService = SpringContextHolder.getBean(IStIvtStructattrService.class);
IMdPbVehicleMaterService iMdPbVehicleMaterService = SpringContextHolder.getBean(IMdPbVehicleMaterService.class);
List<String> structs = new ArrayList<>();
StIvtStructattr structattr = (StIvtStructattr) transfers.get(0);
try {
if (in_storage) {
StIvtStructattr structattr = (StIvtStructattr) transfers.get(0);
UpdateWrapper<StIvtStructattr> updateWrapper = new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code", startParam.getString("vehicle_code"))
.set("lock_type", StatusEnum.LOCK.code("入库锁"))
@@ -78,6 +77,7 @@ public class EndDecisionChainer extends DecisionerChain<List> {
for (StructattrVechielDto vechielDto : vechielDtos) {
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("frozen_qty", vechielDto.getFrozen_qty())
.set("update_time", DateUtil.now())
.eq("id", vechielDto.getVm_id()));
}
List<String> structCodes = vechielDtos.stream().map(StructattrVechielDto::getStruct_code).collect(Collectors.toList());
@@ -90,9 +90,6 @@ public class EndDecisionChainer extends DecisionerChain<List> {
System.out.println("载具绑定成功" + collect);
structs = collect;
}
} catch (Exception e) {
log.error("库位:" + structattr.getStruct_code() + "异常:" + e.getMessage());
}
return structs;
}

View File

@@ -7,6 +7,9 @@
FROM
`sch_base_task` t
<where>
<if test="whereJson.task_id != null">
AND t.id = #{whereJson.task_id}
</if>
<if test="whereJson.task_code != null">
AND t.task_code = #{whereJson.task_code}
</if>

View File

@@ -10,6 +10,7 @@ import java.io.Serializable;
**/
@Data
public class SchBaseTaskQuery implements Serializable {
private String task_id;
private String task_code;
private String vehicle_code;
private String point_code;

View File

@@ -67,7 +67,7 @@ public class MdGruopDickController {
@Log("删除桶记录表")
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
if (ids != null && ids.length >0){
iMdGruopDickService.removeByIds(Arrays.asList(ids));
iMdGruopDickService.delete(ids);
}
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -6,6 +6,7 @@ import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.md_manage.group_dick.service.dto.GroupDickQuery;
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -26,6 +27,8 @@ public interface IMdGruopDickService extends IService<MdGruopDick> {
Object queryAll(GroupDickQuery query, PageQuery page);
void groupDick(JSONObject form);
void delete(@RequestBody String[] ids);
/**
* 导入组盘信息

View File

@@ -1,6 +1,7 @@
package org.nl.wms.md_manage.group_dick.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSON;
@@ -45,10 +46,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -62,8 +60,6 @@ import java.util.stream.Collectors;
@Service
public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGruopDick> implements IMdGruopDickService {
@Autowired
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
@Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
@@ -76,6 +72,8 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
private ErpServiceUtils erpServiceUtils;
@Autowired
private SyncErpBillsScheduleService syncErpBillsScheduleService;
@Autowired
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
@Override
public Object queryAll(GroupDickQuery query, PageQuery pageQuery) {
@@ -215,6 +213,22 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
}
}
@Override
@Transactional
public void delete(String[] ids) {
if (ids != null && ids.length > 0) {
this.removeByIds(Arrays.asList(ids));
List<MdPbVehicleMater> vehicleMaterList = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().select("id").in("group_id", ids));
if (ObjectUtil.isNotEmpty(vehicleMaterList)) {
iMdPbVehicleMaterService.removeByIds(vehicleMaterList.stream().map(MdPbVehicleMater::getId).collect(Collectors.toList()));
}
}
}
/**
* 组盘导入
*/
@Override
@Transactional
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
@@ -253,7 +267,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
if (!queryMaterialInfo) {
throw new BadRequestException("" + (i + 1) + "行," + material_code + "在ERP系统上检索不到相关物料信息请检查");
}
materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
}
materialCode.setSingle_weight(new BigDecimal(single_weight));
//更新单重

View File

@@ -2,10 +2,8 @@ package org.nl.wms.pda_manage.devicemanage;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.ObjectUtils;
@@ -13,24 +11,18 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.domain.exception.handler.ApiError;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.*;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.dispatch_manage.point.service.ISchBasePointService;
import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint;
import org.nl.wms.dispatch_manage.task.handler.impl.TranforTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.external_system.acs.service.AcsToWmsService;
import org.nl.wms.external_system.acs.service.WmsToAcsService;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
import org.nl.wms.pda_manage.devicemanage.dto.ComTp;
import org.nl.wms.pda_manage.palletio.service.PalletIostorinvService;
import org.nl.wms.pda_manage.palletio.service.dto.LabelValueVo;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.springframework.beans.factory.annotation.Autowired;
@@ -42,7 +34,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.Format;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -112,40 +103,46 @@ public class DeviceManageController {
@SaIgnore
@Log("下发输送线运动命令")
public ResponseEntity<TableDataInfo> toCommandTP(@RequestBody ComTp form) {
Assert.noNullElements(new Object[]{form.getDevice_code(),form.getVehicle_code()},"请求参数不能为空");
Assert.noNullElements(new Object[]{form.getDevice_code(), form.getVehicle_code()}, "请求参数不能为空");
String device_code = form.getDevice_code();
String vehicleCode = form.getVehicle_code();
String is_check = form.getIs_check();
if (StringUtils.isBlank(is_check)) {
is_check = "1";
}
SchBasePoint code = iSchBasePointService.getOne(new QueryWrapper<SchBasePoint>().eq("code", device_code));
if (code!=null && !code.getIs_used()){
throw new BadRequestException(String.format("输送线%s模式不正确不允许下发运动",device_code));
if (code != null && !code.getIs_used()) {
throw new BadRequestException(String.format("输送线%s模式不正确不允许下发运动", device_code));
}
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.getOne(new QueryWrapper<BmVehicleInfo>()
.eq("vehicle_code", vehicleCode));
if (vehicleInfo == null ){
throw new BadRequestException(String.format(vehicleCode+"载具信息不存在"));
if (vehicleInfo == null) {
throw new BadRequestException(String.format(vehicleCode + "载具信息不存在"));
}
List<MdPbVehicleMaterVo> item = iMdPbVehicleMaterService.getVehicleMaters(vehicleCode);
if (CollectionUtils.isEmpty(item)){
throw new BadRequestException(String.format(vehicleCode+"载具组盘信息不存在"));
if (CollectionUtils.isEmpty(item)) {
throw new BadRequestException(String.format(vehicleCode + "载具组盘信息不存在"));
}
for (MdPbVehicleMaterVo materVo : item) {
if (materVo.getQty().intValue() == 0){
throw new BadRequestException(String.format(vehicleCode+"组盘异常,确认是否出库后组盘"));
if (materVo.getQty().intValue() == 0) {
throw new BadRequestException(String.format(vehicleCode + "组盘异常,确认是否出库后组盘"));
}
}
//校验料箱是否还存在库存
RedissonUtils.lock(() -> {
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
.eq("is_used", true)
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
.eq("vehicle_code", vehicleCode);
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
if (ObjectUtils.isNotEmpty(list)) {
throw new BadRequestException(String.format("扫码失败:当前载具号在立库的库位中未出库:%s中请核查库存记录!", list.get(0).getStruct_code()));
}
}, StatusEnum.STRATEGY_TYPE.code("入库") + vehicleCode, 5);
wmsToAcsService.toCommand(device_code,"1",vehicleInfo.getH());
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
if ("1".equals(is_check)) {
//校验料箱是否还存在库存
RedissonUtils.lock(() -> {
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
.eq("is_used", true)
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
.eq("vehicle_code", vehicleCode);
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
if (ObjectUtils.isNotEmpty(list)) {
throw new BadRequestException(String.format("扫码失败:当前载具号在立库的库位中未出库:%s中请核查库存记录!", list.get(0).getStruct_code()));
}
}, StatusEnum.STRATEGY_TYPE.code("入库") + vehicleCode, 5);
}
wmsToAcsService.toCommand(device_code, "1", vehicleInfo.getH());
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
}
@PostMapping("transf")
@SaIgnore

View File

@@ -16,4 +16,9 @@ public class ComTp {
* 载具编码
*/
private String vehicle_code ;
/**
* 是否库存检查
*/
private String is_check ;
}

View File

@@ -197,6 +197,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
}
}
private List<MdPbVehicleMater> groupVehicle(JSONObject form, List<Map> tmpItemO, StIvtIostorinvdtl dtl) {
String now = DateUtil.now();
String user = SecurityUtils.getCurrentNickName();