ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -6,7 +6,8 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; @@ -18,17 +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.*; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.service.TErpGoodsService; 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; @@ -38,10 +37,14 @@ import javax.validation.Valid; import java.io.IOException; import java.io.InputStream; 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; /** * <p> @@ -59,11 +62,25 @@ private final TErpGoodsService erpGoodsService; 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) { 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; } @@ -127,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)); } @@ -179,19 +227,144 @@ JSONObject jsonObject = new JSONObject(); ImportParams params = new ImportParams(); params.setHeadRows(1); //表头行数 String msg = null; InputStream inputStream = null; TErpGoods goods = new TErpGoods(); ArrayList<String> names = new ArrayList<>(); ArrayList<TErpGoods> tErpGoods = new ArrayList<>(); try { inputStream = file.getInputStream(); List<TErpGoodsExcel> carAnnuallyImportExcels = ExcelImportUtil.importExcel(inputStream, TErpGoodsExcel.class, params); // 处理车辆数据 Set<String> collect = carAnnuallyImportExcels.stream().map(TErpGoodsExcel::getGoodsIdCode).collect(Collectors.toSet()); if (collect.size() != carAnnuallyImportExcels.size()) { return AjaxResult.error("导入数据中商品标识码重复"); } for (TErpGoodsExcel erpGoodsExcel : carAnnuallyImportExcels) { System.out.println(erpGoodsExcel); TErpGoods goods = new TErpGoods(); goods.setSupplierClinicId(user.getUserId().toString()); goods.setGoodsSource(1); // 判空 if(erpGoodsExcel.getGoodsName()==null || erpGoodsExcel.getGoodsName().isEmpty()){ names.add("商品名称不能为空"); continue; } if(erpGoodsExcel.getGoodsIdCode()==null || erpGoodsExcel.getGoodsIdCode().isEmpty() || erpGoodsExcel.getQuasiNumber() ==null || erpGoodsExcel.getQuasiNumber().isEmpty() || erpGoodsExcel.getManufacturer()==null || erpGoodsExcel.getManufacturer().isEmpty() || erpGoodsExcel.getFormulationSpec()==null || erpGoodsExcel.getFormulationSpec().isEmpty() || erpGoodsExcel.getPackingSpec()==null || erpGoodsExcel.getPackingSpec().isEmpty() || erpGoodsExcel.getClinicPurchasePrice()==null|| erpGoodsExcel.getClinicPurchasePrice().isEmpty() || erpGoodsExcel.getWarningInventory()==null|| erpGoodsExcel.getWarningInventory().isEmpty() || erpGoodsExcel.getTypeName()==null|| erpGoodsExcel.getTypeName().isEmpty()){ names.add(erpGoodsExcel.getGoodsName()+" :信息有误,请检查后重新提交。"); continue; } goods.setGoodsName(erpGoodsExcel.getGoodsName()); // 判断数据是否正确 // 判断标识码是否重复 long count = erpGoodsService.count(new QueryWrapper<TErpGoods>().eq("goods_id_code", erpGoodsExcel.getGoodsIdCode())); if(count>0){ names.add(erpGoodsExcel.getGoodsName() + " :标识码重复"); continue; } goods.setGoodsIdCode(erpGoodsExcel.getGoodsIdCode()); goods.setQuasiNumber(erpGoodsExcel.getQuasiNumber()); goods.setManufacturer(erpGoodsExcel.getManufacturer()); goods.setFormulationSpec(erpGoodsExcel.getFormulationSpec()); goods.setPackingSpec(erpGoodsExcel.getPackingSpec()); // 商品类型 TErpGoodsType one = erpGoodsTypeService.getOne(new LambdaQueryWrapper<TErpGoodsType>().eq(TErpGoodsType::getTypeName, erpGoodsExcel.getTypeName())); if(one==null){ names.add(erpGoodsExcel.getGoodsName() + " :商品类型不存在"); continue; } goods.setTypeId(one.getId()); // 采购价 try { goods.setClinicPurchasePrice(new BigDecimal(erpGoodsExcel.getClinicPurchasePrice()).setScale(2, RoundingMode.HALF_UP)); }catch (Exception e){ names.add(erpGoodsExcel.getGoodsName() + " :采购价有误"); continue; } // 预警库存 try { goods.setWarningInventory(Integer.valueOf(erpGoodsExcel.getWarningInventory())); }catch (Exception e){ names.add(erpGoodsExcel.getGoodsName() + " :预警库存有误"); continue; } goods.setGoodsYards(erpGoodsExcel.getGoodsYards()); try { if(erpGoodsExcel.getMaintenanceInterval()!=null && !erpGoodsExcel.getMaintenanceInterval().isEmpty()){ Integer i = Integer.valueOf(erpGoodsExcel.getMaintenanceInterval()); } }catch (Exception e){ names.add(erpGoodsExcel.getGoodsName() + " :保养周期有误"); continue; } goods.setMaintenanceInterval(erpGoodsExcel.getMaintenanceInterval()); try { if(erpGoodsExcel.getLowPurchaseQuantity()!=null && !erpGoodsExcel.getLowPurchaseQuantity().isEmpty()){ goods.setLowPurchaseQuantity(Integer.valueOf(erpGoodsExcel.getLowPurchaseQuantity())); } }catch (Exception e){ names.add(erpGoodsExcel.getGoodsName() + " :最低采购数量有误"); continue; } if(erpGoodsExcel.getLowUnitName()!=null && !erpGoodsExcel.getLowUnitName().isEmpty()){ TErpGoodsUnit one1 = erpGoodsUnitService.getOne(new LambdaQueryWrapper<TErpGoodsUnit>().eq(TErpGoodsUnit::getUnitName, erpGoodsExcel.getLowUnitName())); if (one1 == null) { names.add(erpGoodsExcel.getGoodsName() + " :最低采购单位有误"); continue; } goods.setLowUnitId(one1.getId()); } if(erpGoodsExcel.getIsPrescriptionDrug() !=null && !erpGoodsExcel.getIsPrescriptionDrug().isEmpty()){ if(erpGoodsExcel.getIsPrescriptionDrug().equals("是")){ goods.setIsPrescriptionDrug(1); }else if (erpGoodsExcel.getIsPrescriptionDrug().equals("否")){ goods.setIsPrescriptionDrug(2); }else { names.add(erpGoodsExcel.getGoodsName() + " :是否为处方药有误"); continue; } } if(erpGoodsExcel.getPackingUnitName() !=null && !erpGoodsExcel.getPackingUnitName().isEmpty()){ TErpGoodsUnit unit = erpGoodsUnitService.getOne(new LambdaQueryWrapper<TErpGoodsUnit>().eq(TErpGoodsUnit::getUnitName, erpGoodsExcel.getPackingUnitName())); if(unit != null){ goods.setPackingUnitId(unit.getId()); }else { names.add(erpGoodsExcel.getGoodsName() + " :包装单位有误"); continue; } } goods.setInstructionsUse(erpGoodsExcel.getInstructionsUse()); goods.setSideEffect(erpGoodsExcel.getSideEffect()); goods.setSimplifiedCode(erpGoodsExcel.getSimplifiedCode()); goods.setDosageForm(erpGoodsExcel.getDosageForm()); goods.setUsageClassification(erpGoodsExcel.getUsageClassification()); goods.setProductBrand(erpGoodsExcel.getProductBrand()); goods.setPlaceOfOrigin(erpGoodsExcel.getPlaceOfOrigin()); goods.setIngredient(erpGoodsExcel.getIngredient()); goods.setTrait(erpGoodsExcel.getTrait()); goods.setIndication(erpGoodsExcel.getIndication()); goods.setTaboo(erpGoodsExcel.getTaboo()); goods.setPrecautions(erpGoodsExcel.getPrecautions()); goods.setInteraction(erpGoodsExcel.getInteraction()); goods.setStorage(erpGoodsExcel.getStorage()); tErpGoods.add( goods); } } catch (Exception e) { e.printStackTrace(); return AjaxResult.error("车辆年检记录导入失败!"); return AjaxResult.error("记录导入失败!"); }finally { try { inputStream.close(); @@ -199,7 +372,11 @@ throw new ServiceException(e.getMessage()); } } return AjaxResult.success(jsonObject); if(names.size()>0){ return AjaxResult.error("导入失败记录如下:",names); } erpGoodsService.saveBatch(tErpGoods); return AjaxResult.success(); } 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/TErpSupplierWarehousingController.java
@@ -8,10 +8,12 @@ import com.ruoyi.system.dto.WarehousingGoodsDto; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpGoodsWarehouseQuery; import com.ruoyi.system.query.ValidityPeriodWarningQuery; import com.ruoyi.system.service.TErpSupplierWarehousingService; import com.ruoyi.system.vo.TErpGoodsVO; import com.ruoyi.system.vo.TErpGoodsWarehouseLastVO; import com.ruoyi.system.vo.TErpGoodsWarehouseRecordLastVO; import com.ruoyi.system.vo.ValidityPeriodWarningVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -82,5 +84,15 @@ } @ApiOperation(value = "有效期预警") @PostMapping(value = "/validityPeriodWarning") public R<PageInfo<ValidityPeriodWarningVo>> validityPeriodWarning(@RequestBody ValidityPeriodWarningQuery query) { SysUser user = tokenService.getLoginUser().getUser(); PageInfo<ValidityPeriodWarningVo> pageInfo =erpSupplierWarehousingService.validityPeriodWarning(query,user); return R.ok(pageInfo); } } 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-common/src/main/java/com/ruoyi/common/core/domain/BaseModel.java
@@ -66,7 +66,6 @@ * 新增执行 */ @ApiModelProperty(value = "记录创建人id,前端忽略") @JsonIgnore @TableField(value = "create_id", fill = FieldFill.INSERT) private String createId; ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java
@@ -42,12 +42,8 @@ @Excel(width = 30,name = "最低采购单位") private String lowUnitName; @Excel(width = 30,name = "是否为处方药",replace = {"1_是","2_否"}) @Excel(width = 30,name = "是否为处方药") private String isPrescriptionDrug; @ApiModelProperty(value = "商品规格") @TableField("goods_spec") private String goodsSpec; @Excel(width = 30,name = "*预警库存") 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/TErpSupplierWarehousingMapper.java
@@ -6,10 +6,13 @@ import com.ruoyi.system.model.TErpSupplierWarehousing; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpGoodsWarehouseQuery; import com.ruoyi.system.query.ValidityPeriodWarningQuery; import com.ruoyi.system.vo.TErpGoodsVO; import com.ruoyi.system.vo.TErpGoodsWarehouseRecordLastVO; import com.ruoyi.system.vo.ValidityPeriodWarningVo; import org.apache.ibatis.annotations.Param; import java.time.LocalDateTime; import java.util.List; /** @@ -25,4 +28,8 @@ List<TErpGoodsVO> pageList(@Param("query") TErpGoodsQuery query, @Param("pageInfo") PageInfo<TErpGoodsVO> pageInfo, @Param("user") SysUser user); List<TErpGoodsWarehouseRecordLastVO> pageWarehouseList(@Param("query") TErpGoodsWarehouseQuery query, @Param("pageInfo") PageInfo<TErpGoodsWarehouseRecordLastVO> pageInfo, @Param("user") SysUser user, @Param("sTime") String sTime, @Param("eTime") String eTime); PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(@Param("pageInfo") PageInfo<ValidityPeriodWarningVo> pageInfo, @Param("query") ValidityPeriodWarningQuery query, @Param("user") SysUser user, @Param("time") LocalDateTime nineMonthLater); } 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/TErpGoods.java
@@ -38,7 +38,7 @@ @ApiModelProperty(value = "商品来源 1=平台添加 2=线下添加") @TableField("goods_source") private String goodsSource; private Integer goodsSource; @ApiModelProperty(value = "商品名称") @TableField("goods_name") 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/TErpSupplierWarehousing.java
@@ -58,4 +58,8 @@ @TableField("total_price") private BigDecimal totalPrice; @ApiModelProperty(value = "入库单号") @TableField("warehousing_no") private String warehousingNo; } 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/query/ValidityPeriodWarningQuery.java
New file @@ -0,0 +1,26 @@ 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 = "有效期预警查询Query") public class ValidityPeriodWarningQuery extends BasePage { @ApiModelProperty(value = "药品名称") private String name; @ApiModelProperty(value = "类型id") private String typeId; @ApiModelProperty(value = "国药准字号") private String quasiNumber; @ApiModelProperty(value = "批次号") private String batchNumber; } 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/TErpSupplierWarehousingService.java
@@ -7,10 +7,8 @@ import com.ruoyi.system.model.TErpSupplierWarehousing; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpGoodsWarehouseQuery; import com.ruoyi.system.vo.TErpGoodsVO; import com.ruoyi.system.vo.TErpGoodsWarehouseLastVO; import com.ruoyi.system.vo.TErpGoodsWarehouseRecordLastVO; import com.ruoyi.system.vo.TErpGoodsWarehouseVO; import com.ruoyi.system.query.ValidityPeriodWarningQuery; import com.ruoyi.system.vo.*; import javax.validation.Valid; import java.util.List; @@ -33,4 +31,5 @@ void warehousingGoods(@Valid List<WarehousingGoodsDto> dtos, SysUser user); PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(ValidityPeriodWarningQuery query, SysUser user); } 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
@@ -3,23 +3,24 @@ 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.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.dto.WarehousingGoodsDto; import com.ruoyi.system.dto.WarehousingGoodsNextDto; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpGoodsWarehouseQuery; import com.ruoyi.system.query.ValidityPeriodWarningQuery; import com.ruoyi.system.service.TErpSupplierWarehousingService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.TErpGoodsVO; import com.ruoyi.system.vo.TErpGoodsWarehouseLastVO; import com.ruoyi.system.vo.TErpGoodsWarehouseRecordLastVO; import com.ruoyi.system.vo.TErpGoodsWarehouseVO; import com.ruoyi.system.vo.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -54,6 +55,9 @@ @Resource private TCrmWarehouseMapper crmWarehouseMapper; @Resource private TErpMaintenanceReminderMapper tErpMaintenanceReminderMapper; @Override @@ -189,6 +193,9 @@ public void warehousingGoods(List<WarehousingGoodsDto> dtos, SysUser user) { for (WarehousingGoodsDto dto : dtos) { TErpSupplierWarehousing tErpSupplierWarehousing = new TErpSupplierWarehousing(); // 当前年月日时分秒 String time = DateUtils.dateTimeNow(); tErpSupplierWarehousing.setWarehousingNo("G"+time); tErpSupplierWarehousing.setSupplierId(user.getUserId().toString()); tErpSupplierWarehousing.setWarehouseId(dto.getWarehouseId()); tErpSupplierWarehousing.setGoodsId(dto.getGoodsId()); @@ -207,8 +214,32 @@ 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); } } } } @Override public PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(ValidityPeriodWarningQuery query, SysUser user) { // 获取当前时间后9个月的时间 LocalDateTime nineMonthLater = LocalDateTime.now().plusMonths(9); PageInfo<ValidityPeriodWarningVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); return this.baseMapper.validityPeriodWarning(pageInfo,query,user,nineMonthLater); } } 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/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java
New file @@ -0,0 +1,43 @@ package com.ruoyi.system.vo; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @ApiModel(value = "有效期预警Vo") public class ValidityPeriodWarningVo { @ApiModelProperty(value = "入库单号") private String warehousingNo; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "商品类型名称") private String typeName; @ApiModelProperty(value = "国药准字号") private String quasiNumber; @ApiModelProperty(value = "批次号") private String batchNumber; @ApiModelProperty(value = "有效日期") private LocalDateTime expiryDate; @ApiModelProperty(value = "单位") private String packingUnitName; @ApiModelProperty(value = "商品id") private String goodsId; @ApiModelProperty(value = "数量") private Integer num; } 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/TErpSupplierWarehousingMapper.xml
@@ -98,4 +98,35 @@ </select> <select id="validityPeriodWarning" resultType="com.ruoyi.system.vo.ValidityPeriodWarningVo"> select t2.warehouse_no, t4.goods_name, t4.quasi_number, t1.batch_number, t1.expiry_date, t4.id as goodsId,t5.type_name,t6.unit_name packingUnitName, case when t3.id is null then t1.warehousing_number else t1.warehousing_number -t3.outbound_count end as num from t_erp_supplier_warehousing_batch t1 left join t_erp_supplier_warehousing t2 on t1.warehousing_id = t2.id LEFT JOIN t_erp_supplier_outbound_goods t3 on t3.warehousing_batch_id = t1.id LEFT JOIN t_erp_goods t4 on t2.goods_id = t4.id left join t_erp_goods_type t5 on t4.type_id = t5.id left join t_erp_goods_unit t6 on t4.packing_unit_id = t6.id where #{time} > t1.expiry_date and t2.supplier_id =#{user.userId} and (t1.warehousing_number - t3.outbound_count > 0 or t3.id is null) <if test="query.name != null and query.name != ''"> and t4.goods_name like concat('%',#{query.goodsName},'%') </if> <if test="query.quasiNumber != null and query.quasiNumber != ''"> and t4.quasi_number like concat('%',#{query.quasiNumber},'%') </if> <if test="query.batchNumber != null and query.batchNumber != ''"> and t1.batch_number like concat('%',#{query.batchNumber},'%') </if> <if test="query.typeId != null and query.typeId != ''"> and t4.type_id = #{query.typeId} </if> order by t1.expiry_date </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>