add:按钮权限、6.007库存同步中鼎

This commit is contained in:
zhaoyf
2026-07-30 19:33:32 +08:00
parent b4db802053
commit 4abbc1a41c
18 changed files with 207 additions and 89 deletions

View File

@@ -17,9 +17,12 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
import org.nl.wms.decision_manage.service.strategyConfig.decisioner.impl.diy.InventoryRuleHandler;
import org.nl.wms.ext_manage.api.EasApi;
import org.nl.wms.ext_manage.api.request.QueryEasStockRequest;
import org.nl.wms.ext_manage.api.response.QueryEasStockResponse;
import org.nl.wms.ext_manage.service.WmsToZDWmdService;
import org.nl.wms.ext_manage.service.dto.ZDInventory;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
@@ -49,6 +52,10 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
private IStructattrService iStructattrService;
@Autowired
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
@Autowired
private WmsToZDWmdService wmsToZDWmdService;
@Autowired
private InventoryRuleHandler inventoryRuleHandler;
@Override
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
@@ -68,11 +75,7 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
new LambdaQueryWrapper<Structattr>()
.eq(Structattr::getSect_code, warehouseno)
.last("LIMIT 1"));
QueryEasStockRequest easRequest = new QueryEasStockRequest();
easRequest.setOrgno("01.09.14");
easRequest.setWarehouseno(warehouseno);
List<QueryEasStockResponse> easStocks = easApi.queryStock(easRequest);
int updateCount = 0, addCount = 0, deleteCount = 0;
List<JSONObject> localStocks = this.baseMapper.querySyncByStorCode(warehouseno);
Map<String, JSONObject> localMap = new HashMap<>();
@@ -80,63 +83,119 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
String key = local.getString("material_code") + "_" + local.getString("pcsn");
localMap.put(key, local);
}
if ("6.007".equals(warehouseno)){//装配线边库同步中鼎库存
List<ZDInventory> zdInventories = wmsToZDWmdService.queryInventoryByHouseCode(warehouseno);
Set<String> zdKeys = new HashSet<>();
for (ZDInventory zdInventory : zdInventories) {
String key = zdInventory.getSkuCode() + "_" + zdInventory.getBatchNo();
zdKeys.add(key);
if (localMap.containsKey(key)) {
JSONObject local = localMap.get(key);
GroupPlate plate = new GroupPlate();
plate.setGroup_id(local.getString("group_id"));
plate.setQty(zdInventory.getQty());
iMdPbGroupplateService.updateById(plate);
updateCount++;
} else {
GroupPlate plate = new GroupPlate();
plate.setGroup_id(IdUtil.getStringId());
plate.setStoragevehicle_code(struct.getStoragevehicle_code());
plate.setMaterial_code(zdInventory.getSkuCode());
plate.setPcsn(Optional.ofNullable(zdInventory.getBatchNo()).filter(s -> !s.isEmpty()).orElse("1"));
plate.setQty(zdInventory.getQty());
plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("入库"));
plate.setCreate_time(DateUtil.now());
plate.setCreate_id(SecurityUtils.getCurrentUserId());
plate.setCreate_name(SecurityUtils.getCurrentUsername());
Set<String> easKeys = new HashSet<>();
int updateCount = 0, addCount = 0, deleteCount = 0;
for (QueryEasStockResponse eas : easStocks) {
String key = eas.getMaterialno() + "_" + eas.getLotnumber();
easKeys.add(key);
if (localMap.containsKey(key)) {
JSONObject local = localMap.get(key);
GroupPlate plate = new GroupPlate();
plate.setGroup_id(local.getString("group_id"));
plate.setQty(new BigDecimal(eas.getQty()));
iMdPbGroupplateService.updateById(plate);
updateCount++;
} else {
GroupPlate plate = new GroupPlate();
plate.setGroup_id(IdUtil.getStringId());
plate.setStoragevehicle_code(struct.getStoragevehicle_code());
plate.setMaterial_code(eas.getMaterialno());
plate.setPcsn(Optional.ofNullable(eas.getLotnumber()).filter(s -> !s.isEmpty()).orElse("1"));
plate.setQty(new BigDecimal(eas.getQty()));
plate.setQty_unit_name(eas.getUnitname());
plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("入库"));
plate.setCreate_time(DateUtil.now());
plate.setCreate_id(SecurityUtils.getCurrentUserId());
plate.setCreate_name(SecurityUtils.getCurrentUsername());
MdMeMaterialbase material = iMdMeMaterialbaseService.getOne(
new LambdaQueryWrapper<MdMeMaterialbase>()
.eq(MdMeMaterialbase::getMaterial_code, eas.getMaterialno()));
if (material != null) {
plate.setQty_unit_id(material.getQty_unit_id());
if (plate.getQty_unit_name() == null) {
plate.setQty_unit_name(material.getQty_unit_name());
MdMeMaterialbase material = iMdMeMaterialbaseService.getOne(
new LambdaQueryWrapper<MdMeMaterialbase>()
.eq(MdMeMaterialbase::getMaterial_code, zdInventory.getSkuCode()));
if (material != null) {
plate.setQty_unit_id(material.getQty_unit_id());
if (plate.getQty_unit_name() == null) {
plate.setQty_unit_name(material.getQty_unit_name());
}
}
iMdPbGroupplateService.save(plate);
addCount++;
}
}
iMdPbGroupplateService.save(plate);
for (JSONObject local : localStocks) {
String key = local.getString("material_code") + "_" + local.getString("pcsn");
if (!zdKeys.contains(key)) {
iMdPbGroupplateService.removeById(local.getString("group_id"));
deleteCount++;
}
}
}else{
QueryEasStockRequest easRequest = new QueryEasStockRequest();
easRequest.setOrgno("01.09.14");
easRequest.setWarehouseno(warehouseno);
List<QueryEasStockResponse> easStocks = easApi.queryStock(easRequest);
Set<String> easKeys = new HashSet<>();
addCount++;
for (QueryEasStockResponse eas : easStocks) {
String key = eas.getMaterialno() + "_" + eas.getLotnumber();
easKeys.add(key);
if (localMap.containsKey(key)) {
JSONObject local = localMap.get(key);
GroupPlate plate = new GroupPlate();
plate.setGroup_id(local.getString("group_id"));
plate.setQty(new BigDecimal(eas.getQty()));
iMdPbGroupplateService.updateById(plate);
updateCount++;
} else {
GroupPlate plate = new GroupPlate();
plate.setGroup_id(IdUtil.getStringId());
plate.setStoragevehicle_code(struct.getStoragevehicle_code());
plate.setMaterial_code(eas.getMaterialno());
plate.setPcsn(Optional.ofNullable(eas.getLotnumber()).filter(s -> !s.isEmpty()).orElse("1"));
plate.setQty(new BigDecimal(eas.getQty()));
plate.setQty_unit_name(eas.getUnitname());
plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("入库"));
plate.setCreate_time(DateUtil.now());
plate.setCreate_id(SecurityUtils.getCurrentUserId());
plate.setCreate_name(SecurityUtils.getCurrentUsername());
MdMeMaterialbase material = iMdMeMaterialbaseService.getOne(
new LambdaQueryWrapper<MdMeMaterialbase>()
.eq(MdMeMaterialbase::getMaterial_code, eas.getMaterialno()));
if (material != null) {
plate.setQty_unit_id(material.getQty_unit_id());
if (plate.getQty_unit_name() == null) {
plate.setQty_unit_name(material.getQty_unit_name());
}
}
iMdPbGroupplateService.save(plate);
addCount++;
}
}
for (JSONObject local : localStocks) {
String key = local.getString("material_code") + "_" + local.getString("pcsn");
if (!easKeys.contains(key)) {
iMdPbGroupplateService.removeById(local.getString("group_id"));
deleteCount++;
}
}
}
for (JSONObject local : localStocks) {
String key = local.getString("material_code") + "_" + local.getString("pcsn");
if (!easKeys.contains(key)) {
iMdPbGroupplateService.removeById(local.getString("group_id"));
deleteCount++;
}
}
JSONObject result = new JSONObject();
result.put("updateCount", updateCount);
result.put("addCount", addCount);
result.put("deleteCount", deleteCount);
result.put("easTotal", easStocks.size());
result.put("localTotal", localStocks.size());
return result;
}

View File

@@ -1,11 +1,10 @@
package org.nl.wms.ext_manage.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.utils.MapOf;
import org.nl.wms.ext_manage.purchase.service.dto.BillChangeDto;
import org.nl.wms.ext_manage.service.dto.ZDInventory;
import org.nl.wms.pm_manage.demand.service.dto.PmDemandDto;
import org.springframework.http.ResponseEntity;import org.nl.common.base.ResponseData;
import org.springframework.http.ResponseEntity;
import java.util.List;
import java.util.Map;
@@ -48,4 +47,6 @@ public interface WmsToZDWmdService {
*
*/
ResponseEntity<List<ZDInventory>> queryInventory(String materialCode);
List<ZDInventory> queryInventoryByHouseCode(String houseCode);
}

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.annotation.Mock;
import org.nl.common.base.ResponseData;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.wms.ext_manage.purchase.service.dto.BillChangeDto;
@@ -17,7 +18,7 @@ import org.nl.wms.system_manage.enums.SysParamConstant;
import org.nl.wms.system_manage.service.param.dao.Param;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;import org.nl.common.base.ResponseData;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -129,4 +130,40 @@ public class WmsToZDWmdServiceImpl implements WmsToZDWmdService {
throw new BadRequestException("中鼎库存查询异常:" + e.getMessage());
}
}
@Override
public List<ZDInventory> queryInventoryByHouseCode(String houseCode) {
List<ZDInventory> inventorys = new ArrayList<>();
log.info("queryInventoryByHouseCode查询中鼎库存输入参数houseCode={}", houseCode);
Param param = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.ZD_URL_LOC);
if (param==null){
throw new BadRequestException("查询中鼎库存失败,接口地址未配置");
}
String url = param.getValue();
JSONObject requestBody = new JSONObject();
// if(!StrUtil.isEmptyIfStr(skuCode)){
// requestBody.put("SkuCode", skuCode);
// }
requestBody.put("HouseCode", houseCode);
requestBody.put("HouseCodeLis", new JSONArray());
try {
String resultMsg = HttpRequest.post(url)
.contentType("application/json")
.body(requestBody.toString())
.execute().body();
log.info("queryInventoryByHouseCode查询库存输出参数-------------------" + resultMsg);
JSONObject result = JSONObject.parseObject(resultMsg);
Integer respCode = result.getInteger("respCode");
if (respCode == null || respCode != 0) {
throw new BadRequestException("中鼎库存查询失败:" + result.getString("respMsg"));
}
inventorys = result.getJSONArray("data").toJavaList(ZDInventory.class);
return inventorys;
} catch (BadRequestException e) {
throw e;
} catch (Exception e) {
throw new BadRequestException("中鼎库存查询异常:" + e.getMessage());
}
}
}

View File

@@ -12,9 +12,7 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
import org.nl.wms.ext_manage.enums.EXTConstant;
import org.nl.wms.ext_manage.service.WmsToZDWmdService;
import org.nl.wms.ext_manage.service.dto.ZDInventory;
@@ -26,22 +24,19 @@ import org.nl.wms.pm_manage.demand.service.dto.PmDemandDto;
import org.nl.wms.pm_manage.demand.service.dto.PmDemandParam;
import org.nl.wms.pm_manage.demand.service.dto.PmDemandQuery;
import org.nl.wms.pm_manage.demand.service.enums.DemandStatus;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.system_manage.service.param.ISysParamService;
import org.nl.wms.system_manage.service.param.dao.Param;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
import org.nl.wms.warehouse_manage.inventory.IStInventoryService;
import org.nl.wms.warehouse_manage.inventory.dto.StInventoryDto;
import org.nl.wms.warehouse_manage.inventory.dto.StInventoryQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;import org.nl.common.base.ResponseData;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@@ -164,7 +159,6 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
demandDto.setQty(dto.getQty());
demandDto.setHouseCode(dto.getStorCode());
demandDto.setHouseName(dto.getStorName());
demandDto.setHouseName(dto.getStorName());
resultList.add(demandDto);
}
}
@@ -182,7 +176,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
throw new BadRequestException("分配失败,当前中鼎仓库编码未配置映射");
}
demandDto.setHouseCode(houseMapping);
demandDto.setHouseName(null);
demandDto.setHouseName("五期原材料立库6.002");
resultList.add(demandDto);
}
}

View File

@@ -134,7 +134,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
List<String> permission = new LinkedList<>();
// 查看是否为管理员
permission.add("admin");
permission.addAll(sysMenuMapper.getPermissionByUserId(userDto.getString("userId")));
permission.addAll(sysMenuMapper.getPermissionByUserId(userDto.getString("user_id")));
return permission;
}