add:增加手持出库
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
// 查询所有物料
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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,17 +63,28 @@ 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("/confirm")
|
||||
@Log("载具出库确认")
|
||||
public ResponseEntity<Object> outStorageConfirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosOutService.outStorageConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -81,19 +93,11 @@ public class PdaIosOutController {
|
||||
*/
|
||||
@PostMapping("/getVehicleMaterial")
|
||||
@Log("出库确认获取物料明细")
|
||||
public ResponseEntity<InventoryDto> getVehicleMaterial(@RequestBody JSONObject whereJson) {
|
||||
return null;
|
||||
public ResponseEntity<Object> getVehicleMaterial(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosOutService.getVehicleMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 出库确认
|
||||
*/
|
||||
@PostMapping("/confirm")
|
||||
@Log("出库确认")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosOutService.confirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,18 @@ public interface PdaIosOutService {
|
||||
|
||||
|
||||
/**
|
||||
* 出库确认
|
||||
* 出库确认获取物料明细
|
||||
*
|
||||
* @param whereJson {
|
||||
* search: 搜索条件
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getVehicleMaterial(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 线边库物料出库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具码
|
||||
@@ -44,5 +55,16 @@ public interface PdaIosOutService {
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse confirm(JSONObject whereJson);
|
||||
PdaResponse materialConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 载具出库确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具码
|
||||
* point_code: 点位编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse outStorageConfirm(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
* }
|
||||
*/
|
||||
|
||||
@@ -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"));
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@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("当前点位不存在!!");
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
// 获取出入库单明细信息
|
||||
IOStorInvDis disDao = ioStorInvDisMapper.selectById(pointDao.getIos_id());
|
||||
if(ObjectUtil.isEmpty(disDao)) {
|
||||
throw new BadRequestException("未查询到出库单分配明细!");
|
||||
}
|
||||
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectById(disDao.getIostorinvdtl_id());
|
||||
|
||||
// 获取点位库存信息
|
||||
JSONObject jsonIvt = mdPbStoragevehicleextMapper.getIosDtl(whereJson).get(0);
|
||||
if (ObjectUtil.isEmpty(jsonIvt)) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user