liujie
8 天以前 850042f2e7921d4034363da4bf0276ae1d6aef05
供应商erp
10个文件已修改
10个文件已添加
627 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -8,7 +8,6 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
@@ -20,21 +19,15 @@
import com.ruoyi.system.dto.TErpGoodsInfoSaveDto;
import com.ruoyi.system.dto.TErpGoodsUpdateStatusDto;
import com.ruoyi.system.importExcel.TErpGoodsExcel;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.model.TErpGoodsUnit;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpGoodsTypeService;
import com.ruoyi.system.service.TErpGoodsUnitService;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.web.controller.tool.ImportExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -47,9 +40,10 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -70,13 +64,23 @@
    private final TokenService tokenService;
    private final TErpGoodsTypeService erpGoodsTypeService;
    private final TErpGoodsUnitService erpGoodsUnitService;
    private final TErpSupplierWarehousingBatchService erpSupplierWarehousingBatchService;
    private final TErpSupplierWarehousingService erpSupplierWarehousingService;
    private final TErpSupplierOutboundGoodsService erpSupplierOutboundGoodsService;
    private final TErpMaintenanceReminderService erpMaintenanceReminderService;
    @Autowired
    public TErpGoodsController(TErpGoodsService erpGoodsService, TokenService tokenService, TErpGoodsTypeService erpGoodsTypeService, TErpGoodsUnitService erpGoodsUnitService) {
    public TErpGoodsController(TErpGoodsService erpGoodsService, TokenService tokenService, TErpGoodsTypeService erpGoodsTypeService, TErpGoodsUnitService erpGoodsUnitService,
                               TErpSupplierWarehousingBatchService erpSupplierWarehousingBatchService, TErpSupplierWarehousingService erpSupplierWarehousingService,
                               TErpSupplierOutboundGoodsService erpSupplierOutboundGoodsService, TErpMaintenanceReminderService erpMaintenanceReminderService) {
        this.erpGoodsService = erpGoodsService;
        this.tokenService = tokenService;
        this.erpGoodsTypeService = erpGoodsTypeService;
        this.erpGoodsUnitService = erpGoodsUnitService;
        this.erpSupplierWarehousingBatchService = erpSupplierWarehousingBatchService;
        this.erpSupplierWarehousingService = erpSupplierWarehousingService;
        this.erpSupplierOutboundGoodsService = erpSupplierOutboundGoodsService;
        this.erpMaintenanceReminderService = erpMaintenanceReminderService;
    }
@@ -140,8 +144,39 @@
    @ApiOperation(value = "供应商完善商品")
    @PostMapping(value = "/saveDataInfo")
    public R<Boolean> saveDataInfo(@RequestBody @Valid TErpGoodsInfoSaveDto dto) {
        SysUser user = tokenService.getLoginUser().getUser();
        TErpGoods goods = erpGoodsService.getById(dto.getId());
        BeanUtils.copyProperties(dto,goods);
        if(goods.getMaintenanceInterval()!=null){
            List<TErpSupplierWarehousing> list = erpSupplierWarehousingService.list(new LambdaQueryWrapper<TErpSupplierWarehousing>().eq(TErpSupplierWarehousing::getGoodsId, dto.getId()));
            if(!list.isEmpty()){
                List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchService.list(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().in(TErpSupplierWarehousingBatch::getWarehousingId, list.stream().map(TErpSupplierWarehousing::getId).collect(Collectors.toList())));
                for (TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch : tErpSupplierWarehousingBatches) {
                    List<TErpSupplierOutboundGoods> list1 = erpSupplierOutboundGoodsService.list(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getWarehousingBatchId, tErpSupplierWarehousingBatch.getId()));
                    if(!list1.isEmpty()){
                        int sum = list1.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
                        if (tErpSupplierWarehousingBatch.getWarehousingNumber()-sum>0) {
                            // 生成保养单
                            TErpMaintenanceReminder tErpMaintenanceReminder = new TErpMaintenanceReminder();
                            tErpMaintenanceReminder.setClinicSupplierId(user.getUserId().toString());
                            tErpMaintenanceReminder.setMaintenanceType(1);
                            tErpMaintenanceReminder.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
                            Integer day = Integer.valueOf(goods.getMaintenanceInterval());
                            // 当前时间+day天
                            LocalDateTime time1 = LocalDateTime.now().plusDays(day);
                            tErpMaintenanceReminder.setMaintenanceTime(time1);
                            erpMaintenanceReminderService.save(tErpMaintenanceReminder);
                        }
                    }
                }
            }
        }
        return R.ok(erpGoodsService.updateById(goods));
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -1,8 +1,21 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.service.TErpProcurementService;
import com.ruoyi.system.service.TErpSupplierWarehousingService;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.TErpProcurementDetailVo;
import com.ruoyi.system.vo.TErpProcurementVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
@@ -14,7 +27,39 @@
 */
@RestController
@RequestMapping("/t-erp-procurement")
@Api(tags = "erp采购管理")
public class TErpProcurementController {
    private final TErpProcurementService erpProcurementService;
    private final TokenService tokenService;
    @Autowired
    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService) {
        this.erpProcurementService = erpProcurementService;
        this.tokenService = tokenService;
    }
    /**
     * erp采购管理分页列表
     */
    @ApiOperation(value = "erp采购管理分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpProcurementVo>> pageList(@RequestBody TErpProcurementQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.pageList(query,user));
    }
    @ApiOperation(value = "erp采购管理详情")
    @GetMapping(value = "/detail")
    public R<TErpProcurementDetailVo> detail(@RequestParam String id, String goodsName) {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.detail(id,user,goodsName));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author administrator
 * @since 2025-09-09
 */
@RestController
@RequestMapping("/tSysCommission")
public class TSysCommissionController {
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
@@ -1,7 +1,14 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.vo.TErpProcurementVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +20,6 @@
 */
public interface TErpProcurementMapper extends BaseMapper<TErpProcurement> {
    List<TErpProcurementVo> pageList(@Param("query") TErpProcurementQuery query, @Param("pageInfo") PageInfo<TErpProcurementVo> pageInfo, @Param("user") SysUser user, @Param("sTime") String sTime, @Param("eTime") String eTime);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.model.TSysCommission;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author administrator
 * @since 2025-09-09
 */
public interface TSysCommissionMapper extends BaseMapper<TSysCommission> {
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java
@@ -38,9 +38,9 @@
    @TableField("maintenance_type")
    private Integer maintenanceType;
    @ApiModelProperty(value = "入库id")
    @TableField("warehousing_id")
    private String warehousingId;
    @ApiModelProperty(value = "入库批次id")
    @TableField("warehousing_batch_id")
    private String warehousingBatchId;
    @ApiModelProperty(value = "状态 1=未维护 2=已维护")
    @TableField("status")
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.model;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -54,5 +55,13 @@
    @TableField("status")
    private Integer status;
    @ApiModelProperty(value = "发送时间")
    @TableField("send_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime sendTime;
    @ApiModelProperty(value = "入库操作人")
    private String warehousingUserId;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java
@@ -70,4 +70,8 @@
    @TableField("total_price")
    private BigDecimal totalPrice;
    @ApiModelProperty(value = "供应商id")
    @TableField("supplier_id")
    private String supplierId;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java
New file
@@ -0,0 +1,56 @@
package com.ruoyi.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 *
 * </p>
 *
 * @author administrator
 * @since 2025-09-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_sys_commission")
public class TSysCommission extends Model<TSysCommission> {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;
    /**
     * 1平台 2供应商
     */
    private Integer type;
    /**
     * 平台0  其他供应商id
     */
    @TableField("object_id")
    private String objectId;
    /**
     * 分佣金额
     */
    private BigDecimal money;
    /**
     * t_erp_procurement_goods表id
     */
    @TableField("t_erp_procurement_goods_id")
    private String tErpProcurementGoodsId;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java
New file
@@ -0,0 +1,25 @@
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("采购Query")
public class TErpProcurementQuery extends BasePage {
    @ApiModelProperty(value = "采购单号")
    private String procurementCode;
    @ApiModelProperty(value = "诊所名称")
    private String clinicName;
    @ApiModelProperty(value = "时间 2022-02-02 - 2023-03-03")
    private String time;
    @ApiModelProperty(value = "发起人")
    private String userName;
    @ApiModelProperty(value = "状态 1=草稿 2=待支付 3=待发货 4=已发货 5=已入库 6=已取消")
    private Integer status;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.vo.TErpProcurementDetailVo;
import com.ruoyi.system.vo.TErpProcurementVo;
/**
 * <p>
@@ -13,4 +19,9 @@
 */
public interface TErpProcurementService extends IService<TErpProcurement> {
    PageInfo<TErpProcurementVo> pageList(TErpProcurementQuery query, SysUser user);
    TErpProcurementDetailVo detail(String id, SysUser user, String goodsName);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.model.TSysCommission;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author administrator
 * @since 2025-09-09
 */
public interface TSysCommissionService extends IService<TSysCommission> {
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -1,10 +1,25 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.mapper.TErpProcurementMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.service.TErpProcurementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.vo.TErpProcurementDetailNextVo;
import com.ruoyi.system.vo.TErpProcurementDetailVo;
import com.ruoyi.system.vo.TErpProcurementVo;
import com.ruoyi.system.vo.ValidityPeriodWarningVo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +32,111 @@
@Service
public class TErpProcurementServiceImpl extends ServiceImpl<TErpProcurementMapper, TErpProcurement> implements TErpProcurementService {
    @Resource
    private TErpProcurementGoodsMapper erpProcurementGoodsMapper;
    @Resource
    private TSysCommissionMapper sysCommissionMapper;
    @Resource
    private TCrmClinicMapper crmClinicMapper;
    @Resource
    private SysUserMapper sysUserMapper;
    @Override
    public PageInfo<TErpProcurementVo> pageList(TErpProcurementQuery query, SysUser user) {
        String sTime=null;
        String eTime =null;
        if(query.getTime()!=null && !query.getTime().isEmpty()){
            String[] split = query.getTime().split(" - ");
            sTime = split[0] + " 00:00:00";
            eTime = split[1] + " 23:59:59";
        }
        PageInfo<TErpProcurementVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpProcurementVo> list = this.baseMapper.pageList(query,pageInfo,user,sTime,eTime);
        if(list.isEmpty()){
            return pageInfo;
        }
        List<String> ids = list.stream().map(TErpProcurementVo::getId).collect(Collectors.toList());
        List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList(new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids).eq(TErpProcurementGoods::getSupplierId, user.getUserId()));
        List<TSysCommission> tSysCommissions =new ArrayList<>();
        if(!tErpProcurementGoods.isEmpty()){
            List<String> collect = tErpProcurementGoods.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList());
            tSysCommissions = sysCommissionMapper.selectList(new LambdaQueryWrapper<TSysCommission>().in(TSysCommission::getTErpProcurementGoodsId, collect));
        }
        for (TErpProcurementVo tErpProcurementVo : list) {
            List<TErpProcurementGoods> collect = tErpProcurementGoods.stream().filter(e -> e.getProcurementId().equals(tErpProcurementVo.getId())).collect(Collectors.toList());
            int size = collect.stream().map(TErpProcurementGoods::getGoodsId).collect(Collectors.toSet()).size();
            tErpProcurementVo.setTypeNum(size);
            BigDecimal reduce = collect.stream().map(TErpProcurementGoods::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            tErpProcurementVo.setTotalPrice(reduce);
            if(!collect.isEmpty()){
                List<String> collect1 = collect.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList());
                List<TSysCommission> collect2 = tSysCommissions.stream().filter(e -> collect1.contains(e.getTErpProcurementGoodsId())).collect(Collectors.toList());
                BigDecimal reduce1 = collect2.stream().filter(e->e.getType()==1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
                BigDecimal reduce2 = collect2.stream().filter(e->e.getType()==2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
                tErpProcurementVo.setPlatformMoney(reduce1);
                tErpProcurementVo.setSupplierMoney(reduce2);
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public TErpProcurementDetailVo detail(String id, SysUser user, String goodsName) {
        TErpProcurementDetailVo tErpProcurementVo = new TErpProcurementDetailVo();
        TErpProcurement tErpProcurement = this.getById(id);
        tErpProcurementVo.setId(id);
        tErpProcurementVo.setProcurementCode(tErpProcurement.getProcurementCode());
        tErpProcurementVo.setClinicId(tErpProcurement.getClinicId());
        TCrmClinic tCrmClinic = crmClinicMapper.selectById(tErpProcurement.getClinicId());
        tErpProcurementVo.setClinicName(tCrmClinic.getClinicName());
        tErpProcurementVo.setUserName(tCrmClinic.getPersonChargeName());
        SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getCreateId()));
        tErpProcurementVo.setUserName(sysUser.getNickName());
        tErpProcurementVo.setCreateTime(tErpProcurement.getCreateTime());
        tErpProcurementVo.setUpdateTime(tErpProcurement.getUpdateTime());
        if(tErpProcurement.getWarehousingUserId()!=null){
            SysUser sysUser1 = sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getWarehousingUserId()));
            tErpProcurementVo.setOperName(sysUser1.getNickName());
        }
        tErpProcurementVo.setStatus(tErpProcurement.getStatus());
        tErpProcurementVo.setSendTime(tErpProcurement.getSendTime());
        List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, id).like(goodsName != null && !goodsName.isEmpty(), TErpProcurementGoods::getGoodsName, goodsName).eq(TErpProcurementGoods::getSupplierId, user.getUserId()));
        if(tErpProcurementGoods.isEmpty()){
            return tErpProcurementVo;
        }
        ArrayList<TErpProcurementDetailNextVo> tErpProcurementDetailNextVos = new ArrayList<>();
        for (TErpProcurementGoods tErpProcurementGood : tErpProcurementGoods) {
            TErpProcurementDetailNextVo tErpProcurementDetailNextVo = new TErpProcurementDetailNextVo();
            tErpProcurementDetailNextVo.setGoodsName(tErpProcurementGood.getGoodsName());
            tErpProcurementDetailNextVo.setUnitName(tErpProcurementGood.getUnitName());
            tErpProcurementDetailNextVo.setNum(tErpProcurementGood.getPurchaseCount());
            tErpProcurementDetailNextVo.setTotalPrice(tErpProcurementGood.getTotalPrice());
            tErpProcurementDetailNextVo.setQuasiNumber(tErpProcurementGood.getQuasiNumber());
            List<TSysCommission> tSysCommissions = sysCommissionMapper.selectList(new LambdaQueryWrapper<TSysCommission>().eq(TSysCommission::getTErpProcurementGoodsId, tErpProcurementGood.getId()));
            if(!tSysCommissions.isEmpty()){
                BigDecimal reduce = tSysCommissions.stream().filter(e -> e.getType() == 1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
                tErpProcurementDetailNextVo.setPlatformMoney(reduce);
                BigDecimal reduce1 = tSysCommissions.stream().filter(e -> e.getType() == 2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
                tErpProcurementDetailNextVo.setSupplierMoney(reduce1);
            }
            tErpProcurementDetailNextVos.add(tErpProcurementDetailNextVo);
        }
        tErpProcurementVo.setList(tErpProcurementDetailNextVos);
        return tErpProcurementVo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java
@@ -56,6 +56,9 @@
    @Resource
    private TCrmWarehouseMapper crmWarehouseMapper;
    @Resource
    private TErpMaintenanceReminderMapper tErpMaintenanceReminderMapper;
    @Override
    public PageInfo<TErpGoodsVO> pageList(TErpGoodsQuery query, SysUser user) {
@@ -211,6 +214,19 @@
                tErpSupplierWarehousingBatch.setProductionDate(warehousingGoodsNextDto.getProductionDate().atStartOfDay());
                tErpSupplierWarehousingBatch.setExpiryDate(warehousingGoodsNextDto.getExpiryDate().atStartOfDay());
                erpSupplierWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch);
                if(goods.getMaintenanceInterval()!=null){
                    TErpMaintenanceReminder tErpMaintenanceReminder = new TErpMaintenanceReminder();
                    tErpMaintenanceReminder.setClinicSupplierId(user.getUserId().toString());
                    tErpMaintenanceReminder.setMaintenanceType(1);
                    tErpMaintenanceReminder.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
                    Integer day = Integer.valueOf(goods.getMaintenanceInterval());
                    // 当前时间+day天
                    LocalDateTime time1 = LocalDateTime.now().plusDays(day);
                    tErpMaintenanceReminder.setMaintenanceTime(time1);
                    tErpMaintenanceReminderMapper.insert(tErpMaintenanceReminder);
                }
            }
        }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.mapper.TSysCommissionMapper;
import com.ruoyi.system.model.TSysCommission;
import com.ruoyi.system.service.TSysCommissionService;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author administrator
 * @since 2025-09-09
 */
@Service
public class TSysCommissionServiceImpl extends ServiceImpl<TSysCommissionMapper, TSysCommission> implements TSysCommissionService {
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java
New file
@@ -0,0 +1,40 @@
package com.ruoyi.system.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "采购单二级Vo")
public class TErpProcurementDetailNextVo {
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "单位")
    private String unitName;
    @ApiModelProperty(value = "数量")
    private Integer num;
    @ApiModelProperty(value = "总价")
    private BigDecimal totalPrice=BigDecimal.ZERO;
    @ApiModelProperty(value = "供应商金额")
    private BigDecimal supplierMoney=BigDecimal.ZERO;
    @ApiModelProperty(value = "平台金额")
    private BigDecimal platformMoney=BigDecimal.ZERO;
    @ApiModelProperty(value = "国药准字号")
    private String quasiNumber;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java
New file
@@ -0,0 +1,46 @@
package com.ruoyi.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "采购单详情一级Vo")
public class TErpProcurementDetailVo {
    @ApiModelProperty(value = "采购单id")
    private String id;
    @ApiModelProperty(value = "采购单号")
    private String procurementCode;
    @ApiModelProperty(value = "诊所id")
    private String clinicId;
    @ApiModelProperty(value = "诊所名称")
    private String clinicName;
    @ApiModelProperty(value = "发起时间")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "发起人")
    private String userName;
    @ApiModelProperty(value = "操作人")
    private String operName;
    @ApiModelProperty(value = "操作时间")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "发货时间")
    private LocalDateTime sendTime;
    @ApiModelProperty(value = "状态 1=草稿 2=待支付 3=待发货 4=已发货 5=已入库 6=已取消")
    private Integer status;
    @ApiModelProperty(value = "采购单详情二级")
    private List<TErpProcurementDetailNextVo> list;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java
New file
@@ -0,0 +1,53 @@
package com.ruoyi.system.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "采购单Vo")
public class  TErpProcurementVo {
    @ApiModelProperty(value = "采购单id")
    private String id;
    @ApiModelProperty(value = "采购单号")
    private String procurementCode;
    @ApiModelProperty(value = "诊所id")
    private String clinicId;
    @ApiModelProperty(value = "诊所名称")
    private String clinicName;
    private Integer typeNum;
    @ApiModelProperty(value = "总价")
    private BigDecimal totalPrice=BigDecimal.ZERO;
    @ApiModelProperty(value = "供应商金额")
    private BigDecimal supplierMoney=BigDecimal.ZERO;
    @ApiModelProperty(value = "平台金额")
    private BigDecimal platformMoney=BigDecimal.ZERO;
    @ApiModelProperty(value = "发起时间")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "发起人")
    private String userName;
    @ApiModelProperty(value = "状态 1=草稿 2=待支付 3=待发货 4=已发货 5=已入库 6=已取消")
    private Integer status;
    private String tErpProcurementGoodsId;
}
ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
@@ -23,4 +23,38 @@
        id, clinic_id, procurement_code, pay_money, pay_number, pay_transaction_id, status, create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.vo.TErpProcurementVo">
        select t1.id,
               t1.procurement_code,
               t1.clinic_id,
               t3.clinic_name,
               sum(t2.total_price) as totalPrice,
               t1.create_time,
               t2.id                  tErpProcurementGoodsId,
               t4.user_name,
               t1.status
        from t_erp_procurement t1
                 left JOIN t_erp_procurement_goods t2 on t1.id = t2.procurement_id
                 LEFT JOIN t_crm_clinic t3 on t1.clinic_id = t3.id
                 left JOIN sys_user t4 on t1.create_id = t4.user_id
        where t1.disabled = 0 and t2.supplier_id =#{user.userId}
        <if test="query.procurementCode != null and query.procurementCode != ''">
            and t1.procurement_code = #{query.procurementCode}
        </if>
        <if test="query.clinicName != null and query.clinicName != ''">
            and t3.clinic_name like concat('%',#{query.clinicName},'%')
        </if>
        <if test="query.userName != null and query.userName != ''">
            and t4.user_name like concat('%',#{query.userName},'%')
        </if>
        <if test="query.status != null">
            and t1.status = #{query.status}
        </if>
        <if test="sTime != null">
            and t1.create_time between #{sTime} and #{eTime}
        </if>
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.TSysCommissionMapper">
</mapper>