From eb23b15acb15aae43b336ecf5ffb2053bcf85464 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期二, 09 九月 2025 18:05:14 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java | 126 +++++++ ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java | 40 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java | 11 ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java | 25 + ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java | 53 +++ ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpSupplierWarehousingService.java | 7 ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml | 34 ++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java | 17 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpSupplierWarehousingMapper.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java | 9 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java | 21 + ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java | 17 + ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml | 6 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java | 49 ++ ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java | 56 +++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java | 21 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java | 9 ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java | 43 ++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java | 12 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java | 4 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseModel.java | 1 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java | 39 ++ ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java | 207 ++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/query/ValidityPeriodWarningQuery.java | 26 + ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml | 31 + ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java | 46 ++ 30 files changed, 898 insertions(+), 37 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java index fe94611..d81f78a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java +++ b/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(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java index 233b807..6135d0b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java +++ b/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)); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java index 78ddfa9..4495912 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java +++ b/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); + } + + } + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java new file mode 100644 index 0000000..4ae78c0 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysCommissionController.java @@ -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 { + +} + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseModel.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseModel.java index 3c572e0..08bed43 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseModel.java +++ b/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; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java index 2590d67..39b3bf4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java +++ b/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 = "*预警库存") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java index 75af99a..df29c41 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java +++ b/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); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpSupplierWarehousingMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpSupplierWarehousingMapper.java index 4daebc3..2256448 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpSupplierWarehousingMapper.java +++ b/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); + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java new file mode 100644 index 0000000..f95f72c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCommissionMapper.java @@ -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> { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java index 9cf22fa..972de08 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java +++ b/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") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java index d4f56a2..e63f9d4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpMaintenanceReminder.java +++ b/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") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java index 4d4f876..0a17cc6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurement.java +++ b/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; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java index ad5f93b..66df2ab 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpProcurementGoods.java +++ b/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; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java index 263e2c4..4bcdb15 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java +++ b/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; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java new file mode 100644 index 0000000..1d89fc1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCommission.java @@ -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; + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java new file mode 100644 index 0000000..53c4055 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpProcurementQuery.java @@ -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; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/ValidityPeriodWarningQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/ValidityPeriodWarningQuery.java new file mode 100644 index 0000000..4328f15 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ValidityPeriodWarningQuery.java @@ -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; + + +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java index 6e88e97..72200b5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java +++ b/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); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpSupplierWarehousingService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpSupplierWarehousingService.java index 7a6edc7..11fa1af 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpSupplierWarehousingService.java +++ b/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); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java new file mode 100644 index 0000000..8b44170 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCommissionService.java @@ -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> { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java index bfd7ff3..cf61923 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java +++ b/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; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java index 0c2b4a6..3b84b01 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java +++ b/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); + + + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java new file mode 100644 index 0000000..b321310 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCommissionServiceImpl.java @@ -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 { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java new file mode 100644 index 0000000..2676f39 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailNextVo.java @@ -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; + + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java new file mode 100644 index 0000000..c34fedc --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementDetailVo.java @@ -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; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java new file mode 100644 index 0000000..3f3a9b5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java new file mode 100644 index 0000000..7725db5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java @@ -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; +} diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml index 68df0ab..16d82e0 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml +++ b/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> diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml index b75a335..961f9dd 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml +++ b/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> diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml new file mode 100644 index 0000000..2f7cd9e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/TSysCommissionMapper.xml @@ -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> -- Gitblit v1.7.1