Browse Source

add:增加手持出库

feature/forewarning_management
龚宝雄 1 month ago
parent
commit
96d188ecfd
  1. 74
      nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java
  2. 15
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java
  3. 71
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml
  4. 33
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/MaterialQuery.java
  5. 14
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/BsrealStorattrServiceImpl.java
  6. 8
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java
  7. 2
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java
  8. 8
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/ErpToWmsServiceImpl.java
  9. 9
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java
  10. 38
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java
  11. 9
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java
  12. 26
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosOutService.java
  13. 139
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java
  14. 160
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java
  15. 12
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java
  16. 12
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java
  17. 23
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/GroupPlateMapper.java
  18. 30
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/GroupPlateMapper.xml
  19. 6
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.java
  20. 27
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml
  21. 15
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java
  22. 41
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java

74
nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java

@ -3,34 +3,80 @@ package org.nl.common.enums;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.LConsumer;
import org.apache.poi.ss.formula.functions.T;
import org.nl.common.domain.interfaces.LConsumer;
import java.util.Collection;
/**
* s
*
* @author ZZQ
* @Date 2022/12/14 8:26 下午
*/
@Getter
public enum QueryTEnum {
//
EQ((q, k, v) -> { q.eq(k[0],v); }),
IN((q, key, o) -> { if (o instanceof Collection){ q.in(key[0],(Collection) o); } }),
LK((q, keys, o) -> { for (String key : keys) { q.like(key,o); } }),
LE((q, k, v) -> { q.le(k[0],v); }),
BY((q, k, v) -> { q.orderByDesc(k[0],v); }),
NO((q, k, v) -> { q.isNull(k[0]); }),
LT((q, k, v) -> { q.lt(k[0],v); }),
OREQ((q, k, v) -> { if (StringUtils.isBlank((String)v)){ q.isNull(k[0]); }else { q.eq(k[0],v); } });
EQ((q, k, v) -> {
q.eq(k[0], v);
}),
IN((q, key, o) -> {
if (o instanceof Collection) {
q.in(key[0], (Collection) o);
}
}),
LK((q, keys, o) -> {
for (String key : keys) {
q.like(key, o);
}
}),
ORLK((q, k, o) -> {
q.and(query -> {
QueryWrapper queryWrapper = (QueryWrapper) query;
for (int i = 0; i < k.length; i++) {
queryWrapper.like(k[i], o);
if (i != (k.length - 1)) {
queryWrapper.or();
}
}
});
}),
LE((q, k, v) -> {
q.le(k[0], v);
}),
GE((q, k, v) -> {
q.ge(k[0], v);
}),
BY((q, k, v) -> {
q.orderByDesc(k[0], String.valueOf(v));
}),
NO((q, k, v) -> {
q.isNull(k[0]);
}),
NULL_OR_EMPTY((queryWrapper, k, v) -> {
queryWrapper.nested(a -> a.isNull(k[0]).or().eq(k[0], ""));
}),
LT((q, k, v) -> {
q.lt(k[0], v);
}),
GT((q, k, v) -> {
q.gt(k[0], v);
}),
OREQ((q, k, v) -> {
if (StringUtils.isBlank((String) v)) {
q.isNull(k[0]);
} else {
q.eq(k[0], v);
}
});
private LConsumer<QueryWrapper,String[], Object> doP;
private org.nl.common.domain.interfaces.LConsumer<QueryWrapper<T>, String[], Object> doP;
QueryTEnum(LConsumer<QueryWrapper,String[], Object> doP) {
QueryTEnum(LConsumer<QueryWrapper<T>, String[], Object> doP) {
this.doP = doP;
}
public static void build(QueryTEnum type, QueryWrapper q, String[] k , Object v){
type.getDoP().accept(q,k,v);
public static void build(QueryTEnum type, QueryWrapper q, String[] k, Object v) {
type.getDoP().accept(q, k, v);
}
}
}

15
nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java

@ -10,7 +10,7 @@ import java.math.BigDecimal;
* @Date 2023/5/4 19:49
*/
@Data
public class StructattrVechielDto extends MdPbStoragevehicleext {
public class StructattrVechielDto extends GroupPlate {
private static final long serialVersionUID = 1L;
/**
@ -177,4 +177,17 @@ public class StructattrVechielDto extends MdPbStoragevehicleext {
private String font_direction_scode;
/**
* 物料编码
*/
private String material_code;
/**
* 物料名称
*/
private String material_name;
}

71
nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml

@ -3,34 +3,53 @@
<mapper namespace="org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper">
<select id="collectVehicle" resultType="org.nl.wms.basedata_manage.service.dao.StructattrVechielDto">
SELECT
vm.canuse_qty,
vm.frozen_qty,
vm.update_time,
vm.material_id,
vm.pcsn,
vm.storagevehicleext_id AS vm_id,
gro.qty,
gro.frozen_qty,
gro.create_time,
gro.qty_unit_name,
gro.material_id,
gro.pcsn,
gro.group_id,
mater.material_code,
mater.material_name,
ivt.*
FROM
st_ivt_structattr ivt
LEFT JOIN md_pb_storagevehicleext vm ON ivt.storagevehicle_code = vm.storagevehicle_code
WHERE
vm.material_id = #{material_id}
<if test="pcsn != null and pcsn != ''">
AND vm.pcsn = #{pcsn}
</if>
AND ivt.stor_code = #{stor_code}
<if test="vehicles != null and vehicles.size() > 0">
AND ivt.storagevehicle_code in
<foreach collection="vehicles" item="value" index="key" open="(" close=")" separator=",">
#{value}
</foreach>
</if>
<if test="is_lock != null and is_lock != ''">
and ivt.lock_type = '00'
and vm.frozen_qty = 0
</if>
<if test="order_by != null and order_by != ''">
order by ${order_by}
</if>
LEFT 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>
<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="material_id != null and material_id != ''">
AND gro.material_id = #{material_id}
</if>
<if test="pcsn != null and pcsn != ''">
AND gro.pcsn = #{pcsn}
</if>
<if test="stor_code != null and stor_code != ''">
AND ivt.stor_code = #{stor_code}
</if>
<if test="sect_code != null and sect_code != ''">
AND ivt.sect_code = #{sect_code}
</if>
<if test="vehicles != null and vehicles.size() > 0">
AND ivt.storagevehicle_code in
<foreach collection="vehicles" item="value" index="key" open="(" close=")" separator=",">
#{value}
</foreach>
</if>
<if test="is_lock != null and is_lock != ''">
and ivt.lock_type = '00'
and gro.frozen_qty = 0
</if>
<if test="order_by != null and order_by != ''">
order by ${order_by}
</if>
</where>
</select>
</mapper>

33
nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/MaterialQuery.java

@ -0,0 +1,33 @@
package org.nl.wms.basedata_manage.service.dto;
import lombok.Data;
import org.nl.common.domain.query.BaseQuery;
import org.nl.common.domain.query.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
/* *
*物料查询对象
* @author ZZQ
* @Date 2023/5/4 19:49
*/
@Data
public class MaterialQuery extends BaseQuery<MdMeMaterialbase> {
/**
* 物料编码名称
*/
private String search;
/**
* 物料类型
*/
private String material_type_id;
@Override
public void paramMapping() {
super.doP.put("search", QParam.builder().k(new String[]{"material_code","material_name"}).type(QueryTEnum.ORLK).build());
super.doP.put("material_type_id", QParam.builder().k(new String[]{"material_type_id"}).type(QueryTEnum.EQ).build());
}
}

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

@ -82,24 +82,15 @@ public class BsrealStorattrServiceImpl extends ServiceImpl<BsrealStorattrMapper,
@Override
public BsrealStorattr findByCode(String code) {
LambdaQueryWrapper<BsrealStorattr> queryWrapper = new LambdaQueryWrapper<>(BsrealStorattr.class)
.eq(BsrealStorattr::getStor_code, code)
.eq(BsrealStorattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"));
BsrealStorattr bsrealStorattr = bsrealStorattrMapper.selectOne(queryWrapper);
if (ObjectUtil.isEmpty(bsrealStorattr)) {
throw new BadRequestException("仓库编码为【"+code+"】不存在!");
}
return bsrealStorattr;
return bsrealStorattrMapper.selectOne(queryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(BsrealStorattr dto) {
BsrealStorattr bsrealStorattr = this.findByCode(dto.getStor_code());
if (ObjectUtil.isNotEmpty(bsrealStorattr) && BaseDataEnum.IS_YES_NOT.code("否").equals(bsrealStorattr.getIs_delete())) {
throw new BadRequestException("存在相同的仓库编号");
@ -107,7 +98,6 @@ public class BsrealStorattrServiceImpl extends ServiceImpl<BsrealStorattrMapper,
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
dto.setStor_id(IdUtil.getStringId());
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
@ -115,12 +105,10 @@ public class BsrealStorattrServiceImpl extends ServiceImpl<BsrealStorattrMapper,
dto.setUpdate_optname(nickName);
dto.setUpdate_time(now);
dto.setCreate_time(now);
//TODO
dto.setSyscompanyid(9L);
dto.setSysdeptid(9L);
dto.setSysownerid(9L);
bsrealStorattrMapper.insert(dto);
}

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

@ -316,11 +316,13 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
return one;
}
/**
* 库存查询
*/
@Override
public List<StructattrVechielDto> collectVechicle(Map query) {
List<StructattrVechielDto> collectVehicle = this.baseMapper.collectVehicle(query);
return collectVehicle;
return this.baseMapper.collectVehicle(query);
}

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

@ -69,7 +69,7 @@ public class FIFORuleHandler extends Decisioner<StructattrVechielDto, JSONObject
for (Map.Entry<String, List<StructattrVechielDto>> entry : sortedGroupMap.entrySet()) {
List<StructattrVechielDto> sortedList = new ArrayList<>(entry.getValue());
for (StructattrVechielDto structattr : sortedList) {
BigDecimal qty = structattr.getCanuse_qty() != null ? structattr.getCanuse_qty() : BigDecimal.ZERO;
BigDecimal qty = structattr.getXqty() != null ? structattr.getQty() : BigDecimal.ZERO;
BigDecimal frozen = structattr.getFrozen_qty() != null ? structattr.getFrozen_qty() : BigDecimal.ZERO;
int available = qty.subtract(frozen).intValue();
if (available <= 0) {

8
nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/ErpToWmsServiceImpl.java

@ -5,6 +5,7 @@ import cn.hutool.json.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
@ -19,7 +20,6 @@ import org.nl.wms.warehouse_management.service.IOutBillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@ -83,11 +83,13 @@ public class ErpToWmsServiceImpl implements ErpToWmsService {
jsonMst.put("source_id", whereJson.getString("inv_code"));
jsonMst.put("source_type", whereJson.getString("task_type"));
jsonMst.put("bill_type", whereJson.getString("task_type"));
jsonMst.put("user","erp");
jsonMst.put("user", "erp");
// 查询仓库
BsrealStorattr storDao = iBsrealStorattrService.findByCode(whereJson.getString("stor_code"));
if (storDao == null) {
throw new BadRequestException("仓库不存在");
}
jsonMst.put("stor_id", storDao.getStor_id());
// 组织明细
List<JSONObject> dataList = whereJson.getJSONArray("data").toJavaList(JSONObject.class);
// 查询所有物料

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

@ -2,12 +2,12 @@ package org.nl.wms.pda.ios_manage.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.base.TableDataInfo;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.pda.ios_manage.service.PdaIosInService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@ -73,7 +73,7 @@ public class PdaIosInController {
*/
@PostMapping("/getMaterialList")
@Log("获取物料列表")
public ResponseEntity<Object> getMaterialList(@RequestBody JSONObject whereJson) {
public ResponseEntity<TableDataInfo<MdMeMaterialbase>> getMaterialList(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosInService.getMaterialList(whereJson), HttpStatus.OK);
}
@ -91,6 +91,7 @@ public class PdaIosInController {
@PostMapping("/confirmIn")
@Log("组盘入库确认")
public ResponseEntity<Object> confirmIn(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "vehicle_code", "sect_id");
return new ResponseEntity<>(pdaIosInService.confirmIn(whereJson), HttpStatus.OK);
}
@ -109,7 +110,7 @@ public class PdaIosInController {
@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);
}
}

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

@ -10,7 +10,6 @@ import org.nl.common.base.TableDataInfo;
import org.nl.common.exception.BadRequestException;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.pda.ios_manage.service.PdaIosOutService;
import org.nl.wms.pda.ios_manage.service.dto.InventoryDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -19,6 +18,8 @@ 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;
/**
* 手持出库管理
*
@ -47,8 +48,8 @@ public class PdaIosOutController {
*/
@PostMapping("/getMaterialDtl")
@Log("物料出库获取物料库存")
public ResponseEntity<InventoryDto> getMaterialDtl(@RequestBody JSONObject whereJson) {
return null;
public ResponseEntity<Object> getMaterialDtl(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosOutService.getMaterialDtl(whereJson), HttpStatus.OK);
}
@ -62,42 +63,45 @@ public class PdaIosOutController {
throw new BadRequestException("请求参数不能为空");
}
// pdaIosOutService.bindOrUnbind(param.getString("siteCode"), param.getString("shelfCode"), param.getString("mode"));
return new ResponseEntity<>(pdaIosOutService.confirm(param), HttpStatus.OK);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 物料出库确认
* 线边库物料出库确认
*/
@PostMapping("/materialConfirm")
@Log("物料出库确认")
@Log("线边库物料出库确认")
public ResponseEntity<Object> materialConfirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosOutService.confirm(whereJson), HttpStatus.OK);
assertNotBlankJson(whereJson, "请求参数不能为空", "group_id", "storagevehicle_code", "siteCode", "struct_code");
return new ResponseEntity<>(pdaIosOutService.materialConfirm(whereJson), HttpStatus.OK);
}
/**
* 出库确认获取物料明细
* 载具出库确认
*/
@PostMapping("/getVehicleMaterial")
@Log("出库确认获取物料明细")
public ResponseEntity<InventoryDto> getVehicleMaterial(@RequestBody JSONObject whereJson) {
return null;
@PostMapping("/confirm")
@Log("载具出库确认")
public ResponseEntity<Object> outStorageConfirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosOutService.outStorageConfirm(whereJson), HttpStatus.OK);
}
/**
* 出库确认
* 出库确认获取物料明细
*/
@PostMapping("/confirm")
@Log("出库确认")
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosOutService.confirm(whereJson), HttpStatus.OK);
@PostMapping("/getVehicleMaterial")
@Log("出库确认获取物料明细")
public ResponseEntity<Object> getVehicleMaterial(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosOutService.getVehicleMaterial(whereJson), HttpStatus.OK);
}
/**
* 转运确认
*/

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

@ -1,7 +1,10 @@
package org.nl.wms.pda.ios_manage.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.base.TableDataInfo;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.pda.util.PdaResponse;
import org.springframework.http.ResponseEntity;
/**
* <p>
@ -60,7 +63,7 @@ public interface PdaIosInService {
*
* @return PdaResponse
*/
PdaResponse getMaterialList(JSONObject whereJson);
TableDataInfo<MdMeMaterialbase> getMaterialList(JSONObject whereJson);
/**
* 查询物料列表
@ -84,7 +87,7 @@ public interface PdaIosInService {
*
* @param whereJson {
* vehicle_code载具编码
* sect_id库区
* sect_code库区
* }
* @return PdaResponse
*/
@ -106,7 +109,7 @@ public interface PdaIosInService {
*
* @param whereJson {
* vehicle_code载具编码
* sect_id库区
* sect_code库区
* }
* @return PdaResponse
*/

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

@ -36,7 +36,29 @@ public interface PdaIosOutService {
/**
* 出库确认
* 出库确认获取物料明细
*
* @param whereJson {
* search 搜索条件
* }
* @return PdaResponse
*/
PdaResponse getVehicleMaterial(JSONObject whereJson);
/**
* 线边库物料出库确认
*
* @param whereJson {
* storagevehicle_code 载具码
* point_code 点位编码
* }
* @return PdaResponse
*/
PdaResponse materialConfirm(JSONObject whereJson);
/**
* 载具出库确认
*
* @param whereJson {
* storagevehicle_code 载具码
@ -44,5 +66,5 @@ public interface PdaIosOutService {
* }
* @return PdaResponse
*/
PdaResponse confirm(JSONObject whereJson);
PdaResponse outStorageConfirm(JSONObject whereJson);
}

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

@ -7,31 +7,35 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.base.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.*;
import org.nl.wms.basedata_manage.service.dao.*;
import org.nl.wms.basedata_manage.service.dto.MaterialQuery;
import org.nl.wms.pda.ios_manage.service.PdaIosInService;
import org.nl.wms.pda.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.tasks.BackInTask;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -107,15 +111,17 @@ public class PdaIosInServiceImpl implements PdaIosInService {
*/
@Autowired
private IRawAssistIStorService iRawAssistIStorService;
/**
* 回库任务类
*/
@Autowired
private BackInTask backInTask;
/**
* 入库明细服务
*/
@Autowired
private IOStorInvDtlMapper ioStorInvDtlMapper;
@Autowired
private GroupPlateMapper groupPlateMapper;
@Override
@Transactional
@ -133,16 +139,23 @@ public class PdaIosInServiceImpl implements PdaIosInService {
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao)) {
throw new BadRequestException("载具,物料或单位信息有误!");
}
RedissonUtils.lock(() -> {
//判断该载具编号是否已经存在库内
long count = iStructattrService.count(
new LambdaQueryWrapper<Structattr>()
.eq(Structattr::getStoragevehicle_code, vehicleDao.getStoragevehicle_code())
);
if (count > 0) {
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在库内,请对数据进行核实!");
}
}, StatusEnum.STRATEGY_TYPE.code("入库") + vehicleDao.getStoragevehicle_code(), 5);
//判断该载具是否存在组盘信息
long statusCount = iMdPbGroupplateService.count(
new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, vehicleDao.getStoragevehicle_code())
.lt(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库"))
);
if (statusCount > 0) {
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在组盘信息,请对数据进行核实!");
}
//判断该载具编号是否已经存在库内
long count = iStructattrService.count(
new LambdaQueryWrapper<Structattr>()
.eq(Structattr::getStoragevehicle_code, vehicleDao.getStoragevehicle_code())
);
if (count > 0) {
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在库内,请对数据进行核实!");
}
GroupPlate groupDao = GroupPlate.builder()
.group_id(IdUtil.getStringId())
.material_id(materDao.getMaterial_code())
@ -185,38 +198,24 @@ public class PdaIosInServiceImpl implements PdaIosInService {
}
@Override
public PdaResponse getMaterialList(JSONObject whereJson) {
public TableDataInfo<MdMeMaterialbase> getMaterialList(JSONObject whereJson) {
PageQuery pageQuery = new PageQuery();
pageQuery.setPage(whereJson.getInteger("page") - 1);
pageQuery.setSize(whereJson.getInteger("size"));
String search = whereJson.getString("search");
LambdaQueryWrapper<MdMeMaterialbase> wrapper = new QueryWrapper<MdMeMaterialbase>().lambda();
if (StringUtils.isNotBlank(search)) {
wrapper.nested(r -> r
.like(MdMeMaterialbase::getMaterial_code, search)
.or()
.like(MdMeMaterialbase::getMaterial_name, search)
.or()
.like(MdMeMaterialbase::getMaterial_spec, search)
);
MaterialQuery materialQuery = new MaterialQuery();
if (StringUtils.isNotBlank(whereJson.getString("search"))) {
materialQuery.setSearch(whereJson.getString("search").trim().toUpperCase());
}
wrapper.eq(MdMeMaterialbase::getIs_delete, IOSConstant.IS_DELETE_NO)
.eq(MdMeMaterialbase::getIs_used, IOSConstant.IS_DELETE_YES)
.select(
MdMeMaterialbase::getMaterial_id,
MdMeMaterialbase::getMaterial_code,
MdMeMaterialbase::getMaterial_name,
MdMeMaterialbase::getMaterial_model,
MdMeMaterialbase::getMaterial_spec,
MdMeMaterialbase::getBase_unit_id
)
.last("LIMIT 100");
List<MdMeMaterialbase> materialist = iMdMeMaterialbaseService.list(wrapper);
return PdaResponse.requestParamOk(materialist);
Page mapPage = iMdMeMaterialbaseService.pageMaps(pageQuery.build(), materialQuery.build());
return PdaResponse.build(mapPage);
}
@Override
public PdaResponse getVehicleMaterial(JSONObject whereJson) {
whereJson.put("status", GROUP_PLATE_STATUS.code("组盘"));
whereJson.put("vehicleCode", whereJson.getString("search"));
return PdaResponse.requestParamOk(groupPlateMapper.getVehicleMaterial(whereJson));
return PdaResponse.requestParamOk(mdPbGroupplateMapper.getVehicleMaterial(whereJson));
}
/**
@ -232,13 +231,17 @@ public class PdaIosInServiceImpl implements PdaIosInService {
whereJson.put("status", GROUP_PLATE_STATUS.code("出库"));
whereJson.put("vehicleCode", whereJson.getString("search"));
whereJson.put("qty", 0);
return PdaResponse.requestParamOk(groupPlateMapper.getVehicleMaterial(whereJson));
List<JSONObject> list = mdPbGroupplateMapper.getVehicleMaterial(whereJson);
if (CollectionUtils.isEmpty(list)) {
throw new BadRequestException("此载具无余料可回库!");
}
return PdaResponse.requestParamOk(list);
}
@Override
public PdaResponse getSect() {
PageQuery page = new PageQuery();
page.setSize(100);
page.setSize(20);
page.setPage(0);
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), page);
List<SectattrDto> result = sectList.getRecords();
@ -253,7 +256,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
*
* @param whereJson {
* vehicle_code载具编码
* sect_id库区
* sect_code库区
* }
* @return PdaResponse
*/
@ -262,9 +265,46 @@ public class PdaIosInServiceImpl implements PdaIosInService {
public PdaResponse confirmReturnMaterial(JSONObject whereJson) {
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
if (ObjectUtil.isEmpty(vehicleDao)) {
throw new BadRequestException("没有该载具号信息");
throw new BadRequestException("不存在该载具号信息,请检查");
}
// 查询仓库
BsrealStorattr storeDao = iSrealStorattrService.getById(whereJson.getString("stor_id"));
if (ObjectUtil.isEmpty(storeDao)) {
throw new BadRequestException("该库区未找到对应仓库信息,请检查");
}
//分配仓位
JSONObject params = new JSONObject();
params.put("storagevehicle_code", vehicleDao.getStoragevehicle_code());
params.put("ioType", StatusEnum.STRATEGY_TYPE.code("入库"));
params.put("sect_code", whereJson.getString("sect_code"));
params.put("stor_code", storeDao.getStor_code());
params.put("material_code", whereJson.getString("material_code"));
params.put("qty", whereJson.getString("qty"));
params.put("pcsn", whereJson.getString("pcsn"));
Structattr attrDao = iRawAssistIStorService.divBackStruct(params);
//获取起点
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.BACK_IN_TASK);
task.put("point_code1", schBasePoint.getPoint_code());
task.put("point_code2", attrDao.getStruct_code());
task.put("vehicle_code", whereJson.getString("vehicle_code"));
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
String task_id = backInTask.create(task);
// 更新终点锁定状态
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
attrDao.setTaskdtl_id(task_id);
iStructattrService.updateById(attrDao);
// 更新起点绑定id
iSchBasePointService.update(
new UpdateWrapper<SchBasePoint>().lambda()
.set(SchBasePoint::getIos_id, null)
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
);
return PdaResponse.requestOk();
}
@ -272,12 +312,9 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Override
@Transactional
public PdaResponse confirmIn(JSONObject whereJson) {
//校验起点
//获取起点
SchBasePoint schBasePoint = iSchBasePointService
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
if (schBasePoint == null) {
throw new BadRequestException("载具编码:" + whereJson.getString("vehicle_code") + "未绑定站点信息,请检查!");
}
whereJson.put("point_code", schBasePoint.getPoint_code());
// 预组织出入库单据实体
Map<String, Object> jsonMst = organizeInsertData(whereJson);
@ -298,7 +335,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
* @param whereJson {
* storagevehicle_code载具编码
* point_code点位编码
* sect_id库区
* sect_code库区
* }
* @return Map<String, Object>
*/
@ -358,7 +395,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
private Map<String, Object> organizeDivData(JSONObject whereJson) {
// 查询库区
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id"));
// 查询库
// 查询
BsrealStorattr storeDao = iSrealStorattrService.getById(sectDao.getStor_id());
// 组织主数据
Map<String, Object> jsonMst = new HashMap<>();
@ -391,7 +428,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
* @param whereJson {
* storagevehicle_code载具编码
* point_code点位编码
* sect_id库区
* sect_code库区
* iostorinv_id: id
* }
*/

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

@ -1,32 +1,36 @@
package org.nl.wms.pda.ios_manage.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.MapOf;
import org.nl.config.SpringContextHolder;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
import org.nl.wms.pda.ios_manage.service.PdaIosOutService;
import org.nl.wms.pda.util.PdaResponse;
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.tasks.BackInTask;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
import static org.nl.wms.warehouse_management.enums.IOSEnum.GROUP_PLATE_STATUS;
/**
* <p>
@ -38,6 +42,12 @@ import java.math.BigDecimal;
*/
@Service
public class PdaIosOutServiceImpl implements PdaIosOutService {
/**
* 组盘记录mapper
*/
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
/**
* 载具扩展属性服务
@ -76,10 +86,10 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
private UpdateIvtUtils updateIvtUtils;
/**
* 库任务类
* 库任务类
*/
@Autowired
private BackInTask backInTask;
private StOutTask stOutTask;
/**
* 入库服务服务
@ -87,6 +97,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Autowired
private IRawAssistIStorService iRawAssistIStorService;
@Override
public PdaResponse getDtl(JSONObject whereJson) {
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson));
@ -95,87 +106,72 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Override
public PdaResponse getMaterialDtl(JSONObject whereJson) {
return null;
List<StructattrVechielDto> list = iStructattrService.collectVechicle(
MapOf.of("search", whereJson.getString("search"),
"stor_code", "XB01",
"status", GROUP_PLATE_STATUS.code("入库"),
"is_lock", "false",
"order_by", "gro.create_time asc"));
return PdaResponse.requestParamOk(list);
}
@Override
public PdaResponse getVehicleMaterial(JSONObject whereJson) {
whereJson.put("status", GROUP_PLATE_STATUS.code("出库"));
whereJson.put("vehicleCode", whereJson.getString("search"));
whereJson.put("qty", 0);
return PdaResponse.requestParamOk(mdPbGroupplateMapper.getVehicleMaterial(whereJson));
}
@Override
@Transactional
public PdaResponse confirm(JSONObject whereJson) {
// 获取点位信息
SchBasePoint pointDao = iSchBasePointService.getById(whereJson.getString("point_code"));
if (ObjectUtil.isEmpty(pointDao)) {
throw new BadRequestException("当前点位不存在!!");
}
// 获取出入库单明细信息
IOStorInvDis disDao = ioStorInvDisMapper.selectById(pointDao.getIos_id());
if(ObjectUtil.isEmpty(disDao)) {
throw new BadRequestException("未查询到出库单分配明细!");
}
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectById(disDao.getIostorinvdtl_id());
public PdaResponse materialConfirm(JSONObject whereJson) {
//锁定货位
JSONObject lock_map = new JSONObject();
lock_map.put("struct_code", whereJson.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"));
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
stOutTask.create(taskForm);
iStructattrService.updateStatusByCode("0", lock_map);
//更新组盘记录表
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"))
);
return PdaResponse.requestOk();
}
// 获取点位库存信息
JSONObject jsonIvt = mdPbStoragevehicleextMapper.getIosDtl(whereJson).get(0);
if (ObjectUtil.isEmpty(jsonIvt)) {
throw new BadRequestException("当前点位没有库存信息!");
@Override
@Transactional
public PdaResponse outStorageConfirm(JSONObject whereJson) {
//获取终点
SchBasePoint pointDao = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("storagevehicle_code")));
if (ObjectUtil.isEmpty(pointDao)) {
throw new BadRequestException("未找到载具所在的点位信息,请检查");
}
// 判断是否整出
double plan_qty = dtlDao.getPlan_qty().doubleValue();
double real_qty = NumberUtil.add(dtlDao.getReal_qty(), jsonIvt.getDoubleValue("qty")).doubleValue();
if (plan_qty >= real_qty) {
// ------整出------
// 删除当前库存记录
mdPbStoragevehicleextMapper.deleteById(jsonIvt.getString("storagevehicleext_id"));
// 释放点位
iSchBasePointService.unLockPoint(pointDao.getPoint_code());
// 更新明细实际出库重量
dtlDao.setReal_qty(BigDecimal.valueOf(real_qty));
ioStorInvDtlMapper.updateById(dtlDao);
// 更新分配明细实际出库数量
disDao.setReal_qty(jsonIvt.getBigDecimal("qty"));
ioStorInvDisMapper.updateById(disDao);
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 {
// ------剩余回库------
// 更新库存 :变动数量 = 减可用(库存数量-(实际出库数量-计划数量))
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_CANUSE_IVT);
BigDecimal change_qty = NumberUtil.sub(jsonIvt.getBigDecimal("qty"), NumberUtil.sub(real_qty, plan_qty));
jsonIvt.put("change_qty", change_qty);
jsonIvt.put("remark", "剩余回库");
updateIvtUtils.updateIvt(jsonIvt);
// 更新明细实际出库重量(明细计划数量)
dtlDao.setReal_qty(BigDecimal.valueOf(plan_qty));
ioStorInvDtlMapper.updateById(dtlDao);
// 更新分配明细实际出库重量 = 变动数量
disDao.setReal_qty(change_qty);
ioStorInvDisMapper.updateById(disDao);
// 查找入库货位
JSONObject paramPoint = new JSONObject();
paramPoint.put("sect_id", disDao.getSect_id());
paramPoint.put("storagevehicle_code", jsonIvt.getString("storagevehicle_code"));
Structattr attrDao = iRawAssistIStorService.autoDis(paramPoint);
// 生成回库任务
JSONObject task = new JSONObject();
task.put("config_code", IOSConstant.BACK_IN_TASK);
task.put("point_code1", pointDao.getPoint_code());
task.put("point_code2", attrDao.getStruct_code());
task.put("vehicle_code", jsonIvt.getString("storagevehicle_code"));
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
String task_id = backInTask.create(task);
// 更新终点锁定状态
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
attrDao.setTaskdtl_id(task_id);
iStructattrService.updateById(attrDao);
// 更新起点绑定id
iSchBasePointService.update(
new UpdateWrapper<SchBasePoint>().lambda()
.set(SchBasePoint::getIos_id, null)
.eq(SchBasePoint::getPoint_code, pointDao.getPoint_code())
);
updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0);
}
updateWrapper.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")).eq(GroupPlate::getGroup_id, whereJson.getString("group_id"));
// 释放点位
// iSchBasePointService.unLockPoint(pointDao.getPoint_code());
return PdaResponse.requestOk();
}
}

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

@ -1,7 +1,10 @@
package org.nl.wms.pda.util;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Builder;
import lombok.Data;
import org.nl.common.base.TableDataInfo;
/**
* <p>
@ -46,5 +49,14 @@ public class PdaResponse<T> {
.build();
}
public static <T> TableDataInfo<T> build(IPage<T> page) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(String.valueOf(HttpStatus.HTTP_OK));
rspData.setMsg("查询成功");
rspData.setContent(page.getRecords());
rspData.setTotalElements(page.getTotal());
return rspData;
}
}

12
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java

@ -1,6 +1,5 @@
package org.nl.wms.warehouse_management.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@ -11,7 +10,6 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
@ -42,6 +40,16 @@ public interface IRawAssistIStorService extends IService<IOStorInv> {
void divStruct(JSONObject whereJson);
/**
* 根据库区策略获取仓位
* storagevehicle_code 载具号
* ioType 出入库类型
* sect_code 库区编码
* stor_code 仓库编码
* material_code 物料编码
* qty 计划数量
* pcsn 批次号
*/
Structattr divBackStruct(JSONObject whereJson);
void unDivStruct(Map whereJson);

23
nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/GroupPlateMapper.java

@ -1,23 +0,0 @@
package org.nl.wms.warehouse_management.service.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import java.util.List;
import java.util.Map;
/**
* @author dsh
* 2025/5/21
*/
@Mapper
public interface GroupPlateMapper extends BaseMapper<GroupPlate> {
//查询载具物料信息
List<JSONObject> getVehicleMaterial(@Param("params") Map whereJson);
}

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

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper">
<select id="getVehicleMaterial" resultType="com.alibaba.fastjson.JSONObject">
SELECT
gro.*,
mater.material_id,
mater.material_code,
mater.material_name
FROM
md_pb_groupplate gro
LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id
<where>
1 = 1
<if test="params.vehicleCode != null and params.vehicleCode != ''">
AND
gro.storagevehicle_code = #{params.vehicleCode}
</if>
<if test="params.status != null and params.status != ''">
AND
gro.status = #{params.status}
</if>
<if test="params.qty != null and params.qty != ''">
AND
gro.qty>0
</if>
</where>
ORDER BY gro.create_time Desc
</select>
</mapper>

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

@ -35,4 +35,10 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
* @return IPage<StIvtMoveinv>
*/
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
//查询载具物料信息
List<JSONObject> getVehicleMaterial(@Param("params") Map whereJson);
}

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

@ -52,4 +52,31 @@
</where>
ORDER BY late.create_time Desc
</select>
<select id="getVehicleMaterial" resultType="com.alibaba.fastjson.JSONObject">
SELECT
gro.*,
mater.material_id,
mater.material_code,
mater.material_name
FROM
md_pb_groupplate gro
LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id
<where>
1 = 1
<if test="params.vehicleCode != null and params.vehicleCode != ''">
AND
gro.storagevehicle_code = #{params.vehicleCode}
</if>
<if test="params.status != null and params.status != ''">
AND
gro.status = #{params.status}
</if>
<if test="params.qty != null and params.qty != ''">
AND
gro.qty>0
</if>
</where>
ORDER BY gro.create_time Desc
</select>
</mapper>

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

@ -42,10 +42,10 @@ import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
import org.springframework.beans.factory.annotation.Autowired;
@ -75,7 +75,11 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Resource
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService;
/**
* 组盘记录mapper
*/
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
/**
* 载具扩展属性mapper
*/
@ -94,8 +98,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Resource
private IOStorInvDtlMapper ioStorInvDtlMapper;
@Resource
private GroupPlateMapper groupPlateMapper;
@Resource
private SchBasePointMapper schBasePointMapper;
@ -1134,7 +1137,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
dtlSet.add(ioStorInvDis.getIostorinvdtl_id());
//更新组盘记录表
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
mdPbGroupplateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
@ -1218,7 +1221,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
);
//更新组盘记录表
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
mdPbGroupplateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())

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

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
@ -46,7 +47,6 @@ import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -428,9 +428,34 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
ioStorInvMapper.updateById(ios);
}
/**
* 根据库区策略获取仓位
* storagevehicle_code 载具号
* ioType 出入库类型
* sect_code 库区编码
* stor_code 仓库编码
* material_code 物料编码
* qty 计划数量
* pcsn 批次号
*/
@Override
public Structattr divBackStruct(JSONObject whereJson) {
return null;
Structattr structattr = getStructattr(whereJson);
//锁定货位
JSONObject lock_map = new JSONObject();
lock_map.put("struct_code", structattr.getStruct_code());
lock_map.put("inv_id", null);
lock_map.put("inv_code", null);
lock_map.put("inv_type", null);
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
iStructattrService.updateStatusByCode("0", lock_map);
//更新组盘表状态
mdPbGroupplateService.update(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 structattr;
}
@ -440,7 +465,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
* sect_code 库区编码
* stor_code 仓库编码
* material_code 物料编码
* plan_qty 计划数量
* qty 计划数量
* pcsn 批次号
*/
public Structattr getStructattr(JSONObject param) {
@ -534,14 +559,14 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STInTask");
task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE"));
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("PickingLocation", point_code);
task_form.put("PlacedLocation", ioStorInvDis.getStruct_code());
task_form.put("vehicle_code", map.get("storagevehicle_code"));
// GroupPlate groupPlate = groupPlateMapper.selectOne(new LambdaQueryWrapper<>(GroupPlate.class)
// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code"))
// );
// task_form.put("group_id", groupPlate.getGroup_id());
// GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<>(GroupPlate.class)
// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code"))
// );
// task_form.put("group_id", groupPlate.getGroup_id());
StInTask stInTask = SpringContextHolder.getBean("STInTask");
String task_id = stInTask.create(task_form);

Loading…
Cancel
Save