opt:手持功能优化
This commit is contained in:
@@ -99,6 +99,8 @@ public interface IStructattrService extends IService<Structattr> {
|
||||
Structattr getByCode(String struct_code);
|
||||
|
||||
|
||||
List<JSONObject> collectVechicle2(Map query);
|
||||
|
||||
List<StructattrVechielDto> collectVechicle(Map query);
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.basedata_manage.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
@@ -17,4 +18,6 @@ public interface StructattrMapper extends BaseMapper<Structattr>{
|
||||
|
||||
List<StructattrVechielDto> collectVehicle(Map query);
|
||||
|
||||
List<JSONObject> collectVehicle2(Map query);
|
||||
|
||||
}
|
||||
|
||||
@@ -56,4 +56,41 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="collectVehicle2" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
gro.qty,
|
||||
gro.create_time,
|
||||
gro.qty_unit_name,
|
||||
gro.qty_unit_id,
|
||||
gro.material_id,
|
||||
gro.group_id,
|
||||
gro.ext_code,
|
||||
gro.ext_type,
|
||||
gro.group_id,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
ivt.struct_code,
|
||||
ivt.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structattr ivt
|
||||
inner JOIN md_pb_groupplate gro ON ivt.storagevehicle_code = gro.storagevehicle_code
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id
|
||||
where ivt.lock_type = '0'
|
||||
and gro.frozen_qty = 0
|
||||
<if test="search != null and search != ''">
|
||||
and (mater.material_code LIKE '%${search}%'
|
||||
or mater.material_name LIKE '%${search}%')
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND gro.status = #{status}
|
||||
</if>
|
||||
<if test="sect_id != null and sect_id != ''">
|
||||
AND ivt.sect_id = #{sect_id}
|
||||
</if>
|
||||
<if test="order_by != null and order_by != ''">
|
||||
order by ${order_by}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -293,7 +293,13 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
|
||||
public List<StructattrVechielDto> collectVechicle(Map query) {
|
||||
return this.baseMapper.collectVehicle(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 库存查询
|
||||
*/
|
||||
@Override
|
||||
public List<JSONObject> collectVechicle2(Map query) {
|
||||
return this.baseMapper.collectVehicle2(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 出库分配
|
||||
|
||||
@@ -75,7 +75,6 @@ public class PdaIosInController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 组盘获取物料列表
|
||||
*/
|
||||
@@ -91,7 +90,6 @@ public class PdaIosInController {
|
||||
@PostMapping("/getVehicleMaterial")
|
||||
@Log("组盘入库获取物料明细")
|
||||
public ResponseEntity<Object> getVehicleMaterial(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "search");
|
||||
return new ResponseEntity<>(pdaIosInService.getVehicleMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -103,22 +101,4 @@ public class PdaIosInController {
|
||||
return new ResponseEntity<>(pdaIosInService.confirmIn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 拣选余料回库物料查询
|
||||
*/
|
||||
@PostMapping("/getReturnMaterial")
|
||||
@Log("拣选余料回库物料查询")
|
||||
public ResponseEntity<Object> getReturnMaterial(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosInService.getReturnMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping("/confirmReturnMaterial")
|
||||
@Log("余料回库确认")
|
||||
public ResponseEntity<Object> confirmReturnMaterial(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code", "group_id", "vehicle_code", "material_code", "qty", "stor_id");
|
||||
return new ResponseEntity<>(pdaIosInService.confirmReturnMaterial(whereJson),HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static org.nl.common.utils.ValidationUtil.assertNotBlankJson;
|
||||
|
||||
/**
|
||||
* 手持出库管理
|
||||
*
|
||||
@@ -39,7 +37,6 @@ public class PdaIosOutController {
|
||||
return new ResponseEntity<>(pdaIosOutService.getDtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 物料出库获取物料库存
|
||||
*/
|
||||
@@ -49,37 +46,13 @@ public class PdaIosOutController {
|
||||
return new ResponseEntity<>(pdaIosOutService.getMaterialDtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 货架与站点绑定或解绑
|
||||
* 人工叫料
|
||||
*/
|
||||
@PostMapping("bindOrUnbind")
|
||||
@Log("货架与站点绑定或解绑")
|
||||
public ResponseEntity<Object> bindOrUnbind(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "siteCode", "shelfCode", "mode");
|
||||
return new ResponseEntity<>(pdaIosOutService.bindOrUnbind(whereJson), HttpStatus.OK);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 线边库物料出库确认
|
||||
*/
|
||||
@PostMapping("/materialConfirm")
|
||||
@PostMapping("/callMaterialConfirm")
|
||||
@Log("线边库物料出库确认")
|
||||
public ResponseEntity<Object> materialConfirm(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "group_id", "storagevehicle_code", "siteCode", "struct_code");
|
||||
return new ResponseEntity<>(pdaIosOutService.materialConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 载具出库确认
|
||||
*/
|
||||
@PostMapping("/confirm")
|
||||
@Log("载具出库确认")
|
||||
public ResponseEntity<Object> outStorageConfirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosOutService.outStorageConfirm(whereJson), HttpStatus.OK);
|
||||
public ResponseEntity<Object> callMaterialConfirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosOutService.callMaterialConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -92,31 +65,4 @@ public class PdaIosOutController {
|
||||
return new ResponseEntity<>(pdaIosOutService.getVehicleMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 转运确认
|
||||
*/
|
||||
@PostMapping("transferConfirm")
|
||||
@Log("转运确认")
|
||||
public ResponseEntity<Object> transferConfirm(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "storagevehicle_code");
|
||||
return new ResponseEntity<>(pdaIosOutService.transferConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 空载具出库确认
|
||||
*/
|
||||
@PostMapping("vehicleOutConfirm")
|
||||
@Log("空载具出库确认")
|
||||
public ResponseEntity<Object> vehicleOutConfirm(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode");
|
||||
return new ResponseEntity<>(pdaIosOutService.vehicleOutConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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.MdMeMaterialbase;
|
||||
import org.nl.wms.pda_manage.util.PdaResponse;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -105,25 +106,4 @@ public interface PdaIosInService {
|
||||
*/
|
||||
PdaResponse confirmIn(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 拣选余料回库物料查询
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code:载具编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getReturnMaterial(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 余料回库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code:载具编码
|
||||
* sect_code:库区
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse confirmReturnMaterial(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public interface PdaIosOutService {
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getMaterialDtl(JSONObject whereJson);
|
||||
JSONObject getMaterialDtl(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
@@ -55,57 +55,7 @@ public interface PdaIosOutService {
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse materialConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 货架与站点绑定或解绑
|
||||
*
|
||||
* @param whereJson {
|
||||
* siteCode: 点位
|
||||
* shelfCode: 货架编号
|
||||
* mode: 0解绑1绑定
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse bindOrUnbind(JSONObject whereJson);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 载具出库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具码
|
||||
* point_code: 点位编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse outStorageConfirm(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 转运确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具码
|
||||
* point_code: 点位编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse transferConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 空载具出库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* sect_id: 库区
|
||||
* siteCode: 目标站点
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse vehicleOutConfirm(JSONObject whereJson);
|
||||
|
||||
|
||||
JSONObject callMaterialConfirm(JSONObject whereJson);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
/**
|
||||
* 组盘记录mapper
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private MdPbGroupplateMapper mdPbGroupplateMapper;
|
||||
|
||||
/**
|
||||
@@ -117,15 +117,10 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
*/
|
||||
@Autowired
|
||||
private IRawAssistIStorService iRawAssistIStorService;
|
||||
/**
|
||||
* 回库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private BackInTask backInTask;
|
||||
/**
|
||||
* 入库明细服务
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
|
||||
@@ -140,44 +135,45 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
public PdaResponse groupPlate(JSONObject whereJson) {
|
||||
// 物料编码
|
||||
String materialId = whereJson.getString("material_id");
|
||||
//批次
|
||||
String pcsn = whereJson.getString("pcsn");
|
||||
//载具号
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
// 数量
|
||||
String qty = whereJson.getString("qty");
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
|
||||
BigDecimal qty = whereJson.getBigDecimal("qty");
|
||||
if (ObjectUtil.isEmpty(materialId)) {
|
||||
throw new BadRequestException("物料信息不能为空!");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具信息不能为空!");
|
||||
}
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(materialId);
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id());
|
||||
// 校验
|
||||
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao) || ObjectUtil.isEmpty(materDao)) {
|
||||
throw new BadRequestException("载具,物料或单位信息有误!");
|
||||
}
|
||||
//判断该载具是否存在组盘信息
|
||||
long statusCount = iMdPbGroupplateService.count(
|
||||
new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicleDao.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicle_code)
|
||||
.lt(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库"))
|
||||
);
|
||||
if (statusCount > 0) {
|
||||
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在组盘信息,请对数据进行核实!");
|
||||
throw new BadRequestException("载具编码:" + vehicle_code + "已存在组盘信息,请对数据进行核实!");
|
||||
}
|
||||
//判断该载具编号是否已经存在库内
|
||||
long count = iStructattrService.count(
|
||||
new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getStoragevehicle_code, vehicleDao.getStoragevehicle_code())
|
||||
.eq(Structattr::getStoragevehicle_code, vehicle_code)
|
||||
);
|
||||
if (count > 0) {
|
||||
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在库内,请对数据进行核实!");
|
||||
throw new BadRequestException("载具编码:" + vehicle_code + "已存在库内,请对数据进行核实!");
|
||||
}
|
||||
//todo token未正确处理
|
||||
GroupPlate groupDao = GroupPlate.builder()
|
||||
.group_id(IdUtil.getStringId())
|
||||
.material_id(materDao.getMaterial_code())
|
||||
.storagevehicle_code(vehicleDao.getStoragevehicle_code())
|
||||
.pcsn(pcsn)
|
||||
.storagevehicle_code(vehicle_code)
|
||||
.qty_unit_id(unitDao.getMeasure_unit_id())
|
||||
.qty_unit_name(unitDao.getUnit_name())
|
||||
.qty(new BigDecimal(qty))
|
||||
.qty(qty)
|
||||
.frozen_qty(BigDecimal.ZERO)
|
||||
.status(GROUP_PLATE_STATUS.code("组盘"))
|
||||
.ext_code(whereJson.getString("ext_code"))
|
||||
.create_id(SecurityUtils.getCurrentUserId())
|
||||
.create_name(SecurityUtils.getCurrentNickName())
|
||||
.create_time(DateUtil.now())
|
||||
@@ -224,11 +220,10 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
@Override
|
||||
public List<SelectItemVo> getSect(JSONObject whereJson) {
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), pageQuery);
|
||||
List<Sectattr> sectList = iSectattrService.list();
|
||||
List<SelectItemVo> selectList = new ArrayList<>();
|
||||
sectList.getRecords().forEach(r ->
|
||||
selectList.add(SelectItemVo.builder().text(r.getStor_name() + "-" + r.getSect_name()).value(r.getSect_id()).build())
|
||||
sectList.forEach(r ->
|
||||
selectList.add(SelectItemVo.builder().text(r.getSect_name()).value(r.getSect_id()).build())
|
||||
);
|
||||
return selectList;
|
||||
}
|
||||
@@ -244,113 +239,24 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
@Override
|
||||
public JSONObject getVehicleMaterial(JSONObject whereJson) {
|
||||
whereJson.put("status", GROUP_PLATE_STATUS.code("组盘"));
|
||||
whereJson.put("vehicleCode", whereJson.getString("search"));
|
||||
List<JSONObject> list = mdPbGroupplateMapper.getVehicleMaterial(whereJson);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("search"))) {
|
||||
throw new BadRequestException("载具编码不能为空!");
|
||||
}
|
||||
List<GroupPlate> list = mdPbGroupplateMapper.selectList(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code,whereJson.getString("search"))
|
||||
);
|
||||
if(list.size() == 0){
|
||||
throw new BadRequestException("此载具未组盘,请检查!");
|
||||
}
|
||||
return list.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拣选余料回库物料查询
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code:载具编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
@Override
|
||||
public PdaResponse getReturnMaterial(JSONObject whereJson) {
|
||||
whereJson.put("status", GROUP_PLATE_STATUS.code("出库"));
|
||||
;
|
||||
if (!list.get(0).getStatus().equals(GROUP_PLATE_STATUS.code("组盘"))) {
|
||||
throw new BadRequestException("此载具非组盘状态,请检查!");
|
||||
}
|
||||
whereJson.put("status", GROUP_PLATE_STATUS.code("组盘"));
|
||||
whereJson.put("vehicleCode", whereJson.getString("search"));
|
||||
whereJson.put("qty", 0);
|
||||
List<JSONObject> list = mdPbGroupplateMapper.getVehicleMaterial(whereJson);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
throw new BadRequestException("此载具无余料可回库!");
|
||||
}
|
||||
return PdaResponse.requestParamOk(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 余料回库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code:载具编码
|
||||
* sect_code:库区
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse confirmReturnMaterial(JSONObject whereJson) {
|
||||
// 生成回库任务
|
||||
whereJson.put("config_code", IOSConstant.BACK_IN_TASK);
|
||||
whereJson.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
//入库分配
|
||||
divStructNoBills(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();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 不含单据入库业务
|
||||
*/
|
||||
private void divStructNoBills(JSONObject whereJson) {
|
||||
//校验载具
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
|
||||
if (ObjectUtil.isEmpty(vehicleDao)) {
|
||||
throw new BadRequestException("不存在该载具号信息,请检查");
|
||||
}
|
||||
//校验仓库
|
||||
BsrealStorattr storeDao = iSrealStorattrService.getById(whereJson.getString("stor_id"));
|
||||
if (ObjectUtil.isEmpty(storeDao)) {
|
||||
throw new BadRequestException("该库区未找到对应仓库信息,请检查");
|
||||
}
|
||||
//分配仓位
|
||||
JSONObject params = new JSONObject();
|
||||
params.put("ioType", StatusEnum.STRATEGY_TYPE.code("入库"));
|
||||
params.put("storagevehicle_code", vehicleDao.getStoragevehicle_code());
|
||||
params.put("stor_code", storeDao.getStor_code());
|
||||
params.put("sect_code", whereJson.getString("sect_code"));
|
||||
params.put("material_code", whereJson.getString("material_code"));
|
||||
params.put("qty", whereJson.getString("qty"));
|
||||
params.put("pcsn", whereJson.getString("pcsn"));
|
||||
Structattr attrDao = iRawAssistIStorService.getStructattr(whereJson);
|
||||
//确定起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
whereJson.put("point_code1", schBasePoint.getPoint_code());
|
||||
//确定终点
|
||||
whereJson.put("point_code2", attrDao.getStruct_code());
|
||||
//创建任务
|
||||
String taskId = applyTaskMap.get(whereJson.getString("config_code")).create(whereJson);
|
||||
// 更新起点绑定id
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
|
||||
);
|
||||
// 更新终点锁定状态
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", attrDao.getStruct_code());
|
||||
lock_map.put("inv_id", null);
|
||||
lock_map.put("inv_code", null);
|
||||
lock_map.put("inv_type", null);
|
||||
lock_map.put("taskdtl_id", taskId);
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
List<JSONObject> ret = mdPbGroupplateMapper.getVehicleMaterial(whereJson);
|
||||
return ret.get(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -361,10 +267,11 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
if (StringUtils.isBlank(whereJson.getString("is_empty_vehicle"))) {
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位");
|
||||
throw new BadRequestException("点位不存在:"+whereJson.getString("site_code"));
|
||||
}
|
||||
//todo 需组织入库单数据
|
||||
whereJson.put("point_code",whereJson.getString("site_code"));
|
||||
// 预组织出入库单据实体
|
||||
Map<String, Object> jsonMst = organizeInsertData(whereJson);
|
||||
@@ -382,19 +289,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")));
|
||||
} else {
|
||||
//空载具入库
|
||||
whereJson.put("qty", 1);
|
||||
String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : StatusEnum.VEHICLE_TYPE.code("空料箱");
|
||||
whereJson.put("material_id", materialCode);
|
||||
//组盘
|
||||
groupPlate(whereJson);
|
||||
// 生成空载具入库任务
|
||||
whereJson.put("config_code", IOSConstant.VEHICLE_IN_TASK);
|
||||
whereJson.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
//入库分配
|
||||
divStructNoBills(whereJson);
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@@ -2,13 +2,10 @@ 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.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
@@ -16,27 +13,17 @@ import org.nl.common.utils.MapOf;
|
||||
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.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
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.service.PdaIosOutService;
|
||||
import org.nl.wms.pda_manage.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis;
|
||||
@@ -45,17 +32,11 @@ import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.nl.wms.warehouse_manage.service.util.UpdateIvtUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.nl.wms.warehouse_manage.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
|
||||
@@ -69,29 +50,21 @@ import static org.nl.wms.warehouse_manage.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
*/
|
||||
@Service
|
||||
public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
@Autowired
|
||||
private Map<String, AbstractTask> applyTaskMap;
|
||||
/**
|
||||
* 组盘记录mapper
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private MdPbGroupplateMapper mdPbGroupplateMapper;
|
||||
/**
|
||||
* 库区服务
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISectattrService iSectattrService;
|
||||
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
/**
|
||||
* 出入库单主表
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvMapper ioStorInvMapper;
|
||||
/**
|
||||
* 仓库服务
|
||||
*/
|
||||
@Autowired
|
||||
private IBsrealStorattrService iSrealStorattrService;
|
||||
|
||||
/**
|
||||
* 基础物料服务
|
||||
@@ -101,15 +74,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
/**
|
||||
* 载具扩展属性服务
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@@ -119,41 +86,15 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
/**
|
||||
* 出入库单明细mapper
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
/**
|
||||
* 出入库单分配明细mapper
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
|
||||
/**
|
||||
* 更新库存服务
|
||||
*/
|
||||
@Autowired
|
||||
private UpdateIvtUtils updateIvtUtils;
|
||||
|
||||
/**
|
||||
* 出库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private StOutTask stOutTask;
|
||||
|
||||
/**
|
||||
* 手持任务
|
||||
*/
|
||||
@Autowired
|
||||
private PdaPointTask pdaPointTask;
|
||||
|
||||
|
||||
/**
|
||||
* 入库服务服务
|
||||
*/
|
||||
@Autowired
|
||||
private IRawAssistIStorService iRawAssistIStorService;
|
||||
|
||||
|
||||
@Override
|
||||
public PdaResponse getDtl(JSONObject whereJson) {
|
||||
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson));
|
||||
@@ -161,14 +102,17 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
|
||||
|
||||
@Override
|
||||
public PdaResponse getMaterialDtl(JSONObject whereJson) {
|
||||
List<StructattrVechielDto> list = iStructattrService.collectVechicle(
|
||||
public JSONObject getMaterialDtl(JSONObject whereJson) {
|
||||
List<JSONObject> list = iStructattrService.collectVechicle2(
|
||||
MapOf.of("search", whereJson.getString("search"),
|
||||
"stor_code", "XB01",
|
||||
"sect_id", whereJson.getString("sect_id"),
|
||||
"status", GROUP_PLATE_STATUS.code("入库"),
|
||||
"is_lock", "false",
|
||||
"order_by", "gro.create_time asc"));
|
||||
return PdaResponse.requestParamOk(list);
|
||||
JSONObject ret = new JSONObject();
|
||||
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
|
||||
ret.put("message","查询成功");
|
||||
ret.put("data",list);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -183,140 +127,67 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse materialConfirm(JSONObject whereJson) {
|
||||
public JSONObject callMaterialConfirm(JSONObject param) {
|
||||
//出库输送线点
|
||||
String outPoint = param.getString("siteCode");
|
||||
if (ObjectUtil.isEmpty(outPoint)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
//校验点位是否存在
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, outPoint));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("点位不存在:"+outPoint);
|
||||
}
|
||||
//载具信息
|
||||
JSONObject obj = param.getJSONObject("obj");
|
||||
//创建出库单/明细/分配
|
||||
GroupPlate plateDao = mdPbGroupplateMapper.selectOne(
|
||||
new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id")));
|
||||
.eq(GroupPlate::getGroup_id, obj.getString("group_id")));
|
||||
Structattr sectDao = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getStruct_code, whereJson.getString("struct_code")));
|
||||
.eq(Structattr::getStruct_code, obj.getString("struct_code")));
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(plateDao.getMaterial_id());
|
||||
whereJson.put("material_id", materDao.getMaterial_id());
|
||||
whereJson.put("material_code", materDao.getMaterial_code());
|
||||
whereJson.put("store_id", sectDao.getStor_id());
|
||||
whereJson.put("store_code", sectDao.getStor_code());
|
||||
whereJson.put("store_name", sectDao.getStor_name());
|
||||
whereJson.put("sec", sectDao.getSect_id());
|
||||
whereJson.put("qty", plateDao.getQty());
|
||||
whereJson.put("pcsn", plateDao.getPcsn());
|
||||
whereJson.put("unit_id", plateDao.getQty_unit_id());
|
||||
whereJson.put("unit_name", plateDao.getQty_unit_name());
|
||||
obj.put("material_id", materDao.getMaterial_id());
|
||||
obj.put("material_code", materDao.getMaterial_code());
|
||||
obj.put("store_id", sectDao.getStor_id());
|
||||
obj.put("store_code", sectDao.getStor_code());
|
||||
obj.put("store_name", sectDao.getStor_name());
|
||||
obj.put("sec", sectDao.getSect_id());
|
||||
obj.put("qty", plateDao.getQty());
|
||||
obj.put("unit_id", plateDao.getQty_unit_id());
|
||||
obj.put("unit_name", plateDao.getQty_unit_name());
|
||||
//创建出库单据
|
||||
String disId = createOutBills(whereJson);
|
||||
String disId = createOutBills(obj);
|
||||
//锁定货位
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", whereJson.getString("struct_code"));
|
||||
lock_map.put("struct_code", obj.getString("struct_code"));
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
//创建任务
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("task_type", "STOutTask");
|
||||
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskForm.put("PickingLocation", whereJson.getString("struct_code"));
|
||||
taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
|
||||
taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
taskForm.put("PickingLocation", obj.getString("struct_code"));
|
||||
taskForm.put("PlacedLocation",outPoint);
|
||||
taskForm.put("vehicle_code", obj.getString("storagevehicle_code"));
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
String taskId = stOutTask.create(taskForm);
|
||||
//更新任务id
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<IOStorInvDis>()
|
||||
.set(IOStorInvDis::getTask_id, taskId)
|
||||
.set(IOStorInvDis::getPoint_code,outPoint)
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, disId)
|
||||
);
|
||||
//更新组盘记录表
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getFrozen_qty, plateDao.getQty())
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"))
|
||||
.eq(GroupPlate::getGroup_id, obj.getString("group_id"))
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 空载具出库
|
||||
* 1:托盘2料箱
|
||||
*/
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse vehicleOutConfirm(JSONObject whereJson) {
|
||||
long qty = 1L;
|
||||
LambdaQueryWrapper<MdMeMaterialbase> queryWrapper = new LambdaQueryWrapper<>();
|
||||
//空料箱出库
|
||||
if (StringUtils.isNotBlank(whereJson.getString("qty"))) {
|
||||
qty = whereJson.getLongValue("qty");
|
||||
if (qty > 6) {
|
||||
throw new BadRequestException("一次性只能输入小于7以内的载具数量");
|
||||
}
|
||||
queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空料箱"));
|
||||
} else {
|
||||
queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空托盘"));
|
||||
|
||||
}
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(queryWrapper);
|
||||
if (materDao == null) {
|
||||
throw new BadRequestException("未找到空载具物料信息!");
|
||||
}
|
||||
whereJson.put("material_id", materDao.getMaterial_id());
|
||||
whereJson.put("material_code", materDao.getMaterial_code());
|
||||
Sectattr sectattr = iSectattrService.getById(new LambdaQueryWrapper<>(Sectattr.class)
|
||||
.eq(Sectattr::getSect_id, whereJson.getString("sect_id"))
|
||||
.eq(Sectattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
);
|
||||
if (ObjectUtil.isEmpty(sectattr)) {
|
||||
throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
|
||||
}
|
||||
BsrealStorattr storeDao = iSrealStorattrService.getById(sectattr.getStor_id());
|
||||
whereJson.put("stor_code", storeDao.getStor_code());
|
||||
whereJson.put("sect_code", sectattr.getSect_code());
|
||||
StrategyStructParam strategyStructParam = StrategyStructParam.builder()
|
||||
.ioType(whereJson.getString(StatusEnum.STRATEGY_TYPE.code("出库")))
|
||||
.sect_code(whereJson.getString("sect_code"))
|
||||
.stor_code(whereJson.getString("stor_code"))
|
||||
.material_code(whereJson.getString("material_id"))
|
||||
.material_code(whereJson.getString("material_code"))
|
||||
.qty(BigDecimal.valueOf(qty))
|
||||
.build();
|
||||
List<StrategyStructMaterialVO> structList = iStructattrService.outBoundSectDiv(strategyStructParam);
|
||||
if (CollectionUtils.isEmpty(structList)) {
|
||||
throw new BadRequestException("无可用库存!");
|
||||
}
|
||||
structList.forEach(r -> {
|
||||
//创建任务
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("task_type", IOSConstant.VEHICLE_OUT_TASK);
|
||||
taskForm.put("config_code", IOSConstant.VEHICLE_IN_TASK);
|
||||
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskForm.put("PickingLocation", r.getStruct_code());
|
||||
taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
|
||||
taskForm.put("vehicle_code", r.getStoragevehicle_code());
|
||||
VehicleOutTask vehicleOutTask = SpringContextHolder.getBean("VehicleOutTask");
|
||||
applyTaskMap.get(IOSConstant.VEHICLE_IN_TASK).create(whereJson);
|
||||
vehicleOutTask.create(taskForm);
|
||||
});
|
||||
//更新组盘记录表
|
||||
Set<String> vehicleCodeSet = structList.stream()
|
||||
.map(StrategyStructMaterialVO::getStoragevehicle_code)
|
||||
.collect(Collectors.toSet());
|
||||
mdPbGroupplateMapper.update(
|
||||
new GroupPlate(),
|
||||
new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.in(GroupPlate::getStoragevehicle_code, vehicleCodeSet)
|
||||
);
|
||||
//锁定仓位
|
||||
Set<String> structCodeSet = structList.stream()
|
||||
.map(StrategyStructMaterialVO::getStruct_code)
|
||||
.collect(Collectors.toSet());
|
||||
iStructattrService.update(
|
||||
new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getInv_id, null)
|
||||
.set(Structattr::getInv_code, null)
|
||||
.set(Structattr::getInv_type, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁"))
|
||||
.in(Structattr::getStruct_code, structCodeSet)
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
JSONObject ret = new JSONObject();
|
||||
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
|
||||
ret.put("message","操作成功");
|
||||
return ret;
|
||||
}
|
||||
|
||||
private String createOutBills(JSONObject whereJson) {
|
||||
@@ -358,7 +229,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
ioStorInvDtl.put("seq_no", "1");
|
||||
ioStorInvDtl.put("material_id", whereJson.get("material_id"));
|
||||
ioStorInvDtl.put("material_code", whereJson.get("material_code"));
|
||||
ioStorInvDtl.put("Pcsn", whereJson.get("pcsn"));
|
||||
ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("分配完"));
|
||||
ioStorInvDtl.put("qty_unit_id", whereJson.get("unit_id"));
|
||||
ioStorInvDtl.put("qty_unit_name", whereJson.get("unit_name"));
|
||||
@@ -375,7 +245,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
dis.put("seq_no", 1);
|
||||
dis.put("material_id", whereJson.get("material_id"));
|
||||
dis.put("material_code", whereJson.get("material_code"));
|
||||
dis.put("pcsn", whereJson.get("pcsn"));
|
||||
dis.put("storagevehicle_code", whereJson.get("storagevehicle_code"));
|
||||
dis.put("work_status", IOSEnum.INBILL_DIS_STATUS.code("执行中"));
|
||||
dis.put("is_issued", BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
@@ -386,124 +255,4 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
return disId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PdaResponse bindOrUnbind(JSONObject whereJson) {
|
||||
SchBasePoint sitePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")).eq(SchBasePoint::getIs_used, true));
|
||||
if (sitePoint == null) {
|
||||
throw new BadRequestException("输入的站点编号有误或被禁用,请检查!");
|
||||
}
|
||||
List<SchBasePoint> cxPointLists = iSchBasePointService.checkEndPointTask(
|
||||
null,
|
||||
null,
|
||||
StatusEnum.SORT_TYPE.code("升序"), null, sitePoint.getPoint_code(), null, false);
|
||||
if (ObjectUtils.isNotEmpty(cxPointLists)) {
|
||||
throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再做绑定或解绑!");
|
||||
}
|
||||
LambdaUpdateWrapper<SchBasePoint> wrapper = new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode"));
|
||||
if ("1" .equals(whereJson.getString("mode"))) {
|
||||
if (StringUtils.isNotBlank(sitePoint.getVehicle_code())) {
|
||||
throw new BadRequestException("当前站点已绑定货架:" + sitePoint.getVehicle_code() + ",请先解绑:" + sitePoint.getVehicle_code());
|
||||
}
|
||||
//校验是否在其他站点绑定
|
||||
SchBasePoint shelfPoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode")));
|
||||
if (shelfPoint != null) {
|
||||
throw new BadRequestException("当前货架已绑定在站点:" + sitePoint.getPoint_code() + ",请先解绑。");
|
||||
}
|
||||
wrapper.set(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode"))
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"));
|
||||
} else {
|
||||
wrapper.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"));
|
||||
}
|
||||
wrapper.set(SchBasePoint::getUpdate_time, DateUtil.now())
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName());
|
||||
iSchBasePointService.update(wrapper);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 1.库存载具绑定到出库点位
|
||||
* 2.更新组盘记录为出库
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse outStorageConfirm(JSONObject whereJson) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
//获取终点
|
||||
SchBasePoint pointDao = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("storagevehicle_code")));
|
||||
if (ObjectUtil.isEmpty(pointDao)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
GroupPlate groupPlate = mdPbGroupplateMapper.selectById(whereJson.getString("group_id"));
|
||||
//更新组盘信息
|
||||
LambdaUpdateWrapper<GroupPlate> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
//出库确认
|
||||
if ("1".equals(whereJson.getString("type"))) {
|
||||
BigDecimal qty = groupPlate.getQty().subtract(groupPlate.getFrozen_qty()).abs();
|
||||
updateWrapper.set(GroupPlate::getQty, qty).set(GroupPlate::getFrozen_qty, 0);
|
||||
} else {
|
||||
//强制确认
|
||||
updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0);
|
||||
}
|
||||
updateWrapper.set(GroupPlate::getUpdate_id, currentUserId + "")
|
||||
.set(GroupPlate::getUpdate_name, nickName)
|
||||
.set(GroupPlate::getUpdate_time, now)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"));
|
||||
//更新组盘记录表
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), updateWrapper);
|
||||
//库存绑定到出库点。
|
||||
iSchBasePointService.update(new SchBasePoint(), new LambdaUpdateWrapper<>(SchBasePoint.class)
|
||||
.set(SchBasePoint::getVehicle_code, groupPlate.getStoragevehicle_code())
|
||||
.set(SchBasePoint::getIos_id, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
.eq(SchBasePoint::getPoint_code, pointDao.getPoint_code())
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse transferConfirm(JSONObject whereJson) {
|
||||
if (StringUtils.isBlank(whereJson.getString("region_code")) && StringUtils.isBlank(whereJson.getString("siteCode"))) {
|
||||
throw new BadRequestException("请选择目标站点或区域!");
|
||||
}
|
||||
String pointCode = whereJson.getString("siteCode");
|
||||
if (StringUtils.isBlank(pointCode)) {
|
||||
List<SchBasePoint> pointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
|
||||
.eq(SchBasePoint::getIs_used, 1)
|
||||
.isNull(SchBasePoint::getVehicle_code)
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq));
|
||||
if (CollectionUtils.isEmpty(pointList)) {
|
||||
throw new BadRequestException("该区域无可用空余点位!");
|
||||
}
|
||||
pointCode = pointList.get(0).getPoint_code();
|
||||
}
|
||||
//确定起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
// 生成转运任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.PDA_POINT_TASK);
|
||||
task.put("point_code1", schBasePoint.getPoint_code());
|
||||
task.put("point_code2", pointCode);
|
||||
task.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
pdaPointTask.create(task);
|
||||
// 更新起点绑定id
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
gro.*,
|
||||
mater.material_id,
|
||||
mater.material_code,
|
||||
mater.material_spec,
|
||||
mater.material_name
|
||||
FROM
|
||||
md_pb_groupplate gro
|
||||
|
||||
Reference in New Issue
Block a user