opt:优化物料组盘、来料入库、点位属性设置、手工叫料、手工退料 优化
This commit is contained in:
@@ -107,8 +107,6 @@ public class GroupController {
|
||||
.list(new LambdaUpdateWrapper<PmFormData>().eq(PmFormData::getCode, groupPlate.getExt_code()));
|
||||
|
||||
if (!CollectionUtils.isEmpty(pmFormDataList)) {
|
||||
|
||||
|
||||
if(!pmFormDataList.get(0).getMaterial_code().equals(groupPlate.getMaterial_code())){
|
||||
throw new BadRequestException("组盘的物料编码与单据的物料编码不一致,请核对!");
|
||||
}
|
||||
@@ -119,7 +117,6 @@ public class GroupController {
|
||||
.set(PmFormData::getUpdate_time, DateUtil.now())
|
||||
.set(PmFormData::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
.eq(PmFormData::getCode, groupPlate.getExt_code()));
|
||||
|
||||
}
|
||||
}
|
||||
//修改点位表中的点位为有料
|
||||
@@ -130,7 +127,6 @@ public class GroupController {
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
.eq(SchBasePoint::getVehicle_code, groupPlate.getStoragevehicle_code()));
|
||||
|
||||
|
||||
groupPlate.setSupp_code(supp.getSupp_code());
|
||||
groupPlate.setSupp_name(supp.getSupp_name());
|
||||
groupPlate.setGroup_id(IdUtil.getStringId());
|
||||
|
||||
@@ -28,6 +28,14 @@ public interface ISectattrService extends IService<Sectattr> {
|
||||
*/
|
||||
IPage<SectattrDto> queryAll(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 获取所有数据,不分页
|
||||
*
|
||||
* @param whereJson 条件
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
List<SectattrDto> getAll(Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
*
|
||||
|
||||
@@ -120,4 +120,12 @@ public interface IStructattrService extends IService<Structattr> {
|
||||
* @param changeDto
|
||||
*/
|
||||
void changeStruct(StructattrChangeDto changeDto);
|
||||
|
||||
/**
|
||||
* 根据仓位编码
|
||||
*
|
||||
* @param vehicleCode 仓位编码
|
||||
* @return Structattr
|
||||
*/
|
||||
Structattr getByVehicleCode(String vehicleCode);
|
||||
}
|
||||
|
||||
@@ -129,4 +129,8 @@ public class MdPbStoragevehicleinfo implements Serializable {
|
||||
*/
|
||||
private String ext_id;
|
||||
|
||||
/**
|
||||
* 推荐库区
|
||||
*/
|
||||
private String recommended_sect_code;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,13 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper<MdPbStoragevehic
|
||||
*/
|
||||
BigDecimal queryCanuseSum(@Param("pcsn") String pcsn,@Param("material_id") String material_id);
|
||||
|
||||
/**
|
||||
* 查询
|
||||
* @param whereJson 查询条件
|
||||
* @return IPage<List>
|
||||
*/
|
||||
List<JSONObject> queryAll( @Param("param") Map whereJson);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param page 分页条件
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
ext.frozen_qty,
|
||||
ext.remark,
|
||||
ext.create_time,
|
||||
ext.supp_code,
|
||||
ext.supp_name,
|
||||
attr.struct_code,
|
||||
attr.struct_name,
|
||||
attr.stor_name,
|
||||
@@ -88,6 +90,12 @@
|
||||
attr.sect_id = #{param.sect_id}
|
||||
</if>
|
||||
|
||||
<if test="param.sect_code != null and param.sect_code != ''">
|
||||
AND
|
||||
attr.sect_code = #{param.sect_code}
|
||||
</if>
|
||||
|
||||
|
||||
<if test="param.struct_code != null and param.struct_code != ''">
|
||||
AND
|
||||
(attr.struct_code LIKE #{param.struct_code} or
|
||||
@@ -96,8 +104,8 @@
|
||||
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
(mater.material_code LIKE #{param.material_code} or
|
||||
mater.material_name LIKE #{param.material_code} )
|
||||
(mater.material_code LIKE CONCAT('%', #{param.material_code},'%') or
|
||||
mater.material_name LIKE CONCAT('%', #{param.material_code},'%') )
|
||||
</if>
|
||||
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
@@ -108,6 +116,67 @@
|
||||
ORDER BY ext.create_time Desc
|
||||
</select>
|
||||
|
||||
<select id="queryAll" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
ext.group_id as storagevehicleext_id,
|
||||
ext.storagevehicle_code,
|
||||
ext.pcsn,
|
||||
ext.qty_unit_name,
|
||||
ext.qty,
|
||||
ext.frozen_qty,
|
||||
ext.remark,
|
||||
ext.create_time,
|
||||
ext.supp_code,
|
||||
ext.supp_name,
|
||||
attr.struct_code,
|
||||
attr.struct_name,
|
||||
attr.stor_name,
|
||||
attr.sect_name,
|
||||
mater.material_code,
|
||||
mater.material_name
|
||||
FROM
|
||||
md_pb_groupplate 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.sect_id != null and param.sect_id != ''">
|
||||
AND
|
||||
attr.sect_id = #{param.sect_id}
|
||||
</if>
|
||||
|
||||
<if test="param.sect_code != null and param.sect_code != ''">
|
||||
AND
|
||||
attr.sect_code = #{param.sect_code}
|
||||
</if>
|
||||
|
||||
|
||||
<if test="param.struct_code != null and param.struct_code != ''">
|
||||
AND
|
||||
(attr.struct_code LIKE #{param.struct_code} or
|
||||
attr.struct_name LIKE #{param.struct_code} )
|
||||
</if>
|
||||
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
(mater.material_code LIKE CONCAT('%', #{param.material_code},'%') or
|
||||
mater.material_name LIKE CONCAT('%', #{param.material_code},'%') )
|
||||
</if>
|
||||
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
AND
|
||||
ext.pcsn LIKE #{param.pcsn}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY ext.create_time Desc
|
||||
</select>
|
||||
|
||||
|
||||
<select id="queryCanuseSum" resultType="java.math.BigDecimal">
|
||||
SELECT
|
||||
SUM(qty)
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattrDto;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.SectattrDto;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -20,4 +21,5 @@ public interface SectattrMapper extends BaseMapper<Sectattr> {
|
||||
|
||||
IPage<SectattrDto> queryAllByPage(Page<BsrealStorattrDto> page, @Param("params") Map params);
|
||||
|
||||
List<SectattrDto> queryAll( @Param("params") Map params);
|
||||
}
|
||||
|
||||
@@ -18,4 +18,30 @@
|
||||
</where>
|
||||
ORDER BY sect.update_time Desc
|
||||
</select>
|
||||
|
||||
<select id="queryAll" resultType="org.nl.wms.basedata_manage.service.dao.SectattrDto">
|
||||
SELECT sect.*,stor.stor_name FROM st_ivt_sectattr sect LEFT JOIN st_ivt_bsrealstorattr stor ON sect.stor_id = stor.stor_id
|
||||
<where>
|
||||
sect.is_delete = '0'
|
||||
<if test="params.search != null">
|
||||
AND
|
||||
sect.sect_code LIKE CONCAT('%', #{params.search}, '%')
|
||||
OR
|
||||
sect.sect_name LIKE CONCAT('%', #{params.search}, '%')
|
||||
</if>
|
||||
<if test="params.stor_id != null">
|
||||
AND
|
||||
sect.stor_id = #{params.stor_id}
|
||||
</if>
|
||||
<if test="params.sect_code != null ">
|
||||
AND
|
||||
sect.sect_code LIKE CONCAT('%', #{params.sect_code}, '%')
|
||||
</if>
|
||||
<if test="params.stor_code != null">
|
||||
AND
|
||||
stor.stor_code = #{params.stor_code}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY sect.update_time Desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -31,5 +31,4 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
|
||||
whereJson);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -53,6 +53,11 @@ public class SectattrServiceImpl extends ServiceImpl<SectattrMapper, Sectattr> i
|
||||
return sectattrMapper.queryAllByPage(new Page<>(page.getPage() +1 ,page.getSize()), whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SectattrDto> getAll(Map whereJson) {
|
||||
return sectattrMapper.queryAll(whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sectattr findById(String sect_id) {
|
||||
|
||||
|
||||
@@ -455,4 +455,16 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Structattr getByVehicleCode(String vehicleCode) {
|
||||
Structattr one = this.getOne(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStoragevehicle_code, vehicleCode)
|
||||
);
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException("此载具不在仓位上【" + vehicleCode + "】");
|
||||
}
|
||||
return one;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
}
|
||||
|
||||
// 出库的仓位
|
||||
Structattr outStructAttr = structattrService.getByCode(dto.getStruct_code());
|
||||
Structattr outStructAttr = structattrService.getByVehicleCode(dto.getStruct_code());
|
||||
if (ObjectUtil.isEmpty(outStructAttr)) {
|
||||
throw new BadRequestException("仓位【" + dto.getStruct_code() + "】不存在!");
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmCheckParamDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInParamDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.service.PdaIosCheckService;
|
||||
@@ -94,6 +95,12 @@ public class PdaIosInController {
|
||||
return new ResponseEntity<>(pdaIosInService.getPdaSect(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getPdaCallMaterialSect")
|
||||
@Log("PDA叫料获取库区")
|
||||
public ResponseEntity<Object> getPdaCallMaterialSect(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosInService.getPdaCallMaterialSect(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getPdaStruct")
|
||||
@Log("PDA获取库位")
|
||||
@@ -145,17 +152,15 @@ public class PdaIosInController {
|
||||
@PostMapping("/zwConfirmIn")
|
||||
@Log("中钨组盘入库确认")
|
||||
public ResponseEntity<Object> zwConfirmIn(@RequestBody ZwConfirmInDto dto) {
|
||||
if(StringUtils.isEmpty(dto.getForm_data_code())){
|
||||
throw new IllegalArgumentException("单据编码不能为空!");
|
||||
}
|
||||
|
||||
if(CollectionUtils.isEmpty(dto.getParam_list())){
|
||||
throw new IllegalArgumentException("请传入参数!");
|
||||
}
|
||||
|
||||
for(ZwConfirmInParamDto paramDto : dto.getParam_list()){
|
||||
if(StringUtils.isBlank(paramDto.getVehicle_code()) || StringUtils.isBlank(paramDto.getSite_code()))
|
||||
throw new IllegalArgumentException("载具且卸货区点位不能为空!");
|
||||
if(StringUtils.isBlank(paramDto.getVehicle_code()) || StringUtils.isBlank(paramDto.getSite_code())
|
||||
|| StringUtils.isBlank(paramDto.getForm_data_code()))
|
||||
throw new IllegalArgumentException("载具、卸货区点位、单据不能为空!");
|
||||
}
|
||||
|
||||
return new ResponseEntity<>(pdaIosInService.zwConfirmIn(dto), HttpStatus.OK);
|
||||
@@ -228,7 +233,7 @@ public class PdaIosInController {
|
||||
|
||||
@PostMapping("/inCheck")
|
||||
@Log("PDA来料入库校验点位和托盘码")
|
||||
public ResponseEntity<Object> inCheck(@RequestBody ZwConfirmInParamDto dto) {
|
||||
public ResponseEntity<Object> inCheck(@RequestBody ZwConfirmCheckParamDto dto) {
|
||||
return new ResponseEntity<>(pdaIosInService.inCheck(dto), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,5 +143,12 @@ public class PdaIosOutController {
|
||||
return new ResponseEntity<>(pdaIosOutService.getMaterialSuppByVehicleCode(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getStructivtByMaterialAndSectCode")
|
||||
@Log("根据库区、物料信息获取库存信息")
|
||||
public ResponseEntity<Object> getStructivtByMaterialAndSectCode(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code");
|
||||
return new ResponseEntity<>(pdaIosOutService.getStructivtByMaterialAndSectCode(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.nl.wms.pda_manage.ios_manage.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ZwConfirmCheckParamDto {
|
||||
private String site_vehicle_code;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.pda_manage.ios_manage.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ZwConfirmCheckParamRespondDto {
|
||||
private String site_code;
|
||||
private String vehicle_code;
|
||||
private String material_code;
|
||||
private String qty;
|
||||
private String form_data_code;
|
||||
}
|
||||
@@ -6,6 +6,5 @@ import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ZwConfirmInDto {
|
||||
private String form_data_code;
|
||||
private List<ZwConfirmInParamDto> param_list;
|
||||
}
|
||||
|
||||
@@ -6,4 +6,5 @@ import lombok.Data;
|
||||
public class ZwConfirmInParamDto {
|
||||
private String site_code;
|
||||
private String vehicle_code;
|
||||
private String form_data_code;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.vo.SelectItemVo;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmCheckParamDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInParamDto;
|
||||
import org.nl.wms.pda_manage.util.PdaResponse;
|
||||
@@ -103,6 +104,13 @@ public interface PdaIosInService {
|
||||
*/
|
||||
PdaResponse getPdaSect(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 叫料查询库区
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getPdaCallMaterialSect(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询库位
|
||||
*
|
||||
@@ -220,7 +228,7 @@ public interface PdaIosInService {
|
||||
|
||||
|
||||
|
||||
PdaResponse inCheck (ZwConfirmInParamDto dto);
|
||||
PdaResponse inCheck (ZwConfirmCheckParamDto dto);
|
||||
|
||||
/**
|
||||
* 通过载具编码获取点位
|
||||
|
||||
@@ -131,4 +131,11 @@ public interface PdaIosOutService {
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getMaterialSuppByVehicleCode(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询组盘信息通过载具编号
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getStructivtByMaterialAndSectCode(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.nl.wms.pda_manage.ios_manage.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -16,17 +15,14 @@ import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.domain.vo.SelectItemVo;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.SectattrMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.MaterialQuery;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmCheckParamDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmCheckParamRespondDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.dto.ZwConfirmInParamDto;
|
||||
import org.nl.wms.pda_manage.ios_manage.service.PdaIosInService;
|
||||
@@ -49,15 +45,10 @@ 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.BackInTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.VehicleInTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.zw.InBillTask;
|
||||
import org.nl.wms.system_manage.service.dict.dao.Dict;
|
||||
import org.nl.wms.system_manage.service.dict.dao.mapper.SysDictMapper;
|
||||
import org.nl.wms.system_manage.service.logicflow.dao.StageImage;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
|
||||
@@ -359,6 +350,25 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
return PdaResponse.requestParamOk(selectList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getPdaCallMaterialSect(JSONObject whereJson) {
|
||||
|
||||
Map <String,String> selectMap = new HashMap<>();
|
||||
|
||||
SchBasePoint schBasePoint = iSchBasePointService.getPointByCode(whereJson.getString("point_code"));
|
||||
if(schBasePoint != null && StringUtils.isNotBlank(schBasePoint.getRegion_code())){
|
||||
selectMap.put("sect_code",schBasePoint.getRegion_code().substring(0,2));
|
||||
}
|
||||
|
||||
selectMap.put("stor_code","LT");
|
||||
List<SectattrDto> sectattrList = iSectattrService.getAll(selectMap);
|
||||
List<SelectItemVo> selectList = new ArrayList<>();
|
||||
sectattrList.forEach(r ->
|
||||
selectList.add(SelectItemVo.builder().text( r.getSect_name()).value(r.getSect_id()).build())
|
||||
);
|
||||
return PdaResponse.requestParamOk(selectList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getPdaStruct(JSONObject whereJson) {
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
|
||||
@@ -759,208 +769,215 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse zwConfirmIn(ZwConfirmInDto dto) {
|
||||
//校验是否重复
|
||||
if (dto.getParam_list().stream()
|
||||
.map(ZwConfirmInParamDto::getSite_code)
|
||||
.distinct()
|
||||
.count() != dto.getParam_list().size() || dto.getParam_list().stream()
|
||||
.map(ZwConfirmInParamDto::getVehicle_code)
|
||||
.distinct()
|
||||
.count() != dto.getParam_list().size()) {
|
||||
throw new BadRequestException("存在重复的点位或托盘号,请核对!");
|
||||
}
|
||||
public PdaResponse zwConfirmIn(ZwConfirmInDto dtoList) {
|
||||
|
||||
//查询字典表
|
||||
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "MATERIAL_MODEL_SECT"));
|
||||
Map<String, List<ZwConfirmInParamDto>> paramMap = dtoList.getParam_list().stream()
|
||||
.collect(Collectors.groupingBy(ZwConfirmInParamDto::getForm_data_code));
|
||||
|
||||
if (CollectionUtils.isEmpty(dictList)) {
|
||||
throw new BadRequestException("字典MATERIAL_MODEL_SECT未配置,请核对!");
|
||||
}
|
||||
|
||||
List<PmFormData> formDataList = iPmFormDataService.list(new LambdaUpdateWrapper<PmFormData>()
|
||||
.eq(PmFormData::getCode, dto.getForm_data_code())
|
||||
.eq(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")));
|
||||
|
||||
if(CollectionUtils.isNotEmpty(formDataList)){
|
||||
throw new BadRequestException("单据" +dto.getForm_data_code() +"已完成!");
|
||||
}
|
||||
|
||||
//循环判断每个 如果有问题,则抛出异常
|
||||
String lastSchBasePoint = null;
|
||||
Integer taskGroupSeq = 0 ;
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
List<JSONObject> jsonObjectList = new ArrayList<>();
|
||||
for (ZwConfirmInParamDto paramDto : dto.getParam_list()) {
|
||||
|
||||
//判断点位和仓位是否有正在执行的任务
|
||||
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.eq(SchBaseTask::getPoint_code2, paramDto.getSite_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code3, paramDto.getSite_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code1, paramDto.getSite_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code4, paramDto.getSite_code())
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
if(CollectionUtils.isNotEmpty(schBaseTaskList)){
|
||||
throw new BadRequestException("存在正在执行任务的点位"+paramDto.getSite_code());
|
||||
for (Map.Entry<String, List<ZwConfirmInParamDto>> entry : paramMap.entrySet()) {
|
||||
//校验是否重复
|
||||
if (entry.getValue().stream()
|
||||
.map(ZwConfirmInParamDto::getSite_code)
|
||||
.distinct()
|
||||
.count() != entry.getValue().size() || entry.getValue().stream()
|
||||
.map(ZwConfirmInParamDto::getVehicle_code)
|
||||
.distinct()
|
||||
.count() != entry.getValue().size()) {
|
||||
throw new BadRequestException("存在重复的点位或托盘号,请核对!");
|
||||
}
|
||||
|
||||
taskGroupSeq++;
|
||||
//当前点位
|
||||
String schBasePointString = lastSchBasePoint;
|
||||
JSONObject whereJson = new JSONObject();
|
||||
whereJson.put("vehicle_code", paramDto.getVehicle_code());
|
||||
whereJson.put("search", paramDto.getVehicle_code());
|
||||
//查询字典表
|
||||
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "MATERIAL_MODEL_SECT"));
|
||||
|
||||
//起点
|
||||
whereJson.put("site_code", paramDto.getSite_code());
|
||||
whereJson.put("noEmptyVehicle", "1");
|
||||
String material_model = getVehicleMaterial(whereJson).getString("material_model");
|
||||
if (StringUtils.isEmpty(material_model)) {
|
||||
throw new BadRequestException("组盘的物料未配置【物料型号】!");
|
||||
if (CollectionUtils.isEmpty(dictList)) {
|
||||
throw new BadRequestException("字典MATERIAL_MODEL_SECT未配置,请核对!");
|
||||
}
|
||||
|
||||
//判断每个物料是否都已经配置库区
|
||||
List<Dict> dicts = dictList.stream().filter(a -> material_model.equals(a.getPara1())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(dicts)) {
|
||||
throw new BadRequestException("字典MATERIAL_MODEL_SECT未配置物料类型" + material_model + "与库区的对应关系,请核对!");
|
||||
List<PmFormData> formDataList = iPmFormDataService.list(new LambdaUpdateWrapper<PmFormData>()
|
||||
.eq(PmFormData::getCode, entry.getValue().get(0).getForm_data_code())
|
||||
.eq(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")));
|
||||
|
||||
if(CollectionUtils.isNotEmpty(formDataList)){
|
||||
throw new BadRequestException("单据" + entry.getValue().get(0).getForm_data_code() +"已完成!");
|
||||
}
|
||||
|
||||
String sect_code = dicts.get(0).getValue();
|
||||
//根据库区编码获取库区id sect_id
|
||||
List<Sectattr> sectattrList = sectattrMapper.selectList(new LambdaQueryWrapper<Sectattr>()
|
||||
.eq(Sectattr::getSect_code, sect_code));
|
||||
//循环判断每个 如果有问题,则抛出异常
|
||||
String lastSchBasePoint = null;
|
||||
Integer taskGroupSeq = 0 ;
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
List<JSONObject> jsonObjectList = new ArrayList<>();
|
||||
for (ZwConfirmInParamDto paramDto : entry.getValue()) {
|
||||
|
||||
if (CollectionUtils.isEmpty(sectattrList)) {
|
||||
throw new BadRequestException("库区" + sect_code + "不存在,请核对!");
|
||||
}
|
||||
|
||||
whereJson.put("sect_id",sectattrList.get(0).getSect_id());
|
||||
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.get("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位");
|
||||
}
|
||||
|
||||
if(!"3".equals(schBasePoint.getPoint_status())){
|
||||
throw new BadRequestException("系统显示点位"+schBasePoint.getPoint_code()+"不是有料状态,请确认是否组盘!");
|
||||
}
|
||||
|
||||
if (!schBasePoint.getPoint_code().equals(paramDto.getSite_code())) {
|
||||
throw new BadRequestException("载具" + paramDto.getVehicle_code() + "不在" + paramDto.getSite_code() + "上");
|
||||
}
|
||||
|
||||
//如果是第一个,则不知道搬出来的托盘应该放哪里,因此需要计算得出,其他的则是【上一个点位】
|
||||
if (StringUtils.isBlank(lastSchBasePoint)) {
|
||||
LambdaQueryWrapper<SchBasePoint> queryWrapper = new LambdaQueryWrapper<>(SchBasePoint.class)
|
||||
.select(SchBasePoint::getPoint_code)
|
||||
.eq(SchBasePoint::getRegion_code, "YLXCQ")
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.eq(SchBasePoint::getPoint_status, 1)
|
||||
.eq(SchBasePoint::getPoint_type, "1")
|
||||
.orderByDesc(SchBasePoint::getOut_empty_seq);
|
||||
|
||||
List<SchBasePoint> schBasePointList = schBasePointMapper.selectList(queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(schBasePointList)) {
|
||||
throw new BadRequestException("原料卸车区不存在空的点位");
|
||||
}
|
||||
|
||||
//剔除任务执行中的点位
|
||||
|
||||
final List<String> emptyPointStringList = schBasePointList.stream().map(SchBasePoint::getPoint_code)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//找到空点位正在执行的任务(正常来说不应该存在)
|
||||
List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
//判断点位和仓位是否有正在执行的任务
|
||||
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.in(SchBaseTask::getPoint_code1, emptyPointStringList)
|
||||
.eq(SchBaseTask::getPoint_code2, paramDto.getSite_code())
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code2, emptyPointStringList)
|
||||
.eq(SchBaseTask::getPoint_code3, paramDto.getSite_code())
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code3, emptyPointStringList)
|
||||
.eq(SchBaseTask::getPoint_code1, paramDto.getSite_code())
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code4, emptyPointStringList)
|
||||
.eq(SchBaseTask::getPoint_code4, paramDto.getSite_code())
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
//如果不存在,则正常执行
|
||||
if(CollectionUtils.isEmpty(taskingSchBaseTaskList)){
|
||||
schBasePointString = schBasePointList.get(0).getPoint_code();
|
||||
} else {
|
||||
List<String> pointList1 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code1)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList2 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code2)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList3 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code3)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList4 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code4)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<String> pointStringList = emptyPointStringList.stream().filter(a -> StringUtils.isNotBlank(a)
|
||||
&& !pointList1.contains(a)
|
||||
&& !pointList2.contains(a)
|
||||
&& !pointList3.contains(a)
|
||||
&& !pointList4.contains(a))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
schBasePointString = pointStringList.get(0);
|
||||
if(CollectionUtils.isNotEmpty(schBaseTaskList)){
|
||||
throw new BadRequestException("存在正在执行任务的点位"+paramDto.getSite_code());
|
||||
}
|
||||
|
||||
taskGroupSeq++;
|
||||
//当前点位
|
||||
String schBasePointString = lastSchBasePoint;
|
||||
JSONObject whereJson = new JSONObject();
|
||||
whereJson.put("vehicle_code", paramDto.getVehicle_code());
|
||||
whereJson.put("search", paramDto.getVehicle_code());
|
||||
|
||||
//起点
|
||||
whereJson.put("site_code", paramDto.getSite_code());
|
||||
whereJson.put("noEmptyVehicle", "1");
|
||||
String material_model = getVehicleMaterial(whereJson).getString("material_model");
|
||||
if (StringUtils.isEmpty(material_model)) {
|
||||
throw new BadRequestException("组盘的物料未配置【物料型号】!");
|
||||
}
|
||||
|
||||
//判断每个物料是否都已经配置库区
|
||||
List<Dict> dicts = dictList.stream().filter(a -> material_model.equals(a.getPara1())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(dicts)) {
|
||||
throw new BadRequestException("字典MATERIAL_MODEL_SECT未配置物料类型" + material_model + "与库区的对应关系,请核对!");
|
||||
}
|
||||
|
||||
String sect_code = dicts.get(0).getValue();
|
||||
//根据库区编码获取库区id sect_id
|
||||
List<Sectattr> sectattrList = sectattrMapper.selectList(new LambdaQueryWrapper<Sectattr>()
|
||||
.eq(Sectattr::getSect_code, sect_code));
|
||||
|
||||
if (CollectionUtils.isEmpty(sectattrList)) {
|
||||
throw new BadRequestException("库区" + sect_code + "不存在,请核对!");
|
||||
}
|
||||
|
||||
whereJson.put("sect_id",sectattrList.get(0).getSect_id());
|
||||
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.get("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位");
|
||||
}
|
||||
|
||||
if(!"3".equals(schBasePoint.getPoint_status())){
|
||||
throw new BadRequestException("系统显示点位"+schBasePoint.getPoint_code()+"不是有料状态,请确认是否组盘!");
|
||||
}
|
||||
|
||||
if (!schBasePoint.getPoint_code().equals(paramDto.getSite_code())) {
|
||||
throw new BadRequestException("载具" + paramDto.getVehicle_code() + "不在" + paramDto.getSite_code() + "上");
|
||||
}
|
||||
|
||||
//如果是第一个,则不知道搬出来的托盘应该放哪里,因此需要计算得出,其他的则是【上一个点位】
|
||||
if (StringUtils.isBlank(lastSchBasePoint)) {
|
||||
LambdaQueryWrapper<SchBasePoint> queryWrapper = new LambdaQueryWrapper<>(SchBasePoint.class)
|
||||
.select(SchBasePoint::getPoint_code)
|
||||
.eq(SchBasePoint::getRegion_code, "YLXCQ")
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.eq(SchBasePoint::getPoint_status, 1)
|
||||
.eq(SchBasePoint::getPoint_type, "1")
|
||||
.orderByDesc(SchBasePoint::getOut_empty_seq);
|
||||
|
||||
List<SchBasePoint> schBasePointList = schBasePointMapper.selectList(queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(schBasePointList)) {
|
||||
throw new BadRequestException("原料卸车区不存在空的点位");
|
||||
}
|
||||
|
||||
//剔除任务执行中的点位
|
||||
|
||||
final List<String> emptyPointStringList = schBasePointList.stream().map(SchBasePoint::getPoint_code)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//找到空点位正在执行的任务(正常来说不应该存在)
|
||||
List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.in(SchBaseTask::getPoint_code1, emptyPointStringList)
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code2, emptyPointStringList)
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code3, emptyPointStringList)
|
||||
.or()
|
||||
.in(SchBaseTask::getPoint_code4, emptyPointStringList)
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
//如果不存在,则正常执行
|
||||
if(CollectionUtils.isEmpty(taskingSchBaseTaskList)){
|
||||
schBasePointString = schBasePointList.get(0).getPoint_code();
|
||||
} else {
|
||||
List<String> pointList1 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code1)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList2 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code2)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList3 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code3)
|
||||
.collect(Collectors.toList());
|
||||
List<String> pointList4 = taskingSchBaseTaskList.stream().map(SchBaseTask::getPoint_code4)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<String> pointStringList = emptyPointStringList.stream().filter(a -> StringUtils.isNotBlank(a)
|
||||
&& !pointList1.contains(a)
|
||||
&& !pointList2.contains(a)
|
||||
&& !pointList3.contains(a)
|
||||
&& !pointList4.contains(a))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
schBasePointString = pointStringList.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
//point1为库存空托盘点
|
||||
//point2为卸货区空托盘应该放置的点
|
||||
//point3为入库起始点位
|
||||
|
||||
//起始点 对于task point3
|
||||
whereJson.put ("point_code", whereJson.getString("site_code"));
|
||||
|
||||
//卸货区空托盘应该放置的点,对应task point2
|
||||
whereJson.put("sch_base_point", schBasePointString);
|
||||
whereJson.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("来料入库"));
|
||||
whereJson.put("priority","1");
|
||||
whereJson.put("task_group_seq",taskGroupSeq);
|
||||
whereJson.put("task_group_id",taskGroupId);
|
||||
|
||||
whereJson.put("form_data_code", entry.getValue().get(0).getForm_data_code());
|
||||
|
||||
jsonObjectList.add(whereJson);
|
||||
//下一个的托盘放置点为本次的起点
|
||||
lastSchBasePoint = whereJson.getString("site_code");
|
||||
}
|
||||
|
||||
//point1为库存空托盘点
|
||||
//point2为卸货区空托盘应该放置的点
|
||||
//point3为入库起始点位
|
||||
//校验没有问题,则进行入库世纪操作
|
||||
for(JSONObject whereJson:jsonObjectList){
|
||||
|
||||
//起始点 对于task point3
|
||||
whereJson.put ("point_code", whereJson.getString("site_code"));
|
||||
|
||||
//卸货区空托盘应该放置的点,对应task point2
|
||||
whereJson.put("sch_base_point", schBasePointString);
|
||||
whereJson.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("来料入库"));
|
||||
whereJson.put("priority","1");
|
||||
whereJson.put("task_group_seq",taskGroupSeq);
|
||||
whereJson.put("task_group_id",taskGroupId);
|
||||
|
||||
whereJson.put("form_data_code",dto.getForm_data_code());
|
||||
|
||||
jsonObjectList.add(whereJson);
|
||||
//下一个的托盘放置点为本次的起点
|
||||
lastSchBasePoint = whereJson.getString("site_code");
|
||||
// 预组织出入库单据实体
|
||||
Map<String, Object> jsonMst = organizeInsertData(whereJson);
|
||||
// 调用服务新增出入库单
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 预组织出入库单据明细的分配数据
|
||||
whereJson.put("iostorinv_id", iostorinv_id);
|
||||
Map<String, Object> jsonDtl = organizeDivData(whereJson);
|
||||
// 调用分配,默认自动分配库位
|
||||
iRawAssistIStorService.zwInDivStruct(new JSONObject(jsonDtl));
|
||||
// 下发任务
|
||||
sendZwTask(whereJson);
|
||||
//更新组盘表状态
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//校验没有问题,则进行入库世纪操作
|
||||
for(JSONObject whereJson:jsonObjectList){
|
||||
|
||||
// 预组织出入库单据实体
|
||||
Map<String, Object> jsonMst = organizeInsertData(whereJson);
|
||||
// 调用服务新增出入库单
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 预组织出入库单据明细的分配数据
|
||||
whereJson.put("iostorinv_id", iostorinv_id);
|
||||
Map<String, Object> jsonDtl = organizeDivData(whereJson);
|
||||
// 调用分配,默认自动分配库位
|
||||
iRawAssistIStorService.zwInDivStruct(new JSONObject(jsonDtl));
|
||||
// 下发任务
|
||||
sendZwTask(whereJson);
|
||||
//更新组盘表状态
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@@ -1323,31 +1340,55 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse inCheck(ZwConfirmInParamDto dto) {
|
||||
public PdaResponse inCheck(ZwConfirmCheckParamDto dto) {
|
||||
|
||||
if(StringUtils.isBlank(dto.getSite_vehicle_code())){
|
||||
throw new BadRequestException("点位码/托盘码不能为空");
|
||||
}
|
||||
String site_code;
|
||||
String vehicle_code;
|
||||
|
||||
//查点位表
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, dto.getSite_vehicle_code())
|
||||
.or()
|
||||
.eq(SchBasePoint::getPoint_code, dto.getSite_vehicle_code()));
|
||||
if(null == schBasePoint){
|
||||
//存在点位表,说明传入的是点位,则根据点位查询载具
|
||||
throw new BadRequestException("未找到载具/点位信息,请检查!");
|
||||
}
|
||||
|
||||
if(!"3".equals(schBasePoint.getPoint_status())){
|
||||
throw new BadRequestException("系统显示点位"+schBasePoint.getPoint_code()+"不是有料状态,请确认是否组盘!");
|
||||
}
|
||||
|
||||
site_code =schBasePoint.getPoint_code();
|
||||
vehicle_code =schBasePoint.getVehicle_code();
|
||||
|
||||
//判断点位和仓位是否有正在执行的任务
|
||||
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.eq(SchBaseTask::getPoint_code2, dto.getSite_code())
|
||||
.eq(SchBaseTask::getPoint_code2, site_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code3, dto.getSite_code())
|
||||
.eq(SchBaseTask::getPoint_code3, site_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code1, dto.getSite_code())
|
||||
.eq(SchBaseTask::getPoint_code1, site_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code4, dto.getSite_code())
|
||||
.eq(SchBaseTask::getPoint_code4, site_code)
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
if(CollectionUtils.isNotEmpty(schBaseTaskList)){
|
||||
throw new BadRequestException("存在正在执行任务的点位"+dto.getSite_code());
|
||||
throw new BadRequestException("存在正在执行任务的点位"+site_code);
|
||||
}
|
||||
|
||||
JSONObject whereJson = new JSONObject();
|
||||
whereJson.put("vehicle_code", dto.getVehicle_code());
|
||||
whereJson.put("search", dto.getVehicle_code());
|
||||
whereJson.put("vehicle_code", vehicle_code);
|
||||
whereJson.put("search", vehicle_code);
|
||||
|
||||
//起点
|
||||
whereJson.put("site_code", dto.getSite_code());
|
||||
whereJson.put("site_code", site_code);
|
||||
whereJson.put("noEmptyVehicle", "1");
|
||||
String material_model = getVehicleMaterial(whereJson).getString("material_model");
|
||||
if (StringUtils.isEmpty(material_model)) {
|
||||
@@ -1355,8 +1396,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
}
|
||||
|
||||
//判断每个物料是否都已经配置库区
|
||||
|
||||
|
||||
//查询字典表
|
||||
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "MATERIAL_MODEL_SECT"));
|
||||
@@ -1377,22 +1416,22 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
whereJson.put("sect_id",sectattrList.get(0).getSect_id());
|
||||
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.get("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位");
|
||||
//通过载具查找组盘
|
||||
List<GroupPlate> groupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
|
||||
.eq("storagevehicle_code", vehicle_code)
|
||||
.lt("status", IOSEnum.GROUP_PLATE_STATUS.code("出库")));
|
||||
|
||||
if(CollectionUtils.isEmpty(groupPlates)) {
|
||||
throw new BadRequestException("载具" + vehicle_code + "未组盘,请先组盘!");
|
||||
}
|
||||
|
||||
if(!"3".equals(schBasePoint.getPoint_status())){
|
||||
throw new BadRequestException("系统显示点位"+schBasePoint.getPoint_code()+"不是有料状态,请确认是否组盘!");
|
||||
}
|
||||
|
||||
if (!schBasePoint.getPoint_code().equals(dto.getSite_code())) {
|
||||
throw new BadRequestException("载具" + dto.getVehicle_code() + "不在" + dto.getSite_code() + "上");
|
||||
}
|
||||
|
||||
return PdaResponse.requestOk();
|
||||
ZwConfirmCheckParamRespondDto respDto = new ZwConfirmCheckParamRespondDto();
|
||||
respDto.setQty(String.valueOf(groupPlates.get(0).getQty()));
|
||||
respDto.setMaterial_code(groupPlates.get(0).getMaterial_code());
|
||||
respDto.setForm_data_code(groupPlates.get(0).getExt_code());
|
||||
respDto.setVehicle_code(vehicle_code);
|
||||
respDto.setSite_code(site_code);
|
||||
return PdaResponse.requestParamOk(respDto);
|
||||
|
||||
}
|
||||
|
||||
@@ -1404,7 +1443,18 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
if(schBasePointList.isEmpty()){
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
return PdaResponse.requestParamOk(schBasePointList.get(0).getPoint_code());
|
||||
|
||||
JSONObject outJson = new JSONObject();
|
||||
//查询托盘的
|
||||
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
|
||||
if(mdPbStoragevehicleinfo != null ){
|
||||
|
||||
}
|
||||
|
||||
outJson.put("point_code",schBasePointList.get(0).getPoint_code());
|
||||
outJson.put("recommended_sect_code",mdPbStoragevehicleinfo.getRecommended_sect_code());
|
||||
|
||||
return PdaResponse.requestParamOk(outJson);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -80,6 +80,9 @@ import static org.nl.wms.warehouse_manage.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
@Autowired
|
||||
private Map<String, AbstractTask> applyTaskMap;
|
||||
|
||||
@Autowired
|
||||
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
|
||||
/**
|
||||
* 组盘记录mapper
|
||||
*/
|
||||
@@ -110,11 +113,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
*/
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
||||
/**
|
||||
* 载具扩展属性服务
|
||||
*/
|
||||
@Autowired
|
||||
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
@@ -421,7 +419,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
|
||||
//查找状态为入库状态的组盘表
|
||||
List<GroupPlate> groupPlateList = iMdPbGroupPlateService.list(new QueryWrapper<GroupPlate>().lambda()
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
.ne(GroupPlate::getPcsn, "空托盘入库")
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("vehicle_code"))
|
||||
);
|
||||
@@ -435,7 +433,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
throw new BadRequestException("载具组盘信息重复,请核对!");
|
||||
}
|
||||
|
||||
|
||||
JSONObject outJson = new JSONObject();
|
||||
|
||||
//根据物料id获取物料名称等信息
|
||||
@@ -453,6 +450,11 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
return PdaResponse.requestParamOk(outJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getStructivtByMaterialAndSectCode(JSONObject whereJson) {
|
||||
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.queryAll(whereJson));
|
||||
}
|
||||
|
||||
|
||||
private String createOutBills(JSONObject whereJson) {
|
||||
String now = DateUtil.now();
|
||||
|
||||
@@ -56,6 +56,13 @@ public class SchBasePointController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getInBillPointList")
|
||||
@Log("查询入库点位清单")
|
||||
public ResponseEntity<Object> getInBillPointList(@Validated @RequestBody SchBasePoint entity) {
|
||||
return new ResponseEntity<>(schBasePointService.getInBillPointList(entity),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@Log("删除点位管理")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
|
||||
@@ -48,6 +48,13 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
*/
|
||||
PdaResponse updatePointType(SchBasePoint entity);
|
||||
|
||||
/**
|
||||
* 编辑点位类型
|
||||
*
|
||||
* @param entity /
|
||||
*/
|
||||
PdaResponse getInBillPointList(SchBasePoint entity);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
*
|
||||
@@ -136,4 +143,6 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
List<SchBasePoint> getPointList2(SchBasePoint region);
|
||||
|
||||
List<SchBasePoint> getPointsByCode(String regions);
|
||||
|
||||
SchBasePoint getPointByCode(String pointCode);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,13 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
*/
|
||||
List<SchBasePoint> getAllUnlockAbnormalPoints();
|
||||
|
||||
/**
|
||||
* 获得原料卸车区所有点位
|
||||
*
|
||||
* @return List<SchBasePoint>
|
||||
*/
|
||||
List<SchBasePoint> getInBillPointList(String point_code);
|
||||
|
||||
/**
|
||||
* 行锁获取id的点位
|
||||
*
|
||||
|
||||
@@ -19,6 +19,14 @@
|
||||
WHERE p.ing_task_code IS NOT NULL
|
||||
AND p.ing_task_code != '' AND (t.task_status = '5' OR t.task_status = '6')
|
||||
</select>
|
||||
<select id="getInBillPointList" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
|
||||
SELECT p.point_code,p.point_name,p.point_type
|
||||
FROM `sch_base_point` p
|
||||
WHERE region_code = 'YLXCQ'
|
||||
<if test="point_code != null and point_code != ''">
|
||||
AND p.point_code like CONCAT('%', #{point_code}, '%')
|
||||
</if>
|
||||
</select>
|
||||
<select id="selectByIdLock" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
|
||||
SELECT p.*
|
||||
FROM `sch_base_point` p
|
||||
|
||||
@@ -164,6 +164,11 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getInBillPointList(SchBasePoint entity) {
|
||||
return PdaResponse.requestParamOk( pointMapper.getInBillPointList(entity.getPoint_code()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void deleteAll(Set<String> ids) {
|
||||
@@ -349,4 +354,15 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
return schBasePointList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SchBasePoint getPointByCode(String pointCode) {
|
||||
List<SchBasePoint> schBasePointList = pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, pointCode));
|
||||
|
||||
if(schBasePointList.isEmpty()){
|
||||
return null;
|
||||
}
|
||||
return schBasePointList.get(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -37,6 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@@ -209,6 +212,15 @@ public class InBillTask extends AbstractTask {
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code,taskObj.getVehicle_code2()));
|
||||
|
||||
//删除组盘表
|
||||
//删除
|
||||
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
|
||||
.in(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()))
|
||||
.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet());
|
||||
if(CollectionUtils.isNotEmpty(groupSet)) {
|
||||
iMdPbGroupplateService.delete(groupSet);
|
||||
}
|
||||
|
||||
//更新formdata
|
||||
updateFormData(taskObj);
|
||||
}
|
||||
|
||||
@@ -119,8 +119,9 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
|
||||
//只能本库移动或移动到不合格区
|
||||
for (JSONObject jsonObject : dto.getTableData()) {
|
||||
if (!jsonObject.getString("turnout_sect_code").equals(jsonObject.getString("turnin_sect_code")) || !jsonObject.getString("turnin_sect_code").equals("BHG")) {
|
||||
throw new IllegalArgumentException("只能移动不合格区或在本库区移库!");
|
||||
|
||||
if (!jsonObject.getString("turnout_sect_code").equals(jsonObject.getString("turnin_sect_code")) && !jsonObject.getString("turnin_sect_code").equals("BHG")) {
|
||||
throw new IllegalArgumentException("只能移动到不合格区或在本库区移库!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
<el-table-column prop="pcsn" label="批次号" :min-width="flexWidth('pcsn',crud.data,'批次号')" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
|
||||
<el-table-column prop="qty" label="总数" :formatter="crud.formatNum3" :min-width="100" />
|
||||
<el-table-column label="可用数" :min-width="100" >
|
||||
<el-table-column label="可用数" :min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.qty - scope.row.frozen_qty }}</span>
|
||||
</template>
|
||||
@@ -96,6 +96,8 @@
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="create_time" label="入库时间" :min-width="flexWidth('insert_time',crud.data,'入库时间')" />
|
||||
<el-table-column prop="supp_code" label="供应商编码" :min-width="flexWidth('supp_code',crud.data,'供应商编码')" />
|
||||
<el-table-column prop="supp_name" label="供应商名称" :min-width="flexWidth('supp_name',crud.data,'供应商名称')" />
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
@@ -154,15 +156,15 @@ export default {
|
||||
sectQueryChange(val) {
|
||||
if (val.length === 1) {
|
||||
this.query.stor_id = val[0]
|
||||
this.query.sect_id = ''
|
||||
this.query.sect_code = ''
|
||||
}
|
||||
if (val.length === 0) {
|
||||
this.query.sect_id = ''
|
||||
this.query.sect_code = ''
|
||||
this.query.stor_id = ''
|
||||
}
|
||||
if (val.length === 2) {
|
||||
this.query.stor_id = val[0]
|
||||
this.query.sect_id = val[1]
|
||||
this.query.sect_code = val[1]
|
||||
}
|
||||
this.crud.toQuery()
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user