add:手持增加收货入库、直接出库
This commit is contained in:
@@ -102,4 +102,13 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper<MdPbStoragevehic
|
||||
* @return IPage<JSONObject>
|
||||
*/
|
||||
IPage<JSONObject> getCanuseIvtQtyAsc(Page<JSONObject> page, @Param("param") Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据袋码查询库存信息(手持 - 直接出库 - 扫码插入)
|
||||
* @param param {
|
||||
* bag_code: 袋码
|
||||
* }
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject queryBagIvt(@Param("param") JSONObject param);
|
||||
}
|
||||
|
||||
@@ -421,4 +421,46 @@
|
||||
</where>
|
||||
ORDER BY ext.canuse_qty
|
||||
</select>
|
||||
|
||||
<select id="queryBagIvt" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
late.*,
|
||||
late.qty AS canuse_qty,
|
||||
material.material_code,
|
||||
material.material_name,
|
||||
material.material_spec,
|
||||
material.material_model,
|
||||
supp.supp_name,
|
||||
class.class_name,
|
||||
attr.sect_id,
|
||||
attr.sect_code,
|
||||
attr.sect_name,
|
||||
attr.struct_code,
|
||||
attr.struct_id,
|
||||
attr.struct_name,
|
||||
attr.stor_id,
|
||||
attr.stor_code,
|
||||
attr.stor_name,
|
||||
ext.storagevehicleext_id
|
||||
FROM
|
||||
md_pb_groupplate late
|
||||
INNER JOIN md_me_materialbase material ON material.material_id = late.material_id
|
||||
INNER JOIN st_ivt_structattr attr ON late.vehicle_code = attr.storagevehicle_code
|
||||
INNER JOIN md_pb_storagevehicleext ext ON ext.storagevehicle_code = late.vehicle_code
|
||||
AND late.material_id = ext.material_id AND late.pcsn = ext.pcsn
|
||||
LEFT JOIN md_cs_supplierbase supp ON late.supp_code = supp.supp_code
|
||||
LEFT JOIN md_pb_classstandard class ON class.class_id = material.material_type_id
|
||||
<where>
|
||||
attr.lock_type = '0'
|
||||
AND attr.is_used = "1"
|
||||
AND late.status = "2"
|
||||
AND ext.canuse_qty > 0
|
||||
|
||||
<if test="param.bag_code != null and param.bag_code != ''">
|
||||
AND
|
||||
late.bag_code = #{param.bag_code}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -35,10 +35,46 @@ public class PdaWarehouseController {
|
||||
public ResponseEntity<Object> getPalletAssembly(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.getPalletAssembly(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmPalletAssemblyIn")
|
||||
@Log("直接入库 - 入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> confirmPalletAssemblyIn(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.confirmPalletAssemblyIn(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryReceiveSect")
|
||||
@Log("收货入库 - 查询库区下拉框")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryReceiveSect() {
|
||||
return new ResponseEntity<>(pdaWarehouseService.queryReceiveSect(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryGroupDtl")
|
||||
@Log("收货入库 - 查询组盘明细")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryGroupDtl(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.queryGroupDtl(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/receiveConfirmIn")
|
||||
@Log("收货入库 - 确认入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> receiveConfirmIn(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.receiveConfirmIn(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/directlyOutCodeInsert")
|
||||
@Log("直接出库 - 扫码插入")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> directlyOutCodeInsert(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.directlyOutCodeInsert(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/directlyOutConfirm")
|
||||
@Log("直接出库 - 确认出库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> directlyOutConfirm(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaWarehouseService.directlyOutConfirm(param), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,4 +57,13 @@ public interface PdaBuildParamService {
|
||||
JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, String invId);
|
||||
|
||||
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
||||
|
||||
/**
|
||||
* 直接出库/直接入库: 直接创建单据、明细、分配明细
|
||||
* @param param {
|
||||
* rows: []
|
||||
* }
|
||||
* @param io_type 出入类型
|
||||
*/
|
||||
void createIOS(JSONObject param, String io_type, String bill_type);
|
||||
}
|
||||
|
||||
@@ -16,4 +16,49 @@ public interface PdaWarehouseService {
|
||||
* @return
|
||||
*/
|
||||
PdaResponse confirmPalletAssemblyIn(JSONObject param);
|
||||
|
||||
/**
|
||||
* 收货入库 - 查询库区下拉框
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryReceiveSect();
|
||||
|
||||
/**
|
||||
* 收货入库 - 查询组盘明细
|
||||
* @param param {
|
||||
* vehicle_code: 载具编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryGroupDtl(JSONObject param);
|
||||
|
||||
/**
|
||||
* 收货入库 - 确认入库
|
||||
* @param param {
|
||||
* sect_code: 库区编码
|
||||
* vehicle_code: 载具编码
|
||||
* point_code: 入库点位
|
||||
* rows: 列表明细
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse receiveConfirmIn(JSONObject param);
|
||||
|
||||
/**
|
||||
* 直接出库 - 扫码插入
|
||||
* @param param {
|
||||
* bag_code: 袋码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse directlyOutCodeInsert(JSONObject param);
|
||||
|
||||
/**
|
||||
* 直接出库 - 确认出库
|
||||
* @param param {
|
||||
* rows: [] 库存明细
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse directlyOutConfirm(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -9,21 +9,25 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.list.TreeList;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
import org.nl.wms.pda.general_management.service.PdaCommonService;
|
||||
import org.nl.wms.pda.general_management.service.dto.AssemblyPalletParam;
|
||||
import org.nl.wms.pda.general_management.service.dto.TurnoverDetailDto;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
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.IOutBillService;
|
||||
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.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.IOStorInvDisMapper;
|
||||
@@ -251,4 +255,77 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
||||
outDivObj.put("point_code", endPoint.getPoint_code());
|
||||
return outDivObj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createIOS(JSONObject param, String io_type, String bill_type) {
|
||||
List<JSONObject> rows = param.getJSONArray("rows").toJavaList(JSONObject.class);
|
||||
JSONObject json = rows.get(0);
|
||||
// 创建主表
|
||||
JSONObject jsonMst = new JSONObject();
|
||||
jsonMst.put("iostorinv_id", IdUtil.getStringId());
|
||||
jsonMst.put("bill_code", CodeUtil.getNewCode("OUT_STORE_CODE"));
|
||||
jsonMst.put("biz_date", DateUtil.today());
|
||||
jsonMst.put("buss_type", bill_type);
|
||||
jsonMst.put("bill_type", bill_type);
|
||||
jsonMst.put("io_type", io_type);
|
||||
jsonMst.put("detail_count", rows.size() + "");
|
||||
jsonMst.put("create_mode", IOSEnum.CREATE_MODE.code("终端产生"));
|
||||
jsonMst.put("stor_id", json.getString("stor_id"));
|
||||
jsonMst.put("stor_code", json.getString("stor_code"));
|
||||
jsonMst.put("stor_name", json.getString("stor_name"));
|
||||
jsonMst.put("total_qty", param.getBigDecimal("total_qty"));
|
||||
jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("完成"));
|
||||
jsonMst.put("input_optid", SecurityUtils.getCurrentUserId());
|
||||
jsonMst.put("input_optname", SecurityUtils.getCurrentNickName());
|
||||
jsonMst.put("input_time", DateUtil.now());
|
||||
jsonMst.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
jsonMst.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
jsonMst.put("update_time", DateUtil.now());
|
||||
jsonMst.put("is_delete", BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
jsonMst.put("is_upload", BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
outBillService.save(jsonMst.toJavaObject(IOStorInv.class));
|
||||
// 创建明细、分配明细
|
||||
for (JSONObject row : rows) {
|
||||
// 组织明细
|
||||
JSONObject jsonDtl = new JSONObject();
|
||||
jsonDtl.put("iostorinvdtl_id", IdUtil.getStringId());
|
||||
jsonDtl.put("iostorinv_id", jsonMst.getString("iostorinv_id"));
|
||||
jsonDtl.put("seq_no", 1);
|
||||
jsonDtl.put("material_id", row.getString("material_id"));
|
||||
jsonDtl.put("pcsn", row.getString("pcsn"));
|
||||
jsonDtl.put("bill_status", IOSEnum.BILL_STATUS.code("完成"));
|
||||
jsonDtl.put("qty_unit_id", row.getString("qty_unit_id"));
|
||||
jsonDtl.put("qty_unit_name", row.getString("qty_unit_name"));
|
||||
jsonDtl.put("plan_qty", row.getString("canuse_qty"));
|
||||
jsonDtl.put("real_qty", row.getString("canuse_qty"));
|
||||
jsonDtl.put("assign_qty", row.getString("canuse_qty"));
|
||||
jsonDtl.put("unassign_qty", 0);
|
||||
ioStorInvDtlMapper.insert(jsonDtl.toJavaObject(IOStorInvDtl.class));
|
||||
|
||||
// 组织分配明细
|
||||
JSONObject jsonDis = new JSONObject();
|
||||
jsonDis.put("iostorinvdis_id", IdUtil.getStringId());
|
||||
jsonDis.put("iostorinvdtl_id", jsonDtl.getString("iostorinvdtl_id"));
|
||||
jsonDis.put("iostorinv_id", jsonMst.getString("iostorinvdtl_id"));
|
||||
jsonDis.put("seq_no", 1);
|
||||
jsonDis.put("sect_id", row.getString("sect_id"));
|
||||
jsonDis.put("sect_code", row.getString("sect_code"));
|
||||
jsonDis.put("sect_name", row.getString("sect_name"));
|
||||
jsonDis.put("struct_id", row.getString("struct_id"));
|
||||
jsonDis.put("struct_code", row.getString("struct_code"));
|
||||
jsonDis.put("struct_name", row.getString("struct_name"));
|
||||
jsonDis.put("material_id", row.getString("material_id"));
|
||||
jsonDis.put("pcsn", row.getString("pcsn"));
|
||||
jsonDis.put("work_status", IOSEnum.INBILL_DIS_STATUS.code("完成"));
|
||||
jsonDis.put("storagevehicle_code", row.getString("vehicle_code"));
|
||||
jsonDis.put("is_issued", IOSConstant.ZERO);
|
||||
jsonDis.put("qty_unit_id", row.getString("qty_unit_id"));
|
||||
jsonDis.put("qty_unit_name", row.getString("qty_unit_name"));
|
||||
jsonDis.put("plan_qty", row.getString("canuse_qty"));
|
||||
jsonDis.put("real_qty", row.getString("canuse_qty"));
|
||||
jsonDis.put("bag_code", row.getString("bag_code"));
|
||||
ioStorInvDisMapper.insert(jsonDis.toJavaObject(IOStorInvDis.class));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package org.nl.wms.pda.general_management.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.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -10,8 +12,10 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
import org.nl.wms.pda.general_management.service.PdaWarehouseService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
@@ -19,16 +23,20 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
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.mapper.MdPbGroupplateMapper;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -58,6 +66,18 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService {
|
||||
@Resource
|
||||
private IStructattrService structattrService;
|
||||
|
||||
/**
|
||||
* 组盘mapper
|
||||
*/
|
||||
@Resource
|
||||
private MdPbGroupplateMapper mdPbGroupplateMapper;
|
||||
|
||||
/**
|
||||
* 库存mapper
|
||||
*/
|
||||
@Resource
|
||||
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
|
||||
|
||||
@Override
|
||||
public PdaResponse getPalletAssembly(JSONObject param) {
|
||||
String search = param.getString("search");
|
||||
@@ -146,4 +166,132 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService {
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryReceiveSect() {
|
||||
List<Sectattr> sectList = sectattrService.list(
|
||||
new QueryWrapper<Sectattr>().lambda()
|
||||
.eq(Sectattr::getStor_id, IOSEnum.STOR_ID.code("物料室仓库"))
|
||||
.eq(Sectattr::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(Sectattr::getIs_used, IOSConstant.ONE)
|
||||
);
|
||||
|
||||
return PdaResponse.requestParamOk(sectList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryGroupDtl(JSONObject param) {
|
||||
return PdaResponse.requestParamOk(mdPbGroupplateMapper.pdaQueryGeneralGroupInfo(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@Transactional
|
||||
public PdaResponse receiveConfirmIn(JSONObject param) {
|
||||
RLock lock = redissonClient.getLock("lock:receiveConfirmIn");
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
// 判断入库点位是否存在
|
||||
SchBasePoint pointDao = pointService.getById(param.getString("point_code"));
|
||||
if (ObjectUtil.isEmpty(pointDao)) {
|
||||
throw new BadRequestException("当前入库点位不存在【"+param.getString("point_code")+"】");
|
||||
}
|
||||
|
||||
// 组织入库单创建
|
||||
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库"));
|
||||
Sectattr sectattr = sectattrService.findByCode(param.getString("sect_code"), true);
|
||||
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, null, sectattr);
|
||||
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||
|
||||
// 调用分配
|
||||
param.put("sect_code", sectattr.getSect_code());
|
||||
param.put("sect_name", sectattr.getSect_name());
|
||||
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true);
|
||||
rawAssistIStorService.divStruct(divObj);
|
||||
|
||||
// 调用下发任务
|
||||
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(pointDao, invId);
|
||||
rawAssistIStorService.divPoint(jsonMst);
|
||||
} else {
|
||||
throw new BadRequestException("当前业务繁忙,稍后再试...");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse directlyOutCodeInsert(JSONObject param) {
|
||||
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.queryBagIvt(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@Transactional
|
||||
public PdaResponse directlyOutConfirm(JSONObject param) {
|
||||
RLock lock = redissonClient.getLock("lock:directlyOutConfirm");
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
// 创建出库单据
|
||||
defaultPdaBuildParam.createIOS(param,IOSEnum.IO_TYPE.code("出库"),IOSEnum.OUT_BILL_TYPE.code("直接出库"));
|
||||
List<JSONObject> rows = param.getJSONArray("rows").toJavaList(JSONObject.class);
|
||||
|
||||
for (JSONObject json : rows) {
|
||||
MdPbStoragevehicleext ivtDao = mdPbStoragevehicleextMapper.selectById(json.getString("storagevehicleext_id"));
|
||||
// 减去数量
|
||||
double new_qty = NumberUtil.sub(ivtDao.getCanuse_qty(), json.getBigDecimal("canuse_qty")).doubleValue();
|
||||
if (new_qty == 0) {
|
||||
// 删除此库存信息
|
||||
mdPbStoragevehicleextMapper.deleteById(ivtDao);
|
||||
// 删除此托盘、物料、批次的组盘信息
|
||||
groupplateService.remove(
|
||||
new QueryWrapper<GroupPlate>().lambda()
|
||||
.eq(GroupPlate::getVehicle_code, json.getString("vehicle_code"))
|
||||
.eq(GroupPlate::getMaterial_id, json.getString("material_id"))
|
||||
.eq(GroupPlate::getPcsn, json.getString("pcsn"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
);
|
||||
// 判断此载具下是否还有其他库存
|
||||
List<MdPbStoragevehicleext> ivtList = mdPbStoragevehicleextMapper.selectList(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, json.getString("vehicle_code"))
|
||||
);
|
||||
if (ObjectUtil.isEmpty(ivtList)) {
|
||||
// 变更仓位载具为空载具
|
||||
Structattr attrDao = structattrService.getById(json.getString("struct_id"));
|
||||
attrDao.setIs_emptyvehicle(IOSConstant.ONE);
|
||||
structattrService.updateById(attrDao);
|
||||
}
|
||||
} else {
|
||||
// 更新库存数量
|
||||
ivtDao.setCanuse_qty(BigDecimal.valueOf(new_qty));
|
||||
mdPbStoragevehicleextMapper.updateById(ivtDao);
|
||||
// 减去组盘重量
|
||||
GroupPlate groupDao = groupplateService.getById("group_id");
|
||||
double group_qty = NumberUtil.sub(groupDao.getQty(), json.getBigDecimal("canuse_qty")).doubleValue();
|
||||
if (group_qty == 0) {
|
||||
// 删除组盘信息
|
||||
groupplateService.removeById(groupDao);
|
||||
} else {
|
||||
// 跟更新组盘重量
|
||||
groupDao.setQty(BigDecimal.valueOf(group_qty));
|
||||
groupplateService.updateById(groupDao);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("当前业务繁忙,稍后再试...");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@ public enum IOSEnum {
|
||||
|
||||
// 出库业务类型
|
||||
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
||||
"原辅料出库", "1001"
|
||||
"原辅料出库", "1001",
|
||||
"直接出库", "1099"
|
||||
)),
|
||||
|
||||
// 移库业务类型
|
||||
@@ -80,6 +81,9 @@ public enum IOSEnum {
|
||||
// 仓位类型
|
||||
PLACEMENT_TYPE(MapOf.of("深货位", "1", "浅货位", "2")),
|
||||
|
||||
// 仓库ID
|
||||
STOR_ID(MapOf.of("物料室仓库", "1582991156504039424")),
|
||||
|
||||
// 库区编码
|
||||
SECT_CODE(MapOf.of("合格区", "HG01", "待检区", "DJ01", "不合格区", "BHG01", "大料箱区", "DLX01")),
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
|
||||
List<JSONObject> queryVehicleGroupInfo(@Param("param") JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 手持通用功能公共查询
|
||||
* 手持通用功能公共查询(根据载具编码查询)
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具编码
|
||||
* vehicle_code: 载具编码
|
||||
* }
|
||||
* @return List<JSONObject>
|
||||
*/
|
||||
|
||||
@@ -94,19 +94,19 @@
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
mater.material_model,
|
||||
mater.quality_time AS quality_time_day,
|
||||
supp.supp_name
|
||||
supp.supp_name,
|
||||
class.class_name
|
||||
FROM
|
||||
md_pb_groupplate late
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = late.material_id
|
||||
INNER JOIN md_cs_supplierbase supp ON supp.supp_code = late.supp_code
|
||||
INNER JOIN md_pb_classstandard class ON class.class_id = mater.material_type_id
|
||||
<where>
|
||||
late.status in ('3','1')
|
||||
AND IFNULL(late.bom_id,'') = ''
|
||||
late.status = '1'
|
||||
|
||||
<if test="param.storagevehicle_code != null and param.storagevehicle_code != ''">
|
||||
<if test="param.vehicle_code != null and param.vehicle_code != ''">
|
||||
AND
|
||||
late.storagevehicle_code = #{param.storagevehicle_code}
|
||||
late.vehicle_code = #{param.vehicle_code}
|
||||
</if>
|
||||
</where>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user