xuhy
2025-08-25 9bffc39e222d057c6ae7b268f2791628e4a42637
平台erp问题上报
16个文件已修改
5个文件已添加
685 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsTypeController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsUnitController.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpIssueReportingController.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpIssueReportingProcessDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsTypeMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsUnitMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpIssueReportingMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpIssueReporting.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsTypeQuery.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsUnitQuery.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpIssueReportingQuery.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsTypeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsUnitService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpIssueReportingService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsTypeServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsUnitServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpIssueReportingServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpIssueReportingVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpGoodsTypeMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpGoodsUnitMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpIssueReportingMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsTypeController.java
@@ -1,8 +1,24 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpGoodsTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * <p>
@@ -12,9 +28,102 @@
 * @author xiaochen
 * @since 2025-08-20
 */
@Api(tags = "erp商品类型")
@RestController
@RequestMapping("/t-erp-goods-type")
public class TErpGoodsTypeController {
    private final TErpGoodsTypeService erpGoodsTypeService;
    private final TErpGoodsService erpGoodsService;
    @Autowired
    public TErpGoodsTypeController(TErpGoodsTypeService erpGoodsTypeService, TErpGoodsService erpGoodsService) {
        this.erpGoodsTypeService = erpGoodsTypeService;
        this.erpGoodsService = erpGoodsService;
    }
    /**
     * 获取erp商品类型管理列表
     */
    @ApiOperation(value = "获取erp商品类型分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpGoodsType>> pageList(@RequestBody TErpGoodsTypeQuery query) {
        return R.ok(erpGoodsTypeService.pageList(query));
    }
    /**
     * 获取erp商品类型管理列表
     */
    @ApiOperation(value = "获取erp商品类型列表")
    @PostMapping(value = "/list")
    public R<List<TErpGoodsType>> list() {
        return R.ok(erpGoodsTypeService.list(Wrappers.lambdaQuery(TErpGoodsType.class).orderByDesc(TErpGoodsType::getCreateTime)));
    }
    /**
     * 添加erp商品类型管理
     */
    @Log(title = "erp商品类型信息-新增erp商品类型", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加erp商品类型")
    @PostMapping(value = "/add")
    public R<Boolean> add(@Validated @RequestBody TErpGoodsType dto) {
        if (erpGoodsTypeService.isExit(dto)) {
            return R.fail("erp商品类型名称已存在");
        }
        return R.ok(erpGoodsTypeService.save(dto));
    }
    /**
     * 修改erp商品类型
     */
    @Log(title = "erp商品类型信息-修改erp商品类型", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "修改erp商品类型")
    @PostMapping(value = "/update")
    public R<Boolean> update(@Validated @RequestBody TErpGoodsType dto) {
        if (erpGoodsTypeService.isExit(dto)) {
            return R.fail("erp商品类型名称已存在");
        }
        return R.ok(erpGoodsTypeService.updateById(dto));
    }
    /**
     * 查看erp商品类型详情
     */
    @ApiOperation(value = "查看erp商品类型详情")
    @GetMapping(value = "/getDetailById")
    public R<TErpGoodsType> getDetailById(@RequestParam String id) {
        return R.ok(erpGoodsTypeService.getById(id));
    }
    /**
     * 删除erp商品类型
     */
    @Log(title = "erp商品类型信息-删除erp商品类型", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除erp商品类型")
    @DeleteMapping(value = "/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        long count = erpGoodsService.count(Wrappers.lambdaQuery(TErpGoods.class).eq(TErpGoods::getTypeId, id));
        if (count>0) {
            return R.fail("该商品分类下有商品,无法删除");
        }
        return R.ok(erpGoodsTypeService.removeById(id));
    }
    /**
     * 批量删除erp商品类型
     */
    @Log(title = "erp商品类型信息-删除erp商品类型", businessType = BusinessType.DELETE)
    @ApiOperation(value = "批量删除erp商品类型")
    @DeleteMapping(value = "/deleteByIds")
    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
        List<TErpGoods> items = erpGoodsService.list(Wrappers.lambdaQuery(TErpGoods.class).in(TErpGoods::getTypeId, ids));
        for (String id : ids) {
            if (items.stream().anyMatch(t -> t.getTypeId().equals(id))) {
                TErpGoodsType itemType = erpGoodsTypeService.getById(id);
                return R.fail("该商品分类["+itemType.getTypeName()+"]下有商品,无法删除");
            }
        }
        return R.ok(erpGoodsTypeService.removeByIds(ids));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsUnitController.java
@@ -1,8 +1,23 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpGoodsUnit;
import com.ruoyi.system.query.TErpGoodsUnitQuery;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpGoodsUnitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * <p>
@@ -12,9 +27,102 @@
 * @author xiaochen
 * @since 2025-08-20
 */
@Api(tags = "erp商品单位管理")
@RestController
@RequestMapping("/t-erp-goods-unit")
public class TErpGoodsUnitController {
    private final TErpGoodsUnitService erpGoodsUnitService;
    private final TErpGoodsService erpGoodsService;
    @Autowired
    public TErpGoodsUnitController(TErpGoodsUnitService erpGoodsUnitService, TErpGoodsService erpGoodsService) {
        this.erpGoodsUnitService = erpGoodsUnitService;
        this.erpGoodsService = erpGoodsService;
    }
    /**
     * 获取erp商品单位管理列表
     */
    @ApiOperation(value = "获取erp商品单位分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpGoodsUnit>> pageList(@RequestBody TErpGoodsUnitQuery query) {
        return R.ok(erpGoodsUnitService.pageList(query));
    }
    /**
     * 获取erp商品单位管理列表
     */
    @ApiOperation(value = "获取erp商品单位列表")
    @PostMapping(value = "/list")
    public R<List<TErpGoodsUnit>> list() {
        return R.ok(erpGoodsUnitService.list(Wrappers.lambdaQuery(TErpGoodsUnit.class).orderByDesc(TErpGoodsUnit::getCreateTime)));
    }
    /**
     * 添加erp商品单位管理
     */
    @Log(title = "erp商品单位信息-新增erp商品单位", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加erp商品单位")
    @PostMapping(value = "/add")
    public R<Boolean> add(@Validated @RequestBody TErpGoodsUnit dto) {
        if (erpGoodsUnitService.isExit(dto)) {
            return R.fail("erp商品单位名称已存在");
        }
        return R.ok(erpGoodsUnitService.save(dto));
    }
    /**
     * 修改erp商品单位
     */
    @Log(title = "erp商品单位信息-修改erp商品单位", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "修改erp商品单位")
    @PostMapping(value = "/update")
    public R<Boolean> update(@Validated @RequestBody TErpGoodsUnit dto) {
        if (erpGoodsUnitService.isExit(dto)) {
            return R.fail("erp商品单位名称已存在");
        }
        return R.ok(erpGoodsUnitService.updateById(dto));
    }
    /**
     * 查看erp商品单位详情
     */
    @ApiOperation(value = "查看erp商品单位详情")
    @GetMapping(value = "/getDetailById")
    public R<TErpGoodsUnit> getDetailById(@RequestParam String id) {
        return R.ok(erpGoodsUnitService.getById(id));
    }
    /**
     * 删除erp商品单位
     */
    @Log(title = "erp商品单位信息-删除erp商品单位", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除erp商品单位")
    @DeleteMapping(value = "/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        long count = erpGoodsService.count(Wrappers.lambdaQuery(TErpGoods.class).eq(TErpGoods::getTypeId, id));
        if (count>0) {
            return R.fail("该商品单位下有商品,无法删除");
        }
        return R.ok(erpGoodsUnitService.removeById(id));
    }
    /**
     * 批量删除erp商品单位
     */
    @Log(title = "erp商品单位信息-删除erp商品单位", businessType = BusinessType.DELETE)
    @ApiOperation(value = "批量删除erp商品单位")
    @DeleteMapping(value = "/deleteByIds")
    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
        List<TErpGoods> items = erpGoodsService.list(Wrappers.lambdaQuery(TErpGoods.class).in(TErpGoods::getTypeId, ids));
        for (String id : ids) {
            if (items.stream().anyMatch(t -> t.getTypeId().equals(id))) {
                TErpGoodsUnit itemType = erpGoodsUnitService.getById(id);
                return R.fail("该商品单位["+itemType.getUnitName()+"]下有商品,无法删除");
            }
        }
        return R.ok(erpGoodsUnitService.removeByIds(ids));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpIssueReportingController.java
@@ -1,8 +1,32 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TErpIssueReportingProcessDTO;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpIssueReporting;
import com.ruoyi.system.query.TErpIssueReportingQuery;
import com.ruoyi.system.service.TCrmClinicService;
import com.ruoyi.system.service.TCrmSupplierService;
import com.ruoyi.system.service.TErpIssueReportingService;
import com.ruoyi.system.vo.TErpIssueReportingVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -12,9 +36,111 @@
 * @author xiaochen
 * @since 2025-08-20
 */
@Api(tags = "erp问题上报")
@RestController
@RequestMapping("/t-erp-issue-reporting")
public class TErpIssueReportingController {
    private final TErpIssueReportingService erpIssueReportingService;
    private final TCrmClinicService crmClinicService;
    private final TCrmSupplierService crmSupplierService;
    private final TokenService tokenService;
    @Autowired
    public TErpIssueReportingController(TErpIssueReportingService erpIssueReportingService, TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TokenService tokenService) {
        this.erpIssueReportingService = erpIssueReportingService;
        this.crmClinicService = crmClinicService;
        this.crmSupplierService = crmSupplierService;
        this.tokenService = tokenService;
    }
    /**
     * 获取erp问题上报管理列表
     */
    @ApiOperation(value = "获取erp问题上报分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpIssueReportingVO>> pageList(@RequestBody TErpIssueReportingQuery query) {
        return R.ok(erpIssueReportingService.pageList(query));
    }
    /**
     * 添加erp问题上报管理
     */
    @Log(title = "erp问题上报信息-新增erp问题上报", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加erp问题上报")
    @PostMapping(value = "/add")
    public R<Boolean> add(@Validated @RequestBody TErpIssueReporting dto) {
        return R.ok(erpIssueReportingService.save(dto));
    }
    /**
     * 修改erp问题上报
     */
    @Log(title = "erp问题上报信息-修改erp问题上报", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "修改erp问题上报")
    @PostMapping(value = "/update")
    public R<Boolean> update(@Validated @RequestBody TErpIssueReporting dto) {
        return R.ok(erpIssueReportingService.updateById(dto));
    }
    /**
     * 查看erp问题上报详情
     */
    @ApiOperation(value = "查看erp问题上报详情")
    @GetMapping(value = "/getDetailById")
    public R<TErpIssueReportingVO> getDetailById(@RequestParam String id) {
        TErpIssueReporting erpIssueReporting = erpIssueReportingService.getById(id);
        TErpIssueReportingVO issueReportingVO = new TErpIssueReportingVO();
        BeanUtils.copyProperties(erpIssueReporting, issueReportingVO);
        if (erpIssueReporting.getReportType() == 1) {
            TCrmSupplier crmSupplier = crmSupplierService.getById(erpIssueReporting.getReportUserId());
            if (Objects.nonNull(crmSupplier)){
                issueReportingVO.setSupplierClinicName(crmSupplier.getSupplierName());
            }
        } else {
            TCrmClinic crmClinic = crmClinicService.getById(erpIssueReporting.getReportUserId());
            if (Objects.nonNull(crmClinic)){
                issueReportingVO.setSupplierClinicName(crmClinic.getClinicName());
            }
        }
        return R.ok(issueReportingVO);
    }
    /**
     * 删除erp问题上报
     */
    @Log(title = "erp问题上报信息-删除erp问题上报", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除erp问题上报")
    @DeleteMapping(value = "/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        return R.ok(erpIssueReportingService.removeById(id));
    }
    /**
     * 批量删除erp问题上报
     */
    @Log(title = "erp问题上报信息-删除erp问题上报", businessType = BusinessType.DELETE)
    @ApiOperation(value = "批量删除erp问题上报")
    @DeleteMapping(value = "/deleteByIds")
    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
        return R.ok(erpIssueReportingService.removeByIds(ids));
    }
    /**
     * 修改erp问题上报
     */
    @Log(title = "erp问题上报信息-erp问题上报处理", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "erp问题上报处理")
    @PostMapping(value = "/process")
    public R<Boolean> process(@Validated @RequestBody TErpIssueReportingProcessDTO dto) {
        // 获取当前登录人
        String nickName = tokenService.getLoginUser().getUser().getNickName();
        TErpIssueReporting erpIssueReporting = erpIssueReportingService.getById(dto.getId());
        erpIssueReporting.setStatus(2);
        erpIssueReporting.setHandlerPerson(nickName);
        erpIssueReporting.setHandlerTime(LocalDateTime.now());
        erpIssueReporting.setHandlerContent(dto.getHandlerContent());
        erpIssueReportingService.updateById(erpIssueReporting);
        return R.ok();
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpIssueReportingProcessDTO.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "erp问题上报处理信息DTO")
public class TErpIssueReportingProcessDTO implements Serializable {
    @ApiModelProperty(value = "id")
    private String id;
    @ApiModelProperty(value = "处理内容")
    private String handlerContent;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsTypeMapper.java
@@ -1,7 +1,12 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +18,12 @@
 */
public interface TErpGoodsTypeMapper extends BaseMapper<TErpGoodsType> {
    /**
     * 分页查询
     * @param query 查询参数
     * @param pageInfo 分页参数
     * @return
     */
    List<TErpGoodsType> pageList(@Param("query") TErpGoodsTypeQuery query, @Param("pageInfo")PageInfo<TErpGoodsType> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsUnitMapper.java
@@ -1,7 +1,12 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpGoodsUnit;
import com.ruoyi.system.query.TErpGoodsUnitQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +18,12 @@
 */
public interface TErpGoodsUnitMapper extends BaseMapper<TErpGoodsUnit> {
    /**
     * 分页查询
     * @param query 查询参数
     * @param pageInfo 分页参数
     * @return
     */
    List<TErpGoodsUnit> pageList(@Param("query") TErpGoodsUnitQuery query, @Param("pageInfo")PageInfo<TErpGoodsUnit> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpIssueReportingMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpIssueReporting;
import com.ruoyi.system.query.TErpIssueReportingQuery;
import com.ruoyi.system.vo.TErpIssueReportingVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,11 @@
 */
public interface TErpIssueReportingMapper extends BaseMapper<TErpIssueReporting> {
    /**
     * 分页列表
     * @param query
     * @param pageInfo
     * @return
     */
    List<TErpIssueReportingVO> pageList(@Param("query") TErpIssueReportingQuery query, @Param("pageInfo")PageInfo<TErpIssueReportingVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpIssueReporting.java
@@ -53,5 +53,16 @@
    @TableField("report_user_id")
    private String reportUserId;
    @ApiModelProperty(value = "处理人")
    @TableField("handler_person")
    private String handlerPerson;
    @ApiModelProperty(value = "处理时间")
    @TableField("handler_time")
    private LocalDateTime handlerTime;
    @ApiModelProperty(value = "处理内容")
    @TableField("handler_content")
    private String handlerContent;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsTypeQuery.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.system.query;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp商品类型信息查询参数query")
public class TErpGoodsTypeQuery extends BasePage {
    @ApiModelProperty(value = "类型名称")
    private String typeName;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsUnitQuery.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp商品单位信息查询参数query")
public class TErpGoodsUnitQuery extends BasePage {
    @ApiModelProperty(value = "单位名称")
    private String unitName;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpIssueReportingQuery.java
New file
@@ -0,0 +1,30 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.model.TimeRangeQueryBody;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp问题上报信息查询参数query")
public class TErpIssueReportingQuery extends TimeRangeQueryBody {
    @ApiModelProperty(value = "问题标题")
    private String problemTitle;
    @ApiModelProperty(value = "处理状态 1=已处理 2=未处理")
    private Integer status;
    @ApiModelProperty(value = "上报类型 1=供应商 2=诊所")
    private Integer reportType;
    @ApiModelProperty(value = "上报人")
    private String createBy;
    @ApiModelProperty(value = "上报开始时间")
    private String reportStartTime;
    @ApiModelProperty(value = "上报结束时间")
    private String reportEndTime;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsTypeService.java
@@ -1,7 +1,9 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
/**
 * <p>
@@ -12,5 +14,17 @@
 * @since 2025-08-20
 */
public interface TErpGoodsTypeService extends IService<TErpGoodsType> {
    /**
     * 判断分类是否存在
     * @param dto
     * @return
     */
    boolean isExit(TErpGoodsType dto);
    /**
     * 获取erp商品类型分页列表
     * @param query
     * @return
     */
    PageInfo<TErpGoodsType> pageList(TErpGoodsTypeQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsUnitService.java
@@ -1,7 +1,10 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.model.TErpGoodsUnit;
import com.ruoyi.system.query.TErpGoodsUnitQuery;
/**
 * <p>
@@ -12,5 +15,17 @@
 * @since 2025-08-20
 */
public interface TErpGoodsUnitService extends IService<TErpGoodsUnit> {
    /**
     * 判断分类是否存在
     * @param dto
     * @return
     */
    boolean isExit(TErpGoodsUnit dto);
    /**
     * 获取erp商品单位分页列表
     * @param query
     * @return
     */
    PageInfo<TErpGoodsUnit> pageList(TErpGoodsUnitQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpIssueReportingService.java
@@ -1,7 +1,10 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TErpIssueReporting;
import com.ruoyi.system.query.TErpIssueReportingQuery;
import com.ruoyi.system.vo.TErpIssueReportingVO;
/**
 * <p>
@@ -13,4 +16,10 @@
 */
public interface TErpIssueReportingService extends IService<TErpIssueReporting> {
    /**
     * 分页列表
     * @param query
     * @return
     */
    PageInfo<TErpIssueReportingVO> pageList(TErpIssueReportingQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsTypeServiceImpl.java
@@ -1,10 +1,16 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.mapper.TErpGoodsTypeMapper;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
import com.ruoyi.system.service.TErpGoodsTypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -16,5 +22,22 @@
 */
@Service
public class TErpGoodsTypeServiceImpl extends ServiceImpl<TErpGoodsTypeMapper, TErpGoodsType> implements TErpGoodsTypeService {
    @Override
    public boolean isExit(TErpGoodsType dto) {
        if(StringUtils.isNotEmpty(dto.getId())){
            // 修改
            return this.count(Wrappers.lambdaQuery(TErpGoodsType.class).ne(TErpGoodsType::getId, dto.getId()).eq(TErpGoodsType::getTypeName, dto.getTypeName())) > 0;
        }else {
            // 新增
            return this.count(Wrappers.lambdaQuery(TErpGoodsType.class).eq(TErpGoodsType::getTypeName, dto.getTypeName())) > 0;
        }
    }
    @Override
    public PageInfo<TErpGoodsType> pageList(TErpGoodsTypeQuery query) {
        PageInfo<TErpGoodsType> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpGoodsType> list = this.baseMapper.pageList(query,pageInfo);
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsUnitServiceImpl.java
@@ -1,10 +1,18 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.model.TErpGoodsUnit;
import com.ruoyi.system.mapper.TErpGoodsUnitMapper;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
import com.ruoyi.system.query.TErpGoodsUnitQuery;
import com.ruoyi.system.service.TErpGoodsUnitService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -16,5 +24,22 @@
 */
@Service
public class TErpGoodsUnitServiceImpl extends ServiceImpl<TErpGoodsUnitMapper, TErpGoodsUnit> implements TErpGoodsUnitService {
    @Override
    public boolean isExit(TErpGoodsUnit dto) {
        if(StringUtils.isNotEmpty(dto.getId())){
            // 修改
            return this.count(Wrappers.lambdaQuery(TErpGoodsUnit.class).ne(TErpGoodsUnit::getId, dto.getId()).eq(TErpGoodsUnit::getUnitName, dto.getUnitName())) > 0;
        }else {
            // 新增
            return this.count(Wrappers.lambdaQuery(TErpGoodsUnit.class).eq(TErpGoodsUnit::getUnitName, dto.getUnitName())) > 0;
        }
    }
    @Override
    public PageInfo<TErpGoodsUnit> pageList(TErpGoodsUnitQuery query) {
        PageInfo<TErpGoodsUnit> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpGoodsUnit> list = this.baseMapper.pageList(query,pageInfo);
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpIssueReportingServiceImpl.java
@@ -1,10 +1,23 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.mapper.TCrmClinicMapper;
import com.ruoyi.system.mapper.TCrmSupplierMapper;
import com.ruoyi.system.mapper.TErpIssueReportingMapper;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.model.TErpIssueReporting;
import com.ruoyi.system.query.TErpIssueReportingQuery;
import com.ruoyi.system.service.TErpIssueReportingService;
import com.ruoyi.system.vo.TErpIssueReportingVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +30,31 @@
@Service
public class TErpIssueReportingServiceImpl extends ServiceImpl<TErpIssueReportingMapper, TErpIssueReporting> implements TErpIssueReportingService {
    @Autowired
    private TCrmSupplierMapper crmSupplierMapper;
    @Autowired
    private TCrmClinicMapper crmClinicMapper;
    @Override
    public PageInfo<TErpIssueReportingVO> pageList(TErpIssueReportingQuery query) {
        PageInfo<TErpIssueReportingVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpIssueReportingVO> list = this.baseMapper.pageList(query,pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return pageInfo;
        }
        List<String> reportUserIds = list.stream().map(TErpIssueReportingVO::getReportUserId).collect(Collectors.toList());
        List<TCrmSupplier> crmSuppliers = crmSupplierMapper.selectBatchIds(reportUserIds);
        List<TCrmClinic> crmClinics = crmClinicMapper.selectBatchIds(reportUserIds);
        for (TErpIssueReportingVO tErpIssueReportingVO : list) {
            switch (tErpIssueReportingVO.getReportType()) {
                case 1:
                    crmSuppliers.stream().filter(t -> t.getId().equals(tErpIssueReportingVO.getReportUserId())).findFirst().ifPresent(t -> tErpIssueReportingVO.setSupplierClinicName(t.getSupplierName()));
                    break;
                case 2:
                    crmClinics.stream().filter(t -> t.getId().equals(tErpIssueReportingVO.getReportUserId())).findFirst().ifPresent(t -> tErpIssueReportingVO.setSupplierClinicName(t.getClinicName()));
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpIssueReportingVO.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.system.vo;
import com.ruoyi.system.model.TErpIssueReporting;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "问题上报VO")
public class TErpIssueReportingVO extends TErpIssueReporting {
    @ApiModelProperty(value = "供应商/诊所名称")
    private String supplierClinicName;
}
ruoyi-system/src/main/resources/mapper/system/TErpGoodsTypeMapper.xml
@@ -17,5 +17,17 @@
    <sql id="Base_Column_List">
        id, type_name, create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.model.TErpGoodsType">
        SELECT
        <include refid="Base_Column_List"/>
            FROM t_erp_goods_type
        <where>
            <if test="query.typeName != null and query.typeName != ''">
                AND type_name LIKE concat('%',#{query.typeName},'%')
            </if>
            AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        ORDER BY create_time DESC
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TErpGoodsUnitMapper.xml
@@ -17,5 +17,17 @@
    <sql id="Base_Column_List">
        id, unit_name, create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.model.TErpGoodsUnit">
        select
        <include refid="Base_Column_List" />
            from t_erp_goods_unit
        <where>
            <if test="query.unitName != null and query.unitName != ''">
                AND unit_name LIKE concat('%',#{query.unitName},'%')
            </if>
            AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        ORDER BY create_time DESC
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TErpIssueReportingMapper.xml
@@ -11,6 +11,9 @@
        <result column="status" property="status" />
        <result column="report_type" property="reportType" />
        <result column="report_user_id" property="reportUserId" />
        <result column="handler_person" property="handlerPerson" />
        <result column="handler_time" property="handlerTime" />
        <result column="handler_content" property="handlerContent" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="create_by" property="createBy" />
@@ -20,7 +23,37 @@
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, problem_title, report_content, pictures, status, report_type, report_user_id, create_time, update_time, create_by, update_by, disabled
        id, problem_title, report_content, pictures, status, report_type, report_user_id,handler_person,handler_time, handler_content,
          create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.vo.TErpIssueReportingVO">
        SELECT
        <include refid="Base_Column_List"/>
            FROM t_erp_issue_reporting
        <where>
            <if test="query.problemTitle != null and query.problemTitle != ''">
                AND problem_title LIKE concat('%',#{query.problemTitle},'%')
            </if>
            <if test="query.status != null">
                AND status = #{query.status}
            </if>
            <if test="query.reportType != null">
                AND report_type = #{query.reportType}
            </if>
            <if test="query.createBy != null and query.createBy != ''">
                AND create_by LIKE concat('%',#{query.createBy},'%')
            </if>
            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
                AND handler_time &gt;= #{query.startTime}
                AND handler_time &lt;= #{query.endTime}
            </if>
            <if test="query.reportStartTime != null and query.reportStartTime != '' and query.reportEndTime != null and query.reportEndTime != ''">
                AND create_time &gt;= #{query.startTime}
                AND create_time &lt;= #{query.endTime}
            </if>
            AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        ORDER BY create_time DESC
    </select>
</mapper>