diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java index ed961987..4e5fa088 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java @@ -1,6 +1,7 @@ package com.nflg.product.bomnew.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; @@ -17,6 +18,7 @@ import com.nflg.product.bomnew.config.NacosConfig; import com.nflg.product.bomnew.constant.MaterialMainGetTypeEnum; import com.nflg.product.bomnew.constant.MaterialRelCategoryCodeEnum; import com.nflg.product.bomnew.pojo.dto.*; +import com.nflg.product.bomnew.pojo.entity.MaterialCategoryEntity; import com.nflg.product.bomnew.pojo.entity.MaterialMainEntity; import com.nflg.product.bomnew.util.FlowUtil; import com.nflg.product.bomnew.util.HttpUtils; @@ -53,6 +55,9 @@ public class MaterialService { @Qualifier("syncOAThreadPool") ThreadPoolTaskExecutor syncOAThreadPool; + @Resource + MaterialCategoryService materialCategoryService; + /** * 申请物料 * @@ -173,6 +178,9 @@ public class MaterialService { public Map batchAddMaterial(List mds, LoginUserInfoDTO userInfo) { List resultList=new ArrayList<>(); + Set categoryCodeList = mds.stream().map(AddVirtrualMaterialDTO::getMaterialCategoryCode).collect(Collectors.toSet()); + List categoryEntityList = materialCategoryService.lambdaQuery().in(MaterialCategoryEntity::getCategoryCode, categoryCodeList).list(); + List syncOaEnts=new ArrayList<>(); Map result = new HashMap<>(); for (AddVirtrualMaterialDTO md :mds) { @@ -189,29 +197,41 @@ public class MaterialService { ma.setUpdatedBy(userInfo.getUserCode()); ma.setUpdatedTime(LocalDateTime.now()); ma.setMaterialClass(0); - ma.setProcessState(0); + // ma.setProcessState(0); ma.setApplyUserCode(userInfo.getRealName()); ma.setApplyDeptName(userInfo.getDepartName()); ma.setMaterialUnit("PC"); - // ma.setProcessState(10); + ma.setProcessState(10); if(StrUtil.isNotBlank(md.getProjectType())){ ma.setProjectType(md.getProjectType()); } resultList.add(ma); - // AddMaterialMainDTO ent=new AddMaterialMainDTO(); - // BeanUtil.copyProperties(ma,ent); - // ent.setRelCategoryCode(relMaterialCategory); - // ent.setReuseOfOnceState(0); - // syncOaEnts.add(ent); + AddMaterialMainDTO ent = new AddMaterialMainDTO(); + BeanUtil.copyProperties(ma, ent); + ent.setRelCategoryCode(relMaterialCategory); + ent.setReuseOfOnceState(0); + + Optional optional = categoryEntityList.stream().filter(item -> item.getCategoryCode().equals(md.getMaterialCategoryCode())).findFirst(); + optional.ifPresent(item -> { + List parentRowIdList = Arrays.stream(item.getParentTree().split(",")).collect(Collectors.toList()); + List list = materialCategoryService.lambdaQuery().in(MaterialCategoryEntity::getRowId, parentRowIdList).list(); + List categoryNameList = list.stream().map(MaterialCategoryEntity::getCategoryName).collect(Collectors.toList()); + String categoryTreeName = String.join("/", categoryNameList); + ent.setCategoryNameTree(categoryTreeName); + ent.setRelCategoryCode(item.getRelCategoryCode()); + }); + + syncOaEnts.add(ent); md.setMaterialNo(ma.getMaterialNo()); result.put(md.getKey(),md); } materialMainService.saveOrUpdateBatch(resultList); - // initCategoryInfo(syncOaEnts); + initCategoryInfo(syncOaEnts); //同步OA - CompletableFuture.runAsync(() -> sysnToOa(syncOaEnts, userInfo), syncOAThreadPool); + //sysnToOa(syncOaEnts); + CompletableFuture.runAsync(() -> sysnToOa(syncOaEnts),syncOAThreadPool); return result; } @@ -308,62 +328,62 @@ public class MaterialService { */ @Transactional(rollbackFor = Exception.class) public void sysnToOa(List data, LoginUserInfoDTO userInfo) { - Map result = getHttpMap(userInfo.getUserCode()); + try { + Map result = getHttpMap(userInfo.getUserCode()); - List> list = new ArrayList<>(); - data.forEach(u -> { - Map material = new LinkedHashMap<>(); + List> list = new ArrayList<>(); + data.forEach(u -> { + Map material = new LinkedHashMap<>(); - String relCategoryCode = u.getRelCategoryCode(); - material.put("MATNR", u.getMaterialNo()); - material.put("MAKTX", StrUtil.isNotBlank(u.getShortMaterialDesc()) ? u.getShortMaterialDesc() : u.getMaterialDesc()); - material.put("dl", u.getSecondMaterialCategoryCode()); - material.put("xl", u.getThirdMaterialCategoryCode()); - material.put("xfl", u.getFourthMaterialCategoryCode()); - material.put("xl_copy", u.getThirdMaterialCategoryCode()); - material.put("MATKL", u.getThirdMaterialCategoryCode()); - material.put("MNAME", u.getMaterialName()); - material.put("MNUMB", u.getDrawingNo()); - material.put("MTEXT", u.getMaterialTexture()); - material.put("MSPEC", u.getMaterialSpecifications()); - material.put("MREMA", u.getMaterialDesc()); - material.put("MMANU", u.getMaterialBrand()); - material.put("ATTYP", relCategoryCode); - material.put("ERNAM", userInfo.getUserCode()); - material.put("MEINS", u.getMaterialUnit()); - material.put("DUPLICATEITEMS", u.getReuseOfOnceState().equals(1) ? "2" : "1");// 是否一次性使用物料 0:否1:是 - material.put("categoryTreeName", u.getCategoryNameTree()); - material.put("FWEIGHT", u.getMaterialWeight()); - if (StringUtils.isNotEmpty(relCategoryCode)) { - if (relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_21.getRelCategoryCode()) || relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_22.getRelCategoryCode())) { - material.put("materialGetType", String.valueOf(u.getMaterialGetType())); - } - - if (relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_71.getRelCategoryCode())) { - if ("701301".equals(u.getMaterialCategoryCode())) { + String relCategoryCode = u.getRelCategoryCode(); + material.put("MATNR", u.getMaterialNo()); + material.put("MAKTX", StrUtil.isNotBlank(u.getShortMaterialDesc()) ? u.getShortMaterialDesc() : u.getMaterialDesc()); + material.put("dl", u.getSecondMaterialCategoryCode()); + material.put("xl", u.getThirdMaterialCategoryCode()); + material.put("xfl", u.getFourthMaterialCategoryCode()); + material.put("xl_copy", u.getThirdMaterialCategoryCode()); + material.put("MATKL", u.getThirdMaterialCategoryCode()); + material.put("MNAME", u.getMaterialName()); + material.put("MNUMB", u.getDrawingNo()); + material.put("MTEXT", u.getMaterialTexture()); + material.put("MSPEC", u.getMaterialSpecifications()); + material.put("MREMA", u.getMaterialDesc()); + material.put("MMANU", u.getMaterialBrand()); + material.put("ATTYP", relCategoryCode); + material.put("ERNAM", userInfo.getUserCode()); + material.put("MEINS", u.getMaterialUnit()); + material.put("DUPLICATEITEMS", u.getReuseOfOnceState().equals(1) ? "2" : "1");// 是否一次性使用物料 0:否1:是 + material.put("categoryTreeName", u.getCategoryNameTree()); + material.put("FWEIGHT", u.getMaterialWeight()); + if (StringUtils.isNotEmpty(relCategoryCode)) { + if (relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_21.getRelCategoryCode()) || relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_22.getRelCategoryCode())) { material.put("materialGetType", String.valueOf(u.getMaterialGetType())); - } else if ("701303".equals(u.getMaterialCategoryCode())) { - // 701303 虽然按照采购形式申请,但是OA流程类型 强制按照 自制 - material.put("materialGetType", String.valueOf(MaterialMainGetTypeEnum.ZZ.getCode())); - } else { - material.put("materialGetType", String.valueOf(MaterialMainGetTypeEnum.CG.getCode())); + } + + if (relCategoryCode.equals(MaterialRelCategoryCodeEnum.relCategoryCode_71.getRelCategoryCode())) { + if ("701301".equals(u.getMaterialCategoryCode())) { + material.put("materialGetType", String.valueOf(u.getMaterialGetType())); + } else if ("701303".equals(u.getMaterialCategoryCode())) { + // 701303 虽然按照采购形式申请,但是OA流程类型 强制按照 自制 + material.put("materialGetType", String.valueOf(MaterialMainGetTypeEnum.ZZ.getCode())); + } else { + material.put("materialGetType", String.valueOf(MaterialMainGetTypeEnum.CG.getCode())); + } } } - } - if (StringUtils.isNotEmpty(String.valueOf(u.getUseOfYear()))) { - material.put("USAGEYEAR", String.valueOf(u.getUseOfYear())); - } + if (StringUtils.isNotEmpty(String.valueOf(u.getUseOfYear()))) { + material.put("USAGEYEAR", String.valueOf(u.getUseOfYear())); + } - material.put("picUrl", u.getPicUrl()); - // 中类、小类、细分类(若有),分类代码和名称都传给OA - handleCategoryCodeAndName(material, u); - list.add(material); - }); - result.put("List", list); - log.info("物料申请-JSON:" + JSONArray.toJSONString(list)); - HttpUtils httpUtils = new HttpUtils(); - try { + material.put("picUrl", u.getPicUrl()); + // 中类、小类、细分类(若有),分类代码和名称都传给OA + handleCategoryCodeAndName(material, u); + list.add(material); + }); + result.put("List", list); + log.info("物料申请-JSON:" + JSONArray.toJSONString(list)); + HttpUtils httpUtils = new HttpUtils(); String url = NacosConfig.getNacosConfig().getOaUrl(); String reqResult = httpUtils.doPost(url, JSON.toJSONString(result)); JSONObject jsonObject = JSONObject.parseObject(reqResult); @@ -380,7 +400,7 @@ public class MaterialService { } // return null; } catch (Exception ex) { - log.error("同步OA出错",ex); + log.error("同步OA出错", ex); throw new NflgBusinessException(STATE.BusinessError, "同步OA出错" + ex.getMessage()); } }