| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.by4cloud.platformx.business.dto.ProductAddDTO; |
| | | import com.by4cloud.platformx.business.dto.ProductQueryDTO; |
| | |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.BindingResult; |
| | | |
| | |
| | | |
| | | private final TaxCodeMapper taxCodeMapper; |
| | | |
| | | private final StringRedisTemplate redisTemplate; |
| | | |
| | | @Value("${erp.smj}") |
| | | private String smjErp; |
| | | |
| | | @Value("${erp.smjsc}") |
| | | private String smjscErp; |
| | | |
| | | @Value("${erp.smjzt}") |
| | | private String smjztErp; |
| | | |
| | | @Value("${dept.smj}") |
| | | private String smj; |
| | | |
| | | @Value("${dept.smjsc}") |
| | | private String smjsc; |
| | | |
| | | @Value("${dept.smjzt}") |
| | | private String smjzt; |
| | | |
| | | @Value("${dept.smjhw}") |
| | | private String smjhw; |
| | | |
| | | |
| | | @Override |
| | | public Page pageScope(Page page, Product product) { |
| | | if (StrUtil.equals(SecurityUtils.getUser().getCompId() + "", smj) || StrUtil.equals(SecurityUtils.getUser().getCompId() + "", smjhw)) { |
| | | List<String> smjList = new ArrayList<>(); |
| | | smjList.add(smj); |
| | | smjList.add(smjhw); |
| | | return baseMapper.page(page,product,smjList); |
| | | } |
| | | return baseMapper.pageScope(page,product,DataScope.of("comp_id")); |
| | | } |
| | | |
| | | @Override |
| | | public List<Tree<Long>> treeList() { |
| | |
| | | // .eq(StrUtil.isNotEmpty(queryDTO.getParentId()),Product::getParentId,queryDTO.getParentId()) |
| | | // .in(StrUtil.isNotEmpty(queryDTO.getContractCategory())&&StrUtil.equals(queryDTO.getContractCategory(), "water_house"), |
| | | // Product::getErpCode,erpCodes); |
| | | if (StrUtil.isNotBlank(queryDTO.getProductIds())){ |
| | | String[] arr = queryDTO.getProductIds().split(","); |
| | | queryDTO.setProductId(Arrays.stream(arr).collect(Collectors.toList())); |
| | | } |
| | | if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"","2089995177814495234")|| |
| | | StrUtil.equals(SecurityUtils.getUser().getCompId()+"","2089996921978040321")|| |
| | | StrUtil.equals(SecurityUtils.getUser().getCompId()+"","2089997578009128962")){ |
| | | StrUtil.equals(SecurityUtils.getUser().getCompId()+"","2101966257365045249")){ |
| | | List<ProductSelectVo> selectVos = baseMapper.getProductSMJListByParentId(queryDTO, Arrays.asList(erpCodes)); |
| | | if (selectVos.size()>2000){ |
| | | return R.ok(selectVos.subList(0,1999)); |
| | |
| | | if (CollUtil.isNotEmpty(addDTOS)){ |
| | | for (ProductAddDTO addDTO:addDTOS |
| | | ) { |
| | | if (StrUtil.isBlank(addDTO.getErpCode())){ |
| | | return R.failed("erp编码不能为空"); |
| | | } |
| | | List<Product> classPro = baseMapper.selectListByScope(Wrappers.<Product>lambdaQuery() |
| | | .eq(StrUtil.isNotEmpty(addDTO.getErpTypeCode()),Product::getErpCode,addDTO.getErpTypeCode()) |
| | | .eq(StrUtil.isNotEmpty(addDTO.getErpTypeName()),Product::getProductName,addDTO.getErpTypeName()) |
| | |
| | | baseMapper.insert(product); |
| | | classPro.add(product); |
| | | } |
| | | List<Product> productList = baseMapper.selectListByScope(Wrappers.<Product>lambdaQuery() |
| | | .eq(StrUtil.isNotEmpty(addDTO.getErpCode()),Product::getErpCode,addDTO.getErpCode()) |
| | | , DataScope.of("comp_id")); |
| | | if (CollUtil.isEmpty(productList)){ |
| | | Product product = new Product(); |
| | | product.setProductName(addDTO.getErpName()); |
| | | product.setProductType(addDTO.getSpecification()); |
| | |
| | | baseMapper.insert(product); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | return R.failed("数据为空"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | }else { |
| | | startDate = dto.getStartDate(); |
| | | } |
| | | JSONObject loginJson = new JSONObject(); |
| | | loginJson.put("username", "admin"); |
| | | loginJson.put("password", "Zimafold@2026"); |
| | | log.info("石煤机产品获取token入参:{}", loginJson.toJSONString()); |
| | | String loginResp = HttpUtil.post(smjErp + "/api/account/v1/login", loginJson.toJSONString()); |
| | | log.info("石煤机产品获取token回参:{}", loginResp); |
| | | JSONObject respJson = JSONObject.parseObject(loginResp); |
| | | if (respJson.getInteger("code") == 0) { |
| | | JSONObject dataJson = JSONObject.parseObject(respJson.getString("data")); |
| | | HttpResponse response = HttpRequest.get(smjErp + "/api/item/v1/byDateCre?startDate=" + startDate) |
| | | .header("token", dataJson.getString("token")) // 添加认证头 |
| | | String token = ""; |
| | | if (redisTemplate.hasKey("SMJ_ERP_TOKEN")) { |
| | | token = (String) redisTemplate.opsForValue().get("SMJ_ERP_TOKEN"); |
| | | } else { |
| | | token = getErpToken(); |
| | | } |
| | | if (StrUtil.isEmpty(token)){ |
| | | return R.failed("石煤机登录获取token失败"); |
| | | } |
| | | List<String> list = Arrays.asList("tenant1","tenant2","tenant3"); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | String tan = list.get(i); |
| | | HttpResponse response = HttpRequest.get(smjErp + "/api/item/v1/byDateCre?startDate=" + startDate+"&tenantId="+tan) |
| | | .header("token", token) // 添加认证头 |
| | | .execute(); // 执行请求.post(ymjErp,request.toJSONString()); |
| | | log.info("石煤机产品获取回参:{}", response.body()); |
| | | log.info("石煤机——"+tan+"产品获取回参:{}", response.body()); |
| | | JSONObject proResult = JSONObject.parseObject(response.body()); |
| | | JSONArray items = proResult.getJSONArray("data"); |
| | | if (CollUtil.isNotEmpty(items)){ |
| | |
| | | JSONObject product = (JSONObject) item; |
| | | Product productClass = baseMapper.selectOne(Wrappers.<Product>lambdaQuery() |
| | | .eq(Product::getProductName,product.getString("itemClassName")) |
| | | .and(wrapper -> wrapper.eq(Product::getCompId,"2089995177814495234") |
| | | .or().eq(Product::getCompId,"2089996921978040321") |
| | | .or().eq(Product::getCompId,"2089997578009128962") |
| | | ) |
| | | // .and(wrapper -> wrapper.eq(Product::getCompId,"2089995177814495234") |
| | | // .or().eq(Product::getCompId,"2089996921978040321") |
| | | // .or().eq(Product::getCompId,"2089997578009128962") |
| | | // ) |
| | | .eq(StrUtil.equals(tan,"tenant1"),Product::getCompId,"2089995177814495234") |
| | | .eq(StrUtil.equals(tan,"tenant2"),Product::getCompId,"2089996921978040321") |
| | | .eq(StrUtil.equals(tan,"tenant3"),Product::getCompId,"2089997578009128962") |
| | | .last("limit 1") |
| | | ); |
| | | if(ObjUtil.isNull(productClass)){ |
| | |
| | | productClass.setProductName(product.getString("itemClassName")); |
| | | productClass.setErpCode(product.getString("itemClassName")); |
| | | productClass.setParentId(0L); |
| | | if(StrUtil.equals(tan,"tenant1")){ |
| | | productClass.setCompId(2089995177814495234L); |
| | | } |
| | | if(StrUtil.equals(tan,"tenant2")){ |
| | | productClass.setCompId(2089996921978040321L); |
| | | } |
| | | if(StrUtil.equals(tan,"tenant3")){ |
| | | productClass.setCompId(2089997578009128962L); |
| | | } |
| | | TaxCode taxCode = taxCodeMapper.selectOne(Wrappers.<TaxCode>lambdaQuery().eq(TaxCode::getBm,product.getString("tfTaxClass")).last("limit 1")); |
| | | if (ObjUtil.isNotNull(taxCode)){ |
| | | productClass.setTaxClass(taxCode.getSphwjc()); |
| | |
| | | } |
| | | Product productNew = baseMapper.selectOne(Wrappers.<Product>lambdaQuery() |
| | | .eq(Product::getErpCode,product.getString("itemNo")) |
| | | .and(wrapper -> wrapper.eq(Product::getCompId,"2089995177814495234") |
| | | .or().eq(Product::getCompId,"2089996921978040321") |
| | | .or().eq(Product::getCompId,"2089997578009128962") |
| | | ) |
| | | // .and(wrapper -> wrapper.eq(Product::getCompId,"2089995177814495234") |
| | | // .or().eq(Product::getCompId,"2089996921978040321") |
| | | // .or().eq(Product::getCompId,"2089997578009128962") |
| | | // ) |
| | | .eq(StrUtil.equals(tan,"tenant1"),Product::getCompId,"2089995177814495234") |
| | | .eq(StrUtil.equals(tan,"tenant2"),Product::getCompId,"2089996921978040321") |
| | | .eq(StrUtil.equals(tan,"tenant3"),Product::getCompId,"2089997578009128962") |
| | | .last("limit 1") |
| | | ); |
| | | if(ObjUtil.isNull(productNew)){ |
| | |
| | | productNew.setProductName(product.getString("note")); |
| | | productNew.setErpCode(product.getString("itemNo")); |
| | | productNew.setProductType(product.getString("grade")); |
| | | if(StrUtil.equals(tan,"tenant1")){ |
| | | productNew.setCompId(2089995177814495234L); |
| | | } |
| | | if(StrUtil.equals(tan,"tenant2")){ |
| | | productNew.setCompId(2089996921978040321L); |
| | | } |
| | | if(StrUtil.equals(tan,"tenant3")){ |
| | | productNew.setCompId(2089997578009128962L); |
| | | } |
| | | productNew.setParentId(productClass.getId()); |
| | | TaxCode taxCode = taxCodeMapper.selectOne(Wrappers.<TaxCode>lambdaQuery().eq(TaxCode::getBm,product.getString("tfTaxClass")).last("limit 1")); |
| | | if (ObjUtil.isNotNull(taxCode)){ |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | private String getErpToken() { |
| | | JSONObject loginJson = new JSONObject(); |
| | | loginJson.put("username", "admin"); |
| | | loginJson.put("password", "Zimafold@2026"); |
| | | log.info("石煤机产品获取token入参:{}", loginJson.toJSONString()); |
| | | String loginResp = HttpUtil.post(smjErp + "/api/account/v1/login", loginJson.toJSONString()); |
| | | log.info("石煤机产品获取token回参:{}", loginResp); |
| | | JSONObject respJson = JSONObject.parseObject(loginResp); |
| | | if (respJson.getInteger("code") == 0) { |
| | | JSONObject dataJson = JSONObject.parseObject(respJson.getString("data")); |
| | | redisTemplate.opsForValue().set("SMJ_ERP_TOEKN",dataJson.getString("token")); |
| | | log.info("石煤机erp token为:{}",dataJson.getString("token")); |
| | | return dataJson.getString("token"); |
| | | } |
| | | return ""; |
| | | } |
| | | } |