|
@ -5,7 +5,6 @@ import cn.hutool.core.map.MapUtil; |
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
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.update.LambdaUpdateWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
@ -16,9 +15,9 @@ import org.nl.common.domain.query.PageQuery; |
|
|
import org.nl.common.exception.BadRequestException; |
|
|
import org.nl.common.exception.BadRequestException; |
|
|
import org.nl.common.utils.CodeUtil; |
|
|
import org.nl.common.utils.CodeUtil; |
|
|
import org.nl.common.utils.IdUtil; |
|
|
import org.nl.common.utils.IdUtil; |
|
|
|
|
|
import org.nl.common.utils.RedissonUtils; |
|
|
import org.nl.common.utils.SecurityUtils; |
|
|
import org.nl.common.utils.SecurityUtils; |
|
|
import org.nl.config.SpringContextHolder; |
|
|
import org.nl.config.SpringContextHolder; |
|
|
import org.nl.system.service.param.impl.SysParamServiceImpl; |
|
|
|
|
|
import org.nl.wms.basedata_manage.enums.BaseDataEnum; |
|
|
import org.nl.wms.basedata_manage.enums.BaseDataEnum; |
|
|
import org.nl.wms.basedata_manage.service.IBsrealStorattrService; |
|
|
import org.nl.wms.basedata_manage.service.IBsrealStorattrService; |
|
|
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; |
|
|
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; |
|
@ -28,10 +27,8 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; |
|
|
import org.nl.wms.basedata_manage.service.dao.Structattr; |
|
|
import org.nl.wms.basedata_manage.service.dao.Structattr; |
|
|
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; |
|
|
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; |
|
|
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; |
|
|
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; |
|
|
import org.nl.wms.sch_manage.service.dao.SchBasePoint; |
|
|
import org.nl.wms.sch_manage.enums.StatusEnum; |
|
|
import org.nl.wms.sch_manage.service.dao.SchBaseTask; |
|
|
import org.nl.wms.sch_manage.service.dao.SchBaseTask; |
|
|
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; |
|
|
|
|
|
import org.nl.wms.sch_manage.service.util.AbstractTask; |
|
|
|
|
|
import org.nl.wms.sch_manage.service.util.tasks.StInTask; |
|
|
import org.nl.wms.sch_manage.service.util.tasks.StInTask; |
|
|
import org.nl.wms.warehouse_management.enums.IOSConstant; |
|
|
import org.nl.wms.warehouse_management.enums.IOSConstant; |
|
|
import org.nl.wms.warehouse_management.enums.IOSEnum; |
|
|
import org.nl.wms.warehouse_management.enums.IOSEnum; |
|
@ -40,11 +37,12 @@ import org.nl.wms.warehouse_management.service.dao.GroupPlate; |
|
|
import org.nl.wms.warehouse_management.service.dao.IOStorInv; |
|
|
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.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.*; |
|
|
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.IOStorInvMapper; |
|
|
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto; |
|
|
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto; |
|
|
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.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; |
|
|
import org.springframework.data.domain.Pageable; |
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.util.Assert; |
|
|
import org.springframework.util.Assert; |
|
@ -54,7 +52,6 @@ import javax.annotation.Resource; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigInteger; |
|
|
import java.math.BigInteger; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @author dsh |
|
|
* @author dsh |
|
@ -350,18 +347,11 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
//是否自动分配仓位
|
|
|
//是否自动分配仓位
|
|
|
Boolean checked = mst.getBoolean("checked"); |
|
|
Boolean checked = mst.getBoolean("checked"); |
|
|
if (ObjectUtil.isNotEmpty(checked) && checked) { |
|
|
if (ObjectUtil.isNotEmpty(checked) && checked) { |
|
|
List<Structattr> structattrs = iStructattrService.inBoundSectDiv( |
|
|
param.put("qty", map.get("plan_qty")); |
|
|
StrategyStructParam.builder() |
|
|
param.put("material_code", map.get("material_code")); |
|
|
.sect_code(param.getString("sect_code")) |
|
|
param.put("pcsn", map.get("pcsn")); |
|
|
.stor_code(param.getString("stor_code")) |
|
|
param.put("ioType", StatusEnum.STRATEGY_TYPE.code("入库")); |
|
|
.material_code(map.get("material_code")) |
|
|
Structattr struct = getStructattr(param); |
|
|
.qty(new BigDecimal(String.valueOf(map.get("plan_qty")))) |
|
|
|
|
|
.pcsn(map.get("pcsn")) |
|
|
|
|
|
.build()); |
|
|
|
|
|
if (CollectionUtils.isEmpty(structattrs)){ |
|
|
|
|
|
throw new BadRequestException("无可用货位"); |
|
|
|
|
|
} |
|
|
|
|
|
Structattr struct = structattrs.get(0); |
|
|
|
|
|
sect_id = struct.getSect_id(); |
|
|
sect_id = struct.getSect_id(); |
|
|
sect_code = struct.getSect_code(); |
|
|
sect_code = struct.getSect_code(); |
|
|
sect_name = struct.getSect_name(); |
|
|
sect_name = struct.getSect_name(); |
|
@ -371,12 +361,12 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
} else { |
|
|
} else { |
|
|
Structattr structattr = iStructattrService.findById(map.get("struct_id")); |
|
|
Structattr structattr = iStructattrService.findById(map.get("struct_id")); |
|
|
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class) |
|
|
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class) |
|
|
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code,map.get("storagevehicle_code")) |
|
|
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, map.get("storagevehicle_code")) |
|
|
); |
|
|
); |
|
|
//判断仓位的长高宽是否能放下载具
|
|
|
//判断仓位的长高宽是否能放下载具
|
|
|
if (structattr.getWidth().compareTo(mdPbStoragevehicleinfo.getVehicle_width()) <0 && |
|
|
if (structattr.getWidth() < 0 && |
|
|
structattr.getHeight().compareTo(mdPbStoragevehicleinfo.getVehicle_height()) <0 && |
|
|
structattr.getHeight() < 0 && |
|
|
structattr.getZdepth().compareTo(mdPbStoragevehicleinfo.getVehicle_long()) <0){ |
|
|
structattr.getZdepth() < 0) { |
|
|
throw new BadRequestException("载具不符合,请检查!"); |
|
|
throw new BadRequestException("载具不符合,请检查!"); |
|
|
} |
|
|
} |
|
|
sect_id = map.get("sect_id"); |
|
|
sect_id = map.get("sect_id"); |
|
@ -404,8 +394,8 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
iStructattrService.updateStatusByCode("0",lock_map); |
|
|
iStructattrService.updateStatusByCode("0",lock_map); |
|
|
//更新组盘表状态
|
|
|
//更新组盘表状态
|
|
|
mdPbGroupplateService.update(new LambdaUpdateWrapper<GroupPlate>() |
|
|
mdPbGroupplateService.update(new LambdaUpdateWrapper<GroupPlate>() |
|
|
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")) |
|
|
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) |
|
|
.eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code")) |
|
|
.eq(GroupPlate::getStoragevehicle_code, map.get("storagevehicle_code")) |
|
|
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("组盘"))); |
|
|
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("组盘"))); |
|
|
// 更新分配明细表
|
|
|
// 更新分配明细表
|
|
|
ioStorInvDisMapper.update(dis_map.toJavaObject(IOStorInvDis.class),new LambdaUpdateWrapper<>(IOStorInvDis.class) |
|
|
ioStorInvDisMapper.update(dis_map.toJavaObject(IOStorInvDis.class),new LambdaUpdateWrapper<>(IOStorInvDis.class) |
|
@ -426,18 +416,53 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class)); |
|
|
ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class)); |
|
|
//根据单据标识判断分配明细是否都已经分配完成
|
|
|
//根据单据标识判断分配明细是否都已经分配完成
|
|
|
int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) |
|
|
int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) |
|
|
.eq(IOStorInvDis::getIostorinv_id,map.get("iostorinv_id")) |
|
|
.eq(IOStorInvDis::getIostorinv_id, map.get("iostorinv_id")) |
|
|
.and(wrapper -> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code,""))); |
|
|
.and(wrapper -> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code, ""))); |
|
|
// 根据分配货位情况 更新主表单据状态
|
|
|
// 根据分配货位情况 更新主表单据状态
|
|
|
IOStorInv ios = new IOStorInv(); |
|
|
IOStorInv ios = new IOStorInv(); |
|
|
ios.setIostorinv_id(map.get("iostorinv_id")); |
|
|
ios.setIostorinv_id(map.get("iostorinv_id")); |
|
|
ios.setUpdate_optid(currentUserId); |
|
|
ios.setUpdate_optid(currentUserId); |
|
|
ios.setUpdate_optname(nickName); |
|
|
ios.setUpdate_optname(nickName); |
|
|
ios.setUpdate_time(now); |
|
|
ios.setUpdate_time(now); |
|
|
ios.setBill_status(disCount>0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("分配完")); |
|
|
ios.setBill_status(disCount > 0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("分配完")); |
|
|
ioStorInvMapper.updateById(ios); |
|
|
ioStorInvMapper.updateById(ios); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Structattr divBackStruct(JSONObject whereJson) { |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 根据库区策略获取仓位 |
|
|
|
|
|
* ioType 出入库类型 |
|
|
|
|
|
* sect_code 库区编码 |
|
|
|
|
|
* stor_code 仓库编码 |
|
|
|
|
|
* material_code 物料编码 |
|
|
|
|
|
* plan_qty 计划数量 |
|
|
|
|
|
* pcsn 批次号 |
|
|
|
|
|
*/ |
|
|
|
|
|
public Structattr getStructattr(JSONObject param) { |
|
|
|
|
|
return RedissonUtils.lockAndReturn(() -> { |
|
|
|
|
|
List<Structattr> structattrs = iStructattrService.inBoundSectDiv( |
|
|
|
|
|
StrategyStructParam.builder() |
|
|
|
|
|
.ioType(param.getString("ioType")) |
|
|
|
|
|
.sect_code(param.getString("sect_code")) |
|
|
|
|
|
.stor_code(param.getString("stor_code")) |
|
|
|
|
|
.material_code(param.getString("material_code")) |
|
|
|
|
|
.qty(new BigDecimal(param.getString("qty"))) |
|
|
|
|
|
.pcsn(param.getString("pcsn")) |
|
|
|
|
|
.build()); |
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(structattrs)) { |
|
|
|
|
|
throw new BadRequestException("无可用货位"); |
|
|
|
|
|
} |
|
|
|
|
|
return structattrs.get(0); |
|
|
|
|
|
}, "1" + param.getString("stor_code"), 5); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public void unDivStruct(Map whereJson) { |
|
|
public void unDivStruct(Map whereJson) { |
|
@ -517,7 +542,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code"))
|
|
|
// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code"))
|
|
|
// );
|
|
|
// );
|
|
|
// task_form.put("group_id", groupPlate.getGroup_id());
|
|
|
// task_form.put("group_id", groupPlate.getGroup_id());
|
|
|
|
|
|
|
|
|
StInTask stInTask = SpringContextHolder.getBean("STInTask"); |
|
|
StInTask stInTask = SpringContextHolder.getBean("STInTask"); |
|
|
|
|
|
|
|
|
String task_id = stInTask.create(task_form); |
|
|
String task_id = stInTask.create(task_form); |
|
@ -720,9 +744,9 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt |
|
|
} |
|
|
} |
|
|
// 过滤掉不满足载具长宽高的仓位
|
|
|
// 过滤掉不满足载具长宽高的仓位
|
|
|
Structattr structattr = structattrList.stream().filter(st -> |
|
|
Structattr structattr = structattrList.stream().filter(st -> |
|
|
st.getWidth().compareTo(mdPbStoragevehicleinfo.getVehicle_width()) >=0 && |
|
|
st.getWidth() >= 0 && |
|
|
st.getHeight().compareTo(mdPbStoragevehicleinfo.getVehicle_height()) >=0 && |
|
|
st.getHeight() >= 0 && |
|
|
st.getZdepth().compareTo(mdPbStoragevehicleinfo.getVehicle_long()) >=0 |
|
|
st.getZdepth() >= 0 |
|
|
).findAny().get(); |
|
|
).findAny().get(); |
|
|
|
|
|
|
|
|
if (ObjectUtil.isEmpty(structattr)){ |
|
|
if (ObjectUtil.isEmpty(structattr)){ |
|
|