diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java index 3fdd4c3..33e7837 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java @@ -138,4 +138,13 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper */ List pdaQueryIvtRegion(@Param("param") JSONObject whereJson); + + /** + * 手持查询库存信息(损益管理) + * @param param { + * vehicle_code: 袋码/载具编码 + * } + * @return List + */ + List queryMoreIvt(@Param("param") JSONObject param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index f4354a1..a9d9f9d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -545,4 +545,58 @@ + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java index 2aad423..7a3f880 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java @@ -98,4 +98,18 @@ public class PdaWarehouseController { public ResponseEntity confirmInside(@RequestBody JSONObject param) { return new ResponseEntity<>(pdaWarehouseService.confirmInside(param), HttpStatus.OK); } + + @PostMapping("/queryMoreIvt") + @Log("损益管理 - 查询库存信息") + @SaIgnore + public ResponseEntity queryMoreIvt(@RequestBody JSONObject param) { + return new ResponseEntity<>(pdaWarehouseService.queryMoreIvt(param), HttpStatus.OK); + } + + @PostMapping("/confirmMore") + @Log("损益管理 - 确认损益") + @SaIgnore + public ResponseEntity confirmMore(@RequestBody JSONObject param) { + return new ResponseEntity<>(pdaWarehouseService.confirmMore(param), HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java index 0b8cad9..602e65c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java @@ -92,4 +92,22 @@ public interface PdaWarehouseService { * @return PdaResponse */ PdaResponse confirmInside(JSONObject param); + + /** + * 损益管理 - 查询库存信息 + * @param param { + * vehicle_code: 袋码/载具编码 + * } + * @return PdaResponse + */ + PdaResponse queryMoreIvt(JSONObject param); + + /** + * 损益管理 - 确认损益 + * @param param { + * rows: 列表数据 + * } + * @return PdaResponse + */ + PdaResponse confirmMore(JSONObject param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java index 054e301..1289829 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java @@ -1,20 +1,21 @@ package org.nl.wms.pda.general_management.service.impl; +import cn.hutool.core.date.DateUtil; 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 com.google.gson.JsonObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; -import org.nl.config.MapOf; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; +import org.nl.wms.basedata_manage.service.IMdPdGroupbucketService; 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.MdPdGroupbucket; 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; @@ -31,8 +32,11 @@ 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.IStIvtMoreorlessmstService; import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessmst; import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; @@ -91,11 +95,23 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService { @Resource private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + /** + * 损益服务 + */ + @Resource + private IStIvtMoreorlessmstService iStIvtMoreorlessmstService; + + /** + * 桶记录服务 + */ + @Resource + private IMdPdGroupbucketService iMdPdGroupbucketService; + @Override public PdaResponse getPalletAssembly(JSONObject param) { String bag_code = param.getString("bag_code"); if (ObjectUtil.isNotEmpty(bag_code)) { - param.put("search",bag_code); + param.put("search", bag_code); } String search = param.getString("search"); @@ -208,10 +224,10 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService { Double total_qty = lateList.stream() .map(row -> row.getDoubleValue("qty")) .reduce(Double::sum).orElse(0.0); - param.put("total_qty",total_qty); - param.put("rows",lateList); + param.put("total_qty", total_qty); + param.put("rows", lateList); // 调用新增 - defaultPdaBuildParam.createIOS(param,IOSEnum.IO_TYPE.code("入库"),IOSEnum.IN_BILL_TYPE.code("直接入库")); + defaultPdaBuildParam.createIOS(param, IOSEnum.IO_TYPE.code("入库"), IOSEnum.IN_BILL_TYPE.code("直接入库")); // 更新所有此载具下的组盘信息 List collect = lateList.stream() @@ -236,7 +252,7 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService { public PdaResponse queryReceiveSect() { List sectList = sectattrService.list( new QueryWrapper().lambda() - .in(Sectattr::getStor_id, IOSEnum.STOR_ID.code("物料室仓库"),IOSEnum.STOR_ID.code("内包材仓库")) + .in(Sectattr::getStor_id, IOSEnum.STOR_ID.code("物料室仓库"), IOSEnum.STOR_ID.code("内包材仓库")) .eq(Sectattr::getIs_delete, IOSConstant.ZERO) .eq(Sectattr::getIs_used, IOSConstant.ONE) ); @@ -484,4 +500,109 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService { } return PdaResponse.requestOk(); } + + @Override + public PdaResponse queryMoreIvt(JSONObject param) { + return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.queryMoreIvt(param)); + } + + @Override + @SneakyThrows + @Transactional + public PdaResponse confirmMore(JSONObject param) { + RLock lock = redissonClient.getLock("lock:confirmInside"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + List jsonList = param.getJSONArray("rows").toJavaList(JSONObject.class); + if (ObjectUtil.isEmpty(jsonList)) { + throw new BadRequestException("数据为空!"); + } + + for (int i = 0; i < jsonList.size(); i++) { + JSONObject json = jsonList.get(i); + // 组织损益单主表数据 + MoreOrLessInsertDto moreOrLessInsertDto = new MoreOrLessInsertDto(); + moreOrLessInsertDto.setMol_inv_type("1001"); + // 判断损益类型 + double qty = json.getDoubleValue("qty"); + double change_qty = json.getDoubleValue("change_qty"); + double ivt_qty = 0; + if (qty < change_qty) { + // 溢 + moreOrLessInsertDto.setMol_type(IOSEnum.MORE_TYPE.code("溢")); + ivt_qty = NumberUtil.sub(change_qty,qty); + } else if (qty > change_qty) { + // 损 + moreOrLessInsertDto.setMol_type(IOSEnum.MORE_TYPE.code("损")); + ivt_qty = NumberUtil.sub(qty,change_qty); + } else { + // 不处理 + continue; + } + moreOrLessInsertDto.setBiz_date(DateUtil.today()); + moreOrLessInsertDto.setDtl_num(BigDecimal.ONE); + // 查询所属仓库 + List attrList = structattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getStoragevehicle_code, json.getString("vehicle_code")) + ); + if (ObjectUtil.isEmpty(attrList)) { + throw new BadRequestException("当前载具【"+json.getString("vehicle_code")+"】不在库内"); + } + moreOrLessInsertDto.setStor_id(attrList.get(0).getStor_id()); + moreOrLessInsertDto.setTotal_qty(BigDecimal.valueOf(ivt_qty)); + moreOrLessInsertDto.setCreate_mode(IOSEnum.CREATE_MODE.code("终端产生")); + moreOrLessInsertDto.setStatus(IOSEnum.MORE_MST_STATUS.code("生成")); + + // 组织损益单明细表数据 + List tableData = new ArrayList<>(); + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("material_code", json.getString("material_code")); + jsonDtl.put("material_id", json.getString("material_id")); + jsonDtl.put("material_name", json.getString("material_name")); + jsonDtl.put("pcsn", json.getString("pcsn")); + jsonDtl.put("ivt_qty", qty); + jsonDtl.put("mol_qty", ivt_qty); + jsonDtl.put("qty_unit_id", json.getString("qty_unit_id")); + jsonDtl.put("qty_unit_name", json.getString("qty_unit_name")); + jsonDtl.put("storagevehicle_code", json.getString("vehicle_code")); + jsonDtl.put("sect_code", attrList.get(0).getSect_code()); + jsonDtl.put("struct_code", attrList.get(0).getStruct_code()); + jsonDtl.put("status", IOSEnum.MORE_MST_STATUS.code("生成")); + jsonDtl.put("bag_code", json.getString("bag_code")); + tableData.add(jsonDtl); + moreOrLessInsertDto.setTableData(tableData); + // 调用新增 + String mol_id = iStIvtMoreorlessmstService.create(moreOrLessInsertDto); + StIvtMoreorlessmst mstDao = iStIvtMoreorlessmstService.getById(mol_id); + // 调用完成 + iStIvtMoreorlessmstService.confirm(mstDao); + // 更新袋或者桶重量 + if (ObjectUtil.isNotEmpty(json.getString("bag_code"))) { + // 更新袋重量 + groupplateService.update( + new UpdateWrapper().lambda() + .eq(GroupPlate::getBag_code, json.getString("bag_code")) + .set(GroupPlate::getQty, change_qty) + ); + } else { + // 更新桶重量 + iMdPdGroupbucketService.update( + new UpdateWrapper().lambda() + .eq(MdPdGroupbucket::getBucket_code, json.getString("vehicle_code")) + .set(MdPdGroupbucket::getQty, change_qty) + ); + } + } + } else { + throw new BadRequestException("当前业务繁忙,稍后再试..."); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + return PdaResponse.requestOk(); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java index bb9e47f..92f74b3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java @@ -1,5 +1,6 @@ package org.nl.wms.warehouse_management.service.dao; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -89,5 +90,9 @@ public class StIvtMoreorlessdtl implements Serializable { */ private String source_bill_code; + /** + * 袋码 + */ + private String bag_code; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java index 006d47e..8ef7c65 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java @@ -47,6 +47,7 @@ public class StIvtMoreorlessdtlServiceImpl extends ServiceImpl