liyong
2026-01-29 e6eb127b2ef4f297b093dcd9a5b47be457f67043
feat(purchase): 碳立方对接
已添加5个文件
已修改2个文件
210 ■■■■■ 文件已修改
main-business/src/main/java/com/ruoyi/business/controller/CarbonCubesController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/CarbonCubes.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/mapper/CarbonCubesMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/CarbonCubesService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/CarbonCubesServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/basic/service/impl/ProvinceServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/CarbonCubesController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.business.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.business.entity.CarbonCubes;
import com.ruoyi.business.service.CarbonCubesService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
@RequestMapping("/carboncubes")
public class CarbonCubesController {
    private CarbonCubesService carbonCubesService;
    @PostMapping("/addOrUpdate")
    @Anonymous
    public R addCarbonCubes(@RequestBody CarbonCubes carbonCubes) {
        return carbonCubesService.addCarbonCubes(carbonCubes);
    }
    @PostMapping("/delete")
    @Anonymous
    public R deleteCarbonCubes(@RequestBody CarbonCubes carbonCubes) {
         return carbonCubesService.remove(new QueryWrapper<CarbonCubes>()
                 .lambda().eq(CarbonCubes::getBillNumber,carbonCubes.getBillNumber()))? R.ok() : R.fail();
    }
}
main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
@@ -11,4 +11,6 @@
    private String coal;
    private List<Long> exportIds;//导出选中的id
    private Long stockId;
}
main-business/src/main/java/com/ruoyi/business/entity/CarbonCubes.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.ruoyi.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
public class CarbonCubes {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    //商品
    private String coal;
    private Long coalId;
    // è®¢å•类型
    private String orderType;
    // å‘货名称or收货名称
    private String supplierName;
    private String customerName;
    // æ•°é‡
    private BigDecimal number;
    //含税单价
    private BigDecimal priceIncludingTax;
    //发货/收货磅单编号
    private String billNumber;
    private String createUser;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTime;
}
main-business/src/main/java/com/ruoyi/business/mapper/CarbonCubesMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.business.entity.CarbonCubes;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CarbonCubesMapper extends BaseMapper<CarbonCubes> {
}
main-business/src/main/java/com/ruoyi/business/service/CarbonCubesService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.business.entity.CarbonCubes;
import com.ruoyi.common.core.domain.R;
public interface CarbonCubesService extends IService<CarbonCubes> {
    R addCarbonCubes(CarbonCubes carbonCubes);
}
main-business/src/main/java/com/ruoyi/business/service/impl/CarbonCubesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.entity.CoalInfo;
import com.ruoyi.basic.mapper.CoalInfoMapper;
import com.ruoyi.business.entity.CarbonCubes;
import com.ruoyi.business.entity.PurchaseRegistration;
import com.ruoyi.business.mapper.CarbonCubesMapper;
import com.ruoyi.business.service.CarbonCubesService;
import com.ruoyi.common.core.domain.R;
import lombok.RequiredArgsConstructor;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@Service
@RequiredArgsConstructor
public class CarbonCubesServiceImpl extends ServiceImpl<CarbonCubesMapper, CarbonCubes> implements CarbonCubesService {
    @Autowired
    private final CoalInfoMapper coalInfoMapper;
    @Override
    public R addCarbonCubes(CarbonCubes carbonCubes) {
        CoalInfo oldCoalInfo = coalInfoMapper.selectOne(new QueryWrapper<CoalInfo>().lambda().eq(CoalInfo::getCoal, carbonCubes.getCoal()));
        CoalInfo coalInfo = new CoalInfo();
        if (ObjectUtils.isEmpty(oldCoalInfo)) {
            //新增煤种信息
            coalInfo.setCoal(carbonCubes.getCoal());
            coalInfo.setMaintainerId(1L);
            coalInfo.setMaintenanceDate(LocalDate.now());
            coalInfoMapper.insert(coalInfo);
        }else {
            coalInfo = oldCoalInfo;
        }
        carbonCubes.setCreateTime(LocalDate.now());
        carbonCubes.setCoalId(coalInfo.getId());
        CarbonCubes one = this.getOne(new QueryWrapper<CarbonCubes>().lambda()
                .eq(CarbonCubes::getBillNumber, carbonCubes.getBillNumber()));
        if (ObjectUtils.isEmpty(one)) {
            // æ–°å¢ž
            this.save(carbonCubes);
        }else {
            // ä¿®æ”¹
            this.update(carbonCubes, new QueryWrapper<CarbonCubes>().lambda()
                    .eq(CarbonCubes::getBillNumber, carbonCubes.getBillNumber()));
        }
        return R.ok();
    }
}
ruoyi-system/src/main/java/com/ruoyi/basic/service/impl/ProvinceServiceImpl.java
@@ -16,6 +16,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -41,17 +43,54 @@
    @Override
    public List<TreeSelectOption> getAreaOptions() {
        List<TreeSelectOption> res = new ArrayList<>();
        List<Province> list = provinceMapper.selectList(null);
        for (Province province : list) {
            // æŸ¥è¯¢çœä¸‹é¢çš„市
            List<City> cityList = cityMapper.selectList(new LambdaQueryWrapper<City>().eq(City::getProvinceId, province.getId()));
        // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰çœä»½
        List<Province> provinces = provinceMapper.selectList(null);
        if (provinces.isEmpty()) {
            return res;
        }
        // èŽ·å–æ‰€æœ‰çœä»½ID用于批量查询城市
        List<Long> provinceIds = provinces.stream()
                .map(Province::getId)
                .collect(Collectors.toList());
        // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰åŸŽå¸‚
        List<City> allCities = cityMapper.selectList(
                new LambdaQueryWrapper<City>().in(City::getProvinceId, provinceIds));
        // å°†åŸŽå¸‚按省份ID分组
        Map<Long, List<City>> cityMap = allCities.stream()
                .collect(Collectors.groupingBy(City::getProvinceId));
        // èŽ·å–æ‰€æœ‰åŸŽå¸‚ID用于批量查询区域
        List<Long> cityIds = allCities.stream()
                .map(City::getId)
                .collect(Collectors.toList());
        // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰åŒºåŸŸ
        List<District> allDistricts = districtMapper.selectList(
                new LambdaQueryWrapper<District>().in(District::getCityId, cityIds));
        // å°†åŒºåŸŸæŒ‰åŸŽå¸‚ID分组
        Map<Long, List<District>> districtMap = allDistricts.stream()
                .collect(Collectors.groupingBy(District::getCityId));
        // æž„建树形结构
        for (Province province : provinces) {
            List<TreeSelectOption> cities = new ArrayList<>();
            List<City> cityList = cityMap.get(province.getId());
            if (cityList != null && !cityList.isEmpty()) {
            for (City city : cityList) {
                // æŸ¥è¯¢å¸‚下面的区
                List<District> districtList = districtMapper.selectList(new LambdaQueryWrapper<District>().eq(District::getCityId, city.getId()));
                List<TreeSelectOption> districts = new ArrayList<>();
                    List<District> districtList = districtMap.get(city.getId());
                    if (districtList != null && !districtList.isEmpty()) {
                for (District district : districtList) {
                    districts.add(new TreeSelectOption(district.getId().toString(), district.getName(), district.getId(), null));
                            districts.add(new TreeSelectOption(district.getId().toString(),
                                    district.getName(), district.getId(), null));
                        }
                }
                TreeSelectOption cityTreeSelectOption = new TreeSelectOption();
@@ -61,6 +100,7 @@
                cityTreeSelectOption.setChildren(districts);
                cities.add(cityTreeSelectOption);
                }
            }
            TreeSelectOption treeSelectOption = new TreeSelectOption();
@@ -74,6 +114,7 @@
        return res;
    }
    @Override
    public String getAreaDisplay(Long provinceId, Long cityId, Long districtId) {
        Province province = provinceMapper.selectById(provinceId);