123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- /*
- * Copyright [2022] [https://www.baiduc.com]
- *
- * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Snowy源码头部的版权声明。
- * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
- * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
- * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
- */
- package vip.xiaonuo.erp.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollStreamUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import io.swagger.models.auth.In;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.core.ParameterizedTypeReference;
- import org.springframework.http.HttpMethod;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.client.RestTemplate;
- import vip.xiaonuo.common.enums.CommonSortOrderEnum;
- import vip.xiaonuo.common.exception.CommonException;
- import vip.xiaonuo.common.page.CommonPageRequest;
- import vip.xiaonuo.erp.entity.ErpBdMaterial;
- import vip.xiaonuo.erp.entity.ErpBdOrg;
- import vip.xiaonuo.erp.entity.voucher.ErpMaterial;
- import vip.xiaonuo.erp.mapper.ErpBdMaterialMapper;
- import vip.xiaonuo.erp.mapper.ErpBdOrgMapper;
- import vip.xiaonuo.erp.param.*;
- import vip.xiaonuo.erp.service.ErpBdMaterialService;
- import vip.xiaonuo.sale.entity.ErpBaseMaterial;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * erp_bd_materialService接口实现类
- *
- * @author 1
- * @date 2025/03/01 14:50
- **/
- @Service
- public class ErpBdMaterialServiceImpl extends ServiceImpl<ErpBdMaterialMapper, ErpBdMaterial> implements ErpBdMaterialService {
- @Override
- public Page<ErpBdMaterial> page(ErpBdMaterialPageParam erpBdMaterialPageParam) {
- QueryWrapper<ErpBdMaterial> queryWrapper = new QueryWrapper<>();
- if(ObjectUtil.isAllNotEmpty(erpBdMaterialPageParam.getSortField(), erpBdMaterialPageParam.getSortOrder())) {
- CommonSortOrderEnum.validate(erpBdMaterialPageParam.getSortOrder());
- queryWrapper.orderBy(true, erpBdMaterialPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
- StrUtil.toUnderlineCase(erpBdMaterialPageParam.getSortField()));
- } else {
- queryWrapper.lambda().orderByAsc(ErpBdMaterial::getId);
- }
- queryWrapper.eq(StringUtils.isNotBlank(erpBdMaterialPageParam.getOrgId()),"org_id",erpBdMaterialPageParam.getOrgId());
- queryWrapper.eq("parent",0);
- return this.page(CommonPageRequest.defaultPage(), queryWrapper);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void add(ErpBdMaterialAddParam erpBdMaterialAddParam) {
- ErpBdMaterial erpBdMaterial = BeanUtil.toBean(erpBdMaterialAddParam, ErpBdMaterial.class);
- this.save(erpBdMaterial);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void edit(ErpBdMaterialEditParam erpBdMaterialEditParam) {
- ErpBdMaterial erpBdMaterial = this.queryEntity(erpBdMaterialEditParam.getId());
- BeanUtil.copyProperties(erpBdMaterialEditParam, erpBdMaterial);
- this.updateById(erpBdMaterial);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void delete(List<ErpBdMaterialIdParam> erpBdMaterialIdParamList) {
- // 执行删除
- this.removeByIds(CollStreamUtil.toList(erpBdMaterialIdParamList, ErpBdMaterialIdParam::getId));
- }
- @Override
- public ErpBdMaterial detail(ErpBdMaterialIdParam erpBdMaterialIdParam) {
- return this.queryEntity(erpBdMaterialIdParam.getId());
- }
- @Override
- public ErpBdMaterial queryEntity(Integer id) {
- ErpBdMaterial erpBdMaterial = this.getById(id);
- if(ObjectUtil.isEmpty(erpBdMaterial)) {
- throw new CommonException("erp_bd_material不存在,id值为:{}", id);
- }
- return erpBdMaterial;
- }
- @Override
- public List<ErpBdMaterial> getByParentId(ErpBdMaterialParentParam erpBdMaterial) {
- String orgId = erpBdMaterial.getOrgId();
- Integer parent = erpBdMaterial.getId();
- if (ObjectUtil.isEmpty(parent)){
- parent = 0;
- }
- return this.list(new QueryWrapper<ErpBdMaterial>().eq("parent", parent).eq(StringUtils.isNotBlank(orgId), "org_id", orgId));
- }
- @Autowired
- private RestTemplate restTemplate;
- @Autowired
- private ErpBdOrgMapper erpBdOrgMapper;
- @Autowired
- private ErpBdMaterialMapper erpBdMaterialMapper;
- @Override
- public void sync() {
- ResponseEntity<List<ErpMaterial>> response = restTemplate.exchange(
- "http://127.0.0.1:9200/erp-bd-org/getMaterial",
- HttpMethod.GET,
- null,
- new ParameterizedTypeReference<List<ErpMaterial>>() {
- }
- );
- List<ErpMaterial> forObjects = response.getBody();
- System.out.println(forObjects);
- for (ErpMaterial forObject : forObjects) {
- ResponseEntity<List<ErpMaterial>> response2 = restTemplate.exchange(
- "http://127.0.0.1:9200/erp-bd-org/getMaterialDetail?fnumber=" + forObject.getFnumber(),
- HttpMethod.GET,
- null,
- new ParameterizedTypeReference<List<ErpMaterial>>() {
- }
- );
- //二
- List<ErpMaterial> forObjects2 = response2.getBody();
- System.out.println(forObjects2);
- boolean b = false;
- //判断有没有下级
- for (ErpMaterial erpMaterial : forObjects2) {
- if (erpMaterial.getFnumber().contains("0000")) {
- ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
- if (ObjectUtil.isEmpty(forgid))
- continue;
- if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id", forgid.getOrgId()))) {
- continue;
- }
- ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
- erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
- erpBaseMaterial.setOrgId(forgid.getOrgId());
- erpBaseMaterial.setFname(erpMaterial.getFname() + " " + erpMaterial.getFspecification());
- erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
- erpBaseMaterial.setParent(0);
- erpBdMaterialMapper.insert(erpBaseMaterial);
- b = true;
- }
- }
- //有下级
- if (b) {
- for (ErpMaterial erpMaterial : forObjects2) {
- if (!erpMaterial.getFnumber().contains("0000")) {
- ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
- if (ObjectUtil.isEmpty(forgid))
- continue;
- if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id", forgid.getOrgId()))) {
- continue;
- }
- ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
- erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
- erpBaseMaterial.setOrgId(forgid.getOrgId());
- erpBaseMaterial.setFname(erpMaterial.getFname() + " " + erpMaterial.getFspecification());
- erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
- ErpBdMaterial erpBdMaterial = erpBdMaterialMapper.selectOne(new QueryWrapper<ErpBdMaterial>().
- eq("erp_fnumber", forObject.getFnumber() + "0000").eq("org_id", forgid.getOrgId()));
- if (ObjectUtil.isEmpty(erpBdMaterial)) {
- continue;
- }
- erpBaseMaterial.setParent(erpBdMaterial.getId());
- erpBdMaterialMapper.insert(erpBaseMaterial);
- }
- }
- } else {
- for (ErpMaterial erpMaterial : forObjects2) {
- ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
- if (ObjectUtil.isEmpty(forgid))
- continue;
- if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id", forgid.getOrgId()))) {
- continue;
- }
- ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
- erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
- erpBaseMaterial.setOrgId(forgid.getOrgId());
- erpBaseMaterial.setFname(erpMaterial.getFname() + " " + erpMaterial.getFspecification());
- erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
- erpBaseMaterial.setParent(0);
- erpBdMaterialMapper.insert(erpBaseMaterial);
- ErpBdMaterial erpBaseMaterial1 = new ErpBdMaterial();
- erpBaseMaterial1.setErpFnumber(erpMaterial.getFnumber());
- erpBaseMaterial1.setOrgId(forgid.getOrgId());
- erpBaseMaterial1.setFname(erpMaterial.getFname() + " " + erpMaterial.getFspecification());
- erpBaseMaterial1.setFspecification(erpMaterial.getFspecification());
- erpBaseMaterial1.setParent(erpBaseMaterial.getId());
- erpBdMaterialMapper.insert(erpBaseMaterial1);
- }
- }
- }
- }
- @Override
- public List<ErpBdMaterialVo> getTreeParentId(ErpBdMaterialParentParam erpBdMaterial) {
- List<ErpBdMaterial> materials = this.list(new QueryWrapper<ErpBdMaterial>().eq(StringUtils.isNotBlank(erpBdMaterial.getOrgId()), "org_id", erpBdMaterial.getOrgId()));
- return buildTree(materials,0);
- }
- public static List<ErpBdMaterialVo> buildTree(List<ErpBdMaterial> nodes, int rootParentId) {
- Map<Integer, ErpBdMaterialVo> nodeMap = new HashMap<>();
- List<ErpBdMaterialVo> rootNodes = new ArrayList<>();
- List<ErpBdMaterialVo> bdMaterialVos = new ArrayList<>();
- // 将所有节点放入 Map 中,方便通过 ID 查找
- for (ErpBdMaterial node : nodes) {
- ErpBdMaterialVo erpBdMaterialVo = new ErpBdMaterialVo();
- BeanUtil.copyProperties(node, erpBdMaterialVo);
- bdMaterialVos.add(erpBdMaterialVo);
- nodeMap.put(node.getId(), erpBdMaterialVo);
- }
- // 构建树
- for (ErpBdMaterialVo node : bdMaterialVos) {
- if (node.getParent() == 0) {
- // 顶级节点,直接加入根节点列表
- rootNodes.add(node);
- } else {
- // 查找父节点,并将当前节点加入父节点的子节点列表
- ErpBdMaterialVo parentNode = nodeMap.get(node.getParent());
- if (parentNode != null) {
- parentNode.addChild(node);
- }
- }
- }
- return rootNodes;
- }
- public List<ErpBdMaterial> getByParentId2(Integer erpBdMaterial,String orgId) {
- if (ObjectUtil.isEmpty(erpBdMaterial)){
- erpBdMaterial = 0;
- }
- return this.list(new QueryWrapper<ErpBdMaterial>().eq("parent", erpBdMaterial).eq(StringUtils.isNotBlank(orgId), "org_id", orgId));
- }
- }
|