Browse Source

opt:优化手持功能。

master
龚宝雄 4 weeks ago
parent
commit
4e3e3eb0cb
  1. 4
      nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java
  2. 2
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java
  3. 6
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java
  4. 4
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java
  5. 13
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java
  6. 5
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/ClassRuleHandler.java
  7. 3
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java
  8. 4
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java
  9. 35
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java
  10. 37
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java
  11. 7
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java
  12. 10
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java
  13. 5
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java
  14. 1
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java
  15. 12
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java
  16. 3
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml
  17. 45
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java
  18. 26
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java
  19. 2
      nladmin-ui/README.md

4
nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java

@ -40,7 +40,7 @@ import java.util.Map;
*/ */
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/api/bigScreenScreen") @RequestMapping("/mobile/auth")
public class MobileAuthorizationController { public class MobileAuthorizationController {
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@ -51,7 +51,7 @@ public class MobileAuthorizationController {
@SaIgnore @SaIgnore
//("手持登陆验证") //("手持登陆验证")
public ResponseEntity<Object> handLogin(@RequestBody Map<String, String> whereJson) { public ResponseEntity<Object> handLogin(@RequestBody Map<String, String> whereJson) {
SysUser userInfo = userService.getOne(new QueryWrapper<SysUser>().eq("username", whereJson.get("user"))); SysUser userInfo = userService.getOne(new QueryWrapper<SysUser>().eq("username", whereJson.get("username")));
if (userInfo == null || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(RsaUtils.decryptByPrivateKey(RsaUtils.KEY, whereJson.get("password")), "salt"))) { // 这里需要密码加密 if (userInfo == null || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(RsaUtils.decryptByPrivateKey(RsaUtils.KEY, whereJson.get("password")), "salt"))) { // 这里需要密码加密
throw new BadRequestException("账号或密码错误"); throw new BadRequestException("账号或密码错误");
} }

2
nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java

@ -108,7 +108,7 @@ public interface IStructattrService extends IService<Structattr> {
/** /**
* 出库规则 * 出库规则
*/ */
List<StrategyStructMaterialVO> outBoundSectDiv(StrategyStructParam param); List<StructattrVechielDto> outBoundSectDiv(StrategyStructParam param);
/** /**
* 入库规则 * 入库规则

6
nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java

@ -333,7 +333,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
* 当前分配不会自动锁定货位及冻结出库数量分配完成后需要手动锁定货位并冻结出库数量 * 当前分配不会自动锁定货位及冻结出库数量分配完成后需要手动锁定货位并冻结出库数量
*/ */
@Override @Override
public List<StrategyStructMaterialVO> outBoundSectDiv(StrategyStructParam param) { public List<StructattrVechielDto> outBoundSectDiv(StrategyStructParam param) {
//只校验仓库,库区 //只校验仓库,库区
Assert.noNullElements(new Object[]{param.getStor_code(),param.getSect_code()},"请求参数不能为空"); Assert.noNullElements(new Object[]{param.getStor_code(),param.getSect_code()},"请求参数不能为空");
StSectStrategy one = iStSectStrategyService.getOne(new LambdaQueryWrapper<StSectStrategy>() StSectStrategy one = iStSectStrategyService.getOne(new LambdaQueryWrapper<StSectStrategy>()
@ -344,11 +344,13 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
} }
List<String> strategy = one.getStrategy(); List<String> strategy = one.getStrategy();
Map<String, Decisioner> decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class); Map<String, Decisioner> decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class);
// 判断策略类型
List list = null; List list = null;
for (String decisionerType : strategy) { for (String decisionerType : strategy) {
Decisioner decisioner = decisionerMap.get(decisionerType); Decisioner decisioner = decisionerMap.get(decisionerType);
log.info("执行出入库规格:"+decisioner.strategyConfig.getStrategy_name()); log.info("执行出入库规格:"+decisioner.strategyConfig.getStrategy_name());
list = decisioner.handler(list, param); JSONObject params = (JSONObject) JSON.toJSON(param);
list = decisioner.handler(list, params);
if (CollectionUtils.isEmpty(list)){ if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前策略"+decisioner.strategyConfig.getStrategy_name()+"无可用货位,分配前数量:"+list.size()); throw new BadRequestException("当前策略"+decisioner.strategyConfig.getStrategy_name()+"无可用货位,分配前数量:"+list.size());
} }

4
nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java

@ -42,7 +42,7 @@ public class FIFORuleHandler extends Decisioner<StructattrVechielDto, JSONObject
, "stor_code", param.getString("stor_code") , "stor_code", param.getString("stor_code")
, "plan_qty", plan_qty , "plan_qty", plan_qty
, "is_lock", "false" , "is_lock", "false"
, "order_by", "md_pb_vehicleMater.pcsn asc") , "order_by", "gro.pcsn asc")
); );
if (ObjectUtils.isEmpty(vechielDtos)) { if (ObjectUtils.isEmpty(vechielDtos)) {
throw new BadRequestException("当前出库策略:先进先出,库存分配失败,失败原因:库存不足!"); throw new BadRequestException("当前出库策略:先进先出,库存分配失败,失败原因:库存不足!");
@ -69,7 +69,7 @@ public class FIFORuleHandler extends Decisioner<StructattrVechielDto, JSONObject
for (Map.Entry<String, List<StructattrVechielDto>> entry : sortedGroupMap.entrySet()) { for (Map.Entry<String, List<StructattrVechielDto>> entry : sortedGroupMap.entrySet()) {
List<StructattrVechielDto> sortedList = new ArrayList<>(entry.getValue()); List<StructattrVechielDto> sortedList = new ArrayList<>(entry.getValue());
for (StructattrVechielDto structattr : sortedList) { for (StructattrVechielDto structattr : sortedList) {
BigDecimal qty = structattr.getXqty() != null ? structattr.getQty() : BigDecimal.ZERO; BigDecimal qty = structattr.getQty() != null ? structattr.getQty() : BigDecimal.ZERO;
BigDecimal frozen = structattr.getFrozen_qty() != null ? structattr.getFrozen_qty() : BigDecimal.ZERO; BigDecimal frozen = structattr.getFrozen_qty() != null ? structattr.getFrozen_qty() : BigDecimal.ZERO;
int available = qty.subtract(frozen).intValue(); int available = qty.subtract(frozen).intValue();
if (available <= 0) { if (available <= 0) {

13
nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java

@ -18,7 +18,7 @@ import java.util.stream.Collectors;
* 轻上重下策略 * 轻上重下策略
*/ */
@Service("weight") @Service("weight")
public class WeightRuleHandler extends Decisioner<Structattr, String> { public class WeightRuleHandler extends Decisioner<Structattr, JSONObject> {
/** /**
@ -32,21 +32,16 @@ public class WeightRuleHandler extends Decisioner<Structattr, String> {
* @return List<Structattr> 仓位集合 * @return List<Structattr> 仓位集合
*/ */
@Override @Override
public List<Structattr> handler(List<Structattr> list, String param) { public List<Structattr> handler(List<Structattr> list, JSONObject param) {
// 判断仓位是否为空 // 判断仓位是否为空
if (ObjectUtil.isEmpty(list)) { if (ObjectUtil.isEmpty(list)) {
throw new BadRequestException("仓位集合为空!"); throw new BadRequestException("仓位集合为空!");
} }
// 判断策略类型
JSONObject jsonParam = JSONObject.parseObject(param, JSONObject.class);
List<Structattr> resultList = new ArrayList<>(); List<Structattr> resultList = new ArrayList<>();
switch (param.getString("ioType")) {
switch (jsonParam.getString("ioType")) {
case "1": case "1":
// 入库策略 // 入库策略
resultList = inHandler(list, jsonParam); resultList = inHandler(list, param);
break; break;
case "2": case "2":
// 出库策略 // 出库策略

5
nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/ClassRuleHandler.java

@ -1,4 +1,5 @@
package org.nl.wms.decision_manage.service.strategyConfig.decisioner.impl.diy; package org.nl.wms.decision_manage.service.strategyConfig.decisioner.impl.diy;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner; import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner;
import java.util.List; import java.util.List;
@ -7,9 +8,9 @@ import java.util.List;
* @Date 2024/4/6 16:18 * @Date 2024/4/6 16:18
* 自定义类处理器 * 自定义类处理器
*/ */
public class ClassRuleHandler extends Decisioner<String,String> { public class ClassRuleHandler extends Decisioner<String, JSONObject> {
@Override @Override
public List<String> handler(List<String> list, String param) { public List<String> handler(List<String> list, JSONObject param) {
System.out.println("迭代器使用中"+this.toString()); System.out.println("迭代器使用中"+this.toString());
return null; return null;
} }

3
nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java

@ -9,6 +9,7 @@ import org.nl.common.base.TableDataInfo;
import org.nl.common.logging.annotation.Log; import org.nl.common.logging.annotation.Log;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.pda.ios_manage.service.PdaIosInService; import org.nl.wms.pda.ios_manage.service.PdaIosInService;
import org.nl.wms.pda.util.PdaResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -40,7 +41,7 @@ public class PdaIosInController {
@Log("物料组盘确认") @Log("物料组盘确认")
public ResponseEntity<Object> groupPlate(@RequestBody JSONObject whereJson) { public ResponseEntity<Object> groupPlate(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "vehicle_code", "material_id","qty"); assertNotBlankJson(whereJson, "请求参数不能为空", "vehicle_code", "material_id","qty");
return new ResponseEntity<>(pdaIosInService.groupPlate(whereJson),HttpStatus.OK); return new ResponseEntity<>(PdaResponse.requestParamOk(pdaIosInService.groupPlate(whereJson)),HttpStatus.OK);
} }
@PostMapping("/getPlateDtl") @PostMapping("/getPlateDtl")

4
nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java

@ -29,7 +29,7 @@ public interface PdaIosInService {
* } * }
* @return PdaResponse * @return PdaResponse
*/ */
PdaResponse groupPlate(JSONObject whereJson); JSONObject groupPlate(JSONObject whereJson);
/** /**
* 查询明细 * 查询明细
@ -90,7 +90,7 @@ public interface PdaIosInService {
* *
* @return PdaResponse * @return PdaResponse
*/ */
PdaResponse getRegion(JSONObject whereJson); List<SelectItemVo> getRegion(JSONObject whereJson);

35
nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java

@ -137,7 +137,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Override @Override
public PdaResponse groupPlate(JSONObject whereJson) { public JSONObject groupPlate(JSONObject whereJson) {
// 物料编码 // 物料编码
String materialId = whereJson.getString("material_id"); String materialId = whereJson.getString("material_id");
//批次 //批次
@ -151,6 +151,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao) || ObjectUtil.isEmpty(materDao)) { if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao) || ObjectUtil.isEmpty(materDao)) {
throw new BadRequestException("载具,物料或单位信息有误!"); throw new BadRequestException("载具,物料或单位信息有误!");
} }
whereJson.put("material_id", materDao.getMaterial_id());
whereJson.put("material_code", materDao.getMaterial_code());
//判断该载具是否存在组盘信息 //判断该载具是否存在组盘信息
long statusCount = iMdPbGroupplateService.count( long statusCount = iMdPbGroupplateService.count(
new LambdaQueryWrapper<GroupPlate>() new LambdaQueryWrapper<GroupPlate>()
@ -170,7 +172,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
} }
GroupPlate groupDao = GroupPlate.builder() GroupPlate groupDao = GroupPlate.builder()
.group_id(IdUtil.getStringId()) .group_id(IdUtil.getStringId())
.material_id(materDao.getMaterial_code()) .material_id(materDao.getMaterial_id())
.storagevehicle_code(vehicleDao.getStoragevehicle_code()) .storagevehicle_code(vehicleDao.getStoragevehicle_code())
.pcsn(pcsn) .pcsn(pcsn)
.qty_unit_id(unitDao.getMeasure_unit_id()) .qty_unit_id(unitDao.getMeasure_unit_id())
@ -183,7 +185,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
.create_time(DateUtil.now()) .create_time(DateUtil.now())
.build(); .build();
iMdPbGroupplateService.save(groupDao); iMdPbGroupplateService.save(groupDao);
return PdaResponse.requestOk(); return whereJson;
} }
@ -234,12 +236,15 @@ public class PdaIosInServiceImpl implements PdaIosInService {
} }
@Override @Override
public PdaResponse getRegion(JSONObject whereJson) { public List<SelectItemVo> getRegion(JSONObject whereJson) {
PageQuery pageQuery = new PageQuery(); PageQuery pageQuery = new PageQuery();
pageQuery.setPage(whereJson.getInteger("page") - 1);
pageQuery.setSize(whereJson.getInteger("size"));
IPage<SchBaseRegion> regionList = iSchBaseRegionService.queryAll(new HashMap(), pageQuery); IPage<SchBaseRegion> regionList = iSchBaseRegionService.queryAll(new HashMap(), pageQuery);
return PdaResponse.requestParamOk(regionList.getRecords());
List<SelectItemVo> selectList = new ArrayList<>();
regionList.getRecords().forEach(r ->
selectList.add(SelectItemVo.builder().text(r.getRegion_name()).value(r.getRegion_code()).build())
);
return selectList;
} }
@Override @Override
@ -325,7 +330,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
params.put("material_code", whereJson.getString("material_code")); params.put("material_code", whereJson.getString("material_code"));
params.put("qty", whereJson.getString("qty")); params.put("qty", whereJson.getString("qty"));
params.put("pcsn", whereJson.getString("pcsn")); params.put("pcsn", whereJson.getString("pcsn"));
Structattr attrDao = iRawAssistIStorService.getStructattr(whereJson); Structattr attrDao = iRawAssistIStorService.getStructattr(params);
//确定起点 //确定起点
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code"))); SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code")));
if (ObjectUtil.isEmpty(schBasePoint)) { if (ObjectUtil.isEmpty(schBasePoint)) {
@ -357,11 +362,15 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Override @Override
@Transactional @Transactional
public PdaResponse confirmIn(JSONObject whereJson) { public PdaResponse confirmIn(JSONObject whereJson) {
// 查询库区
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id"));
whereJson.put("stor_id", sectDao.getStor_id());
whereJson.put("sect_code", sectDao.getSect_code());
//物料组盘入库 //物料组盘入库
if (StringUtils.isBlank(whereJson.getString("is_empty_vehicle"))) { if (StringUtils.isBlank(whereJson.getString("is_empty_vehicle"))) {
//获取起点 //获取起点
SchBasePoint schBasePoint = iSchBasePointService 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)) { if (ObjectUtil.isEmpty(schBasePoint)) {
throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位"); throw new BadRequestException("未找到载具所在的点位信息,请检查该载具是否绑定点位");
} }
@ -385,6 +394,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
} else { } else {
//空载具入库 //空载具入库
whereJson.put("qty", 1); whereJson.put("qty", 1);
whereJson.put("pcsn", whereJson.getString("material_id"));
String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : StatusEnum.VEHICLE_TYPE.code("空料箱"); String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : StatusEnum.VEHICLE_TYPE.code("空料箱");
whereJson.put("material_id", materialCode); whereJson.put("material_id", materialCode);
//组盘 //组盘
@ -422,16 +432,14 @@ public class PdaIosInServiceImpl implements PdaIosInService {
Double total_qty = plateDaoList.stream() Double total_qty = plateDaoList.stream()
.map(row -> row.getQty().doubleValue()) .map(row -> row.getQty().doubleValue())
.reduce(Double::sum).orElse(0.0); .reduce(Double::sum).orElse(0.0);
// 查询库区
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id"));
// 组织主表数据 // 组织主表数据
Map<String, Object> jsonMst = new HashMap<>(); Map<String, Object> jsonMst = new HashMap<>();
jsonMst.put("stor_id", sectDao.getStor_id()); jsonMst.put("stor_id", whereJson.getString("stor_id"));
jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
jsonMst.put("total_qty", total_qty); jsonMst.put("total_qty", total_qty);
jsonMst.put("detail_count", 1); jsonMst.put("detail_count", 1);
jsonMst.put("bill_type", StatusEnum.IOBILL_TYPE_IN.code("生产入库")); jsonMst.put("bill_type", StatusEnum.IOBILL_TYPE_IN.code("生产入库"));
jsonMst.put("create_mode", IOSEnum.CREATE_MODE.code("终端产生"));
jsonMst.put("biz_date", DateUtil.now()); jsonMst.put("biz_date", DateUtil.now());
// 组织明细数据 // 组织明细数据
ArrayList<HashMap> tableData = new ArrayList<>(); ArrayList<HashMap> tableData = new ArrayList<>();
@ -447,6 +455,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
dtl.put("qty_unit_name", plateDao.getQty_unit_name()); dtl.put("qty_unit_name", plateDao.getQty_unit_name());
dtl.put("qty", String.valueOf(total_qty)); dtl.put("qty", String.valueOf(total_qty));
dtl.put("plan_qty", String.valueOf(total_qty)); dtl.put("plan_qty", String.valueOf(total_qty));
dtl.put("source_bill_code", plateDao.getExt_code());
// 调用新增 // 调用新增
tableData.add(dtl); tableData.add(dtl);
jsonMst.put("tableData",tableData); jsonMst.put("tableData",tableData);

37
nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java

@ -164,7 +164,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
public PdaResponse getMaterialDtl(JSONObject whereJson) { public PdaResponse getMaterialDtl(JSONObject whereJson) {
List<StructattrVechielDto> list = iStructattrService.collectVechicle( List<StructattrVechielDto> list = iStructattrService.collectVechicle(
MapOf.of("search", whereJson.getString("search"), MapOf.of("search", whereJson.getString("search"),
"stor_code", "XB01", "stor_code", "XB",
"status", GROUP_PLATE_STATUS.code("入库"), "status", GROUP_PLATE_STATUS.code("入库"),
"is_lock", "false", "is_lock", "false",
"order_by", "gro.create_time asc")); "order_by", "gro.create_time asc"));
@ -240,28 +240,23 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Transactional @Transactional
public PdaResponse vehicleOutConfirm(JSONObject whereJson) { public PdaResponse vehicleOutConfirm(JSONObject whereJson) {
long qty = 1L; long qty = 1L;
LambdaQueryWrapper<MdMeMaterialbase> queryWrapper = new LambdaQueryWrapper<>(); String materialCode = StatusEnum.VEHICLE_TYPE.code("空托盘");
//空料箱出库 //空料箱出库
if (StringUtils.isNotBlank(whereJson.getString("qty"))) { if (StringUtils.isNotBlank(whereJson.getString("qty"))) {
qty = whereJson.getLongValue("qty"); qty = whereJson.getLongValue("qty");
if (qty > 6) { if (qty > 6) {
throw new BadRequestException("一次性只能输入小于7以内的载具数量"); throw new BadRequestException("一次性只能输入小于7以内的载具数量");
} }
queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空料箱")); materialCode = StatusEnum.VEHICLE_TYPE.code("空料箱");
} else {
queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空托盘"));
} }
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(queryWrapper); MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(materialCode);
if (materDao == null) { if (materDao == null) {
throw new BadRequestException("未找到空载具物料信息!"); throw new BadRequestException("未找到空载具物料信息!");
} }
whereJson.put("pcsn", "1");
whereJson.put("material_id", materDao.getMaterial_id()); whereJson.put("material_id", materDao.getMaterial_id());
whereJson.put("material_code", materDao.getMaterial_code()); whereJson.put("material_code", materDao.getMaterial_code());
Sectattr sectattr = iSectattrService.getById(new LambdaQueryWrapper<>(Sectattr.class) Sectattr sectattr = iSectattrService.getById(whereJson.getString("sect_id"));
.eq(Sectattr::getSect_id, whereJson.getString("sect_id"))
.eq(Sectattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是"))
);
if (ObjectUtil.isEmpty(sectattr)) { if (ObjectUtil.isEmpty(sectattr)) {
throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!"); throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
} }
@ -276,7 +271,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
.material_code(whereJson.getString("material_code")) .material_code(whereJson.getString("material_code"))
.qty(BigDecimal.valueOf(qty)) .qty(BigDecimal.valueOf(qty))
.build(); .build();
List<StrategyStructMaterialVO> structList = iStructattrService.outBoundSectDiv(strategyStructParam); List<StructattrVechielDto> structList = iStructattrService.outBoundSectDiv(strategyStructParam);
if (CollectionUtils.isEmpty(structList)) { if (CollectionUtils.isEmpty(structList)) {
throw new BadRequestException("无可用库存!"); throw new BadRequestException("无可用库存!");
} }
@ -284,18 +279,16 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
//创建任务 //创建任务
JSONObject taskForm = new JSONObject(); JSONObject taskForm = new JSONObject();
taskForm.put("task_type", IOSConstant.VEHICLE_OUT_TASK); taskForm.put("task_type", IOSConstant.VEHICLE_OUT_TASK);
taskForm.put("config_code", IOSConstant.VEHICLE_IN_TASK); taskForm.put("config_code", IOSConstant.VEHICLE_OUT_TASK);
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
taskForm.put("PickingLocation", r.getStruct_code()); taskForm.put("PickingLocation", r.getStruct_code());
taskForm.put("PlacedLocation", whereJson.getString("siteCode")); taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
taskForm.put("vehicle_code", r.getStoragevehicle_code()); taskForm.put("vehicle_code", r.getStoragevehicle_code());
VehicleOutTask vehicleOutTask = SpringContextHolder.getBean("VehicleOutTask"); applyTaskMap.get(IOSConstant.VEHICLE_OUT_TASK).create(taskForm);
applyTaskMap.get(IOSConstant.VEHICLE_IN_TASK).create(whereJson);
vehicleOutTask.create(taskForm);
}); });
//更新组盘记录表 //更新组盘记录表
Set<String> vehicleCodeSet = structList.stream() Set<String> vehicleCodeSet = structList.stream()
.map(StrategyStructMaterialVO::getStoragevehicle_code) .map(StructattrVechielDto::getStoragevehicle_code)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
mdPbGroupplateMapper.update( mdPbGroupplateMapper.update(
new GroupPlate(), new GroupPlate(),
@ -306,7 +299,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
); );
//锁定仓位 //锁定仓位
Set<String> structCodeSet = structList.stream() Set<String> structCodeSet = structList.stream()
.map(StrategyStructMaterialVO::getStruct_code) .map(StructattrVechielDto::getStruct_code)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
iStructattrService.update( iStructattrService.update(
new LambdaUpdateWrapper<Structattr>() new LambdaUpdateWrapper<Structattr>()
@ -337,7 +330,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
io_mst.put("stor_name", whereJson.get("store_name")); io_mst.put("stor_name", whereJson.get("store_name"));
io_mst.put("detail_count", 1); io_mst.put("detail_count", 1);
io_mst.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); io_mst.put("bill_status", IOSEnum.BILL_STATUS.code("分配完"));
io_mst.put("create_mode", IOSEnum.CREATE_MODE.code("PC产生")); io_mst.put("create_mode", ObjectUtils.isEmpty(whereJson.get("create_mode")) ? IOSEnum.CREATE_MODE.code("PC产生") : whereJson.get("create_mode"));
io_mst.put("input_optid", currentUserId + ""); io_mst.put("input_optid", currentUserId + "");
io_mst.put("input_optname", nickName); io_mst.put("input_optname", nickName);
io_mst.put("input_time", now); io_mst.put("input_time", now);
@ -358,6 +351,12 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
ioStorInvDtl.put("seq_no", "1"); ioStorInvDtl.put("seq_no", "1");
ioStorInvDtl.put("material_id", whereJson.get("material_id")); ioStorInvDtl.put("material_id", whereJson.get("material_id"));
ioStorInvDtl.put("material_code", whereJson.get("material_code")); ioStorInvDtl.put("material_code", whereJson.get("material_code"));
ioStorInvDtl.put("sect_id", whereJson.get("sect_id"));
ioStorInvDtl.put("sect_code", whereJson.get("sect_code"));
ioStorInvDtl.put("sect_name", whereJson.get("sect_name"));
ioStorInvDtl.put("struct_id", whereJson.get("struct_id"));
ioStorInvDtl.put("struct_code", whereJson.get("struct_code"));
ioStorInvDtl.put("struct_name", whereJson.get("struct_name"));
ioStorInvDtl.put("Pcsn", whereJson.get("pcsn")); ioStorInvDtl.put("Pcsn", whereJson.get("pcsn"));
ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("分配完"));
ioStorInvDtl.put("qty_unit_id", whereJson.get("unit_id")); ioStorInvDtl.put("qty_unit_id", whereJson.get("unit_id"));

7
nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java

@ -23,6 +23,11 @@ public class PdaResponse<T> {
*/ */
private String message; private String message;
/**
* 消息码
*/
private String code;
/** /**
* 返回数据 * 返回数据
*/ */
@ -35,6 +40,7 @@ public class PdaResponse<T> {
public static PdaResponse requestOk() { public static PdaResponse requestOk() {
return PdaResponse.builder() return PdaResponse.builder()
.message("操作成功!") .message("操作成功!")
.code(String.valueOf(HttpStatus.HTTP_OK))
.build(); .build();
} }
@ -45,6 +51,7 @@ public class PdaResponse<T> {
public static <T> PdaResponse requestParamOk(T data) { public static <T> PdaResponse requestParamOk(T data) {
return PdaResponse.builder() return PdaResponse.builder()
.message("操作成功!") .message("操作成功!")
.code(String.valueOf(HttpStatus.HTTP_OK))
.data(data) .data(data)
.build(); .build();
} }

10
nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java

@ -27,12 +27,12 @@ public enum StatusEnum {
/** /**
* 出入库单据类型退货出库 * 出入库单据类型退货出库
*/ */
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10", "inStorageTask", "调拨入库", "11", "inStorageTask", "退货入库", "12", "inStorageTask", "拣选回库", IOBILL_TYPE_IN(ForkMap.of("生产入库", "0001", "inStorageTask", "调拨入库", "0004", "inStorageTask", "退货入库", "0002", "inStorageTask", "拣选回库",
"13", "inStorageTask", "盘点入库", "14", "inStorageTask", "托盘入库", "30", "inStorageTask", "二楼CTU入库", "80", "inStorageTask")), "13", "inStorageTask", "盘点入库", "14", "inStorageTask", "托盘入库", "30", "inStorageTask", "返检入库", "0005", "inStorageTask", "报废入库", "0003", "inStorageTask", "inStorageTask", "手工入库", "0009", "inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "22", "outStorageTask", IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask","发货出库", "1001", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "1004", "outStorageTask",
"拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask", "拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask",
"退货出库", "26", "outStorageTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "inStorageTask", "二楼出库AGV搬运", "退货出库", "26", "outStorageTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "outStorageTask", "返检出库",
"82", "inStorageTask", "二楼空架AGV搬运", "83", "inStorageTask")), "1006", "outStorageTask", "报废出库", "1002", "outStorageTask")),
IOBILL_TYPE_MOVE(ForkMap.of("移库", "50", "moveStorageTask", "异常位移库", "51", "moveStorageTask")), IOBILL_TYPE_MOVE(ForkMap.of("移库", "50", "moveStorageTask", "异常位移库", "51", "moveStorageTask")),

5
nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java

@ -168,12 +168,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Override @Override
public List<SchBasePoint> getPointList(SchBasePoint region) { public List<SchBasePoint> getPointList(SchBasePoint region) {
if (ObjectUtil.isEmpty(region)) {
return this.list();
}
return pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>() return pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, region.getRegion_code()) .eq(SchBasePoint::getRegion_code, region.getRegion_code())
.eq(SchBasePoint::getIs_has_workder, true)); .eq(SchBasePoint::getIs_used, true));
} }
@Override @Override

1
nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java

@ -134,6 +134,7 @@ public class VehicleOutTask extends AbstractTask {
// 任务完成 // 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark("已完成"); taskObj.setRemark("已完成");
taskObj.setHandle_status("1");
taskService.updateById(taskObj); taskService.updateById(taskObj);
outBillService.taskFinish(taskObj); outBillService.taskFinish(taskObj);
} }

12
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java

@ -78,4 +78,16 @@ public class IOSConstant {
*/ */
public final static String VEHICLE_OUT_TASK = "VehicleOutTask"; public final static String VEHICLE_OUT_TASK = "VehicleOutTask";
/**
* 线边仓入库
*/
public final static String XB_IN_TASK = "XbInTask";
/**
* 线边仓出库
*/
public final static String XB_OUT_TASK = "XbOutTask";
} }

3
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml

@ -57,8 +57,9 @@
SELECT SELECT
gro.*, gro.*,
mater.material_id, mater.material_id,
mater.material_name,
mater.material_code, mater.material_code,
mater.material_name mater.material_spec
FROM FROM
md_pb_groupplate gro md_pb_groupplate gro
LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id

45
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
@ -1178,6 +1179,15 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void taskFinish(SchBaseTask task) { public void taskFinish(SchBaseTask task) {
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", task.getPoint_code1());
finish_map.put("storagevehicle_code", null);
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("1", finish_map);
if (StringUtils.isBlank(task.getHandle_status())) {
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
@ -1192,26 +1202,18 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
.eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id()) .eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id())
); );
//解锁库位 //修改库存,恢复库存,手持进行减扣,无需修改,需要载具出库确认后更改
JSONObject finish_map = new JSONObject(); // List<JSONObject> updateIvtList = new ArrayList<>();
finish_map.put("struct_code",ioStorInvDis.getStruct_code()); // JSONObject jsonIvt = new JSONObject();
finish_map.put("storagevehicle_code",null); // jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE);
finish_map.put("inv_type", null); // jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
finish_map.put("inv_id", null); // jsonIvt.put("material_id", ioStorInvDis.getMaterial_id());
finish_map.put("inv_code", null); // jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
iStructattrService.updateStatusByCode("1",finish_map); // jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id());
//修改库存 恢复库存 手持进行减扣 // jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name());
List<JSONObject> updateIvtList = new ArrayList<>(); // jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty());
JSONObject jsonIvt = new JSONObject(); // updateIvtList.add(jsonIvt);
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); // iMdPbGroupPlateService.updateIvt(updateIvtList);
jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
jsonIvt.put("material_id", ioStorInvDis.getMaterial_id());
jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id());
jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name());
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty());
updateIvtList.add(jsonIvt);
iMdPbGroupPlateService.updateIvt(updateIvtList);
// 查询该明细下是否还有未完成的分配明细 // 查询该明细下是否还有未完成的分配明细
int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id()) .eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id())
@ -1245,5 +1247,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
} }
} }
} }
}
} }

26
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java

@ -12,6 +12,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
@ -155,7 +157,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
io_mst.put("detail_count", rows.size()); io_mst.put("detail_count", rows.size());
io_mst.put("remark", whereJson.get("remark")); io_mst.put("remark", whereJson.get("remark"));
io_mst.put("bill_status", whereJson.get("bill_status")); io_mst.put("bill_status", whereJson.get("bill_status"));
io_mst.put("create_mode", IOSEnum.CREATE_MODE.code("PC产生")); io_mst.put("create_mode", ObjectUtils.isEmpty(whereJson.get("create_mode"))?IOSEnum.CREATE_MODE.code("PC产生"):whereJson.get("create_mode"));
io_mst.put("input_optid", currentUserId + ""); io_mst.put("input_optid", currentUserId + "");
io_mst.put("input_optname", nickName); io_mst.put("input_optname", nickName);
io_mst.put("input_time", now); io_mst.put("input_time", now);
@ -658,17 +660,17 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
iStructattrService.updateStatusByCode("1",finish_map); iStructattrService.updateStatusByCode("1",finish_map);
//修改库存 //修改库存
List<JSONObject> updateIvtList = new ArrayList<>(); // List<JSONObject> updateIvtList = new ArrayList<>();
JSONObject jsonIvt = new JSONObject(); // JSONObject jsonIvt = new JSONObject();
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); // jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE);
jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); // jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); // jsonIvt.put("material_id", ioStorInvDis.getMaterial_id());
jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); // jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); // jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id());
jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); // jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name());
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); // jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty());
updateIvtList.add(jsonIvt); // updateIvtList.add(jsonIvt);
iMdPbGroupPlateService.updateIvt(updateIvtList); // iMdPbGroupPlateService.updateIvt(updateIvtList);
// 查询该明细下是否还有未完成的分配明细 // 查询该明细下是否还有未完成的分配明细
int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id()) .eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id())

2
nladmin-ui/README.md

@ -1,3 +1,3 @@
# 欧伦电WMS系统 # 欧伦电WMS系统
/api/sysMenu/build?systemType=1 /api/sysMenu/build?systemType=1
Loading…
Cancel
Save