From c8e080d65e26158ea62c98548a11e9aa75c2112e Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期五, 26 九月 2025 18:18:13 +0800 Subject: [PATCH] 诊所erp --- ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java | 3 ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml | 20 +++ ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java | 3 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java | 81 ++++++++++++- ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/dto/WarehouseGoodsDto.java | 17 ++ ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java | 7 ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/dto/AddSupplierGoodsDto.java | 10 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java | 25 ++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java | 37 ++++- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java | 70 ++++++++++- ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsVo.java | 51 ++++++++ 15 files changed, 303 insertions(+), 34 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java index d71dad2..60f6922 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java @@ -1,19 +1,19 @@ package com.ruoyi.web.controller.api; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.core.domain.BaseModel; 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.dto.ClinicOutboundGoodsDto; import com.ruoyi.system.dto.InventoryDto; +import com.ruoyi.system.dto.WarehouseGoodsDto; import com.ruoyi.system.dto.clinicWarehouseGoodsDto; -import com.ruoyi.system.model.TCrmClinic; -import com.ruoyi.system.model.TCrmSupplier; -import com.ruoyi.system.model.TErpClinicOutbound; -import com.ruoyi.system.model.TErpGoods; +import com.ruoyi.system.model.*; import com.ruoyi.system.query.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.*; @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -44,15 +45,21 @@ private final TokenService tokenService; private final TCrmClinicService crmClinicService; private final TCrmSupplierService crmSupplierService; + private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService; + private final TErpGoodsUnitService erpGoodsUnitService; + @Autowired public TErpClinicWarehousingController(TErpClinicWarehousingService erpClinicWarehousingService, TErpGoodsService erpGoodsService, TokenService tokenService, - TCrmClinicService crmClinicService,TCrmSupplierService crmSupplierService) { + TCrmClinicService crmClinicService,TCrmSupplierService crmSupplierService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService, + TErpGoodsUnitService erpGoodsUnitService) { this.erpClinicWarehousingService = erpClinicWarehousingService; this.erpGoodsService = erpGoodsService; this.tokenService = tokenService; this.crmClinicService = crmClinicService; this.crmSupplierService = crmSupplierService; + this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService; + this.erpGoodsUnitService = erpGoodsUnitService; } @@ -62,7 +69,7 @@ /** * 获取erp问题上报管理列表 */ - @ApiOperation(value = "展示获取库存分页列表") + @ApiOperation(value = "诊所 获取库存分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TErpGoodsVO>> pageList(@RequestBody TErpGoodsQuery query) { @@ -84,6 +91,33 @@ } return R.ok(erpClinicWarehousingService.pageList(query,user)); + } + + /** + * 获取erp问题上报管理列表 + */ + @ApiOperation(value = "诊所 获取库存库存不足") + @PostMapping(value = "/pageNotInventoryGoodsList") + public R<List<TErpGoodsVO>> pageNotInventoryGoodsList(@RequestBody TErpGoodsQuery query) { + + SysUser user = tokenService.getLoginUser().getUser(); + Integer roleType = user.getRoleType(); + if(roleType == 4){ + // 供应商 + TCrmSupplier crmSupplier = crmSupplierService.getOne(Wrappers.lambdaQuery(TCrmSupplier.class) + .eq(TCrmSupplier::getUserId, user.getUserId()) + .last("LIMIT 1")); + query.setSupplierClinicId(crmSupplier.getId()); + } + if(roleType == 5){ + // 诊所 + TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) + .eq(TCrmClinic::getUserId, user.getUserId()) + .last("LIMIT 1")); + query.setSupplierClinicId(crmClinic.getId()); + } + + return R.ok(erpClinicWarehousingService.pageList1(query,user)); } @@ -194,6 +228,9 @@ return R.ok(erpGoodsService.warehouseGoodsPageList(query,user,supplierClinicId)); } + + + @ApiOperation(value = "诊所 入库商品详情") @GetMapping(value = "/warehouseGoodsDetail/{id}") public R<WarehouseGoodsDetailVo> warehouseGoodsDetail(@PathVariable String id) { @@ -231,7 +268,7 @@ @ApiOperation(value = "诊所 入库商品操作") @PostMapping(value = "/warehouseGoods") - public R<?> warehouseGoods(@RequestBody @Valid List<clinicWarehouseGoodsDto> dtos) { + public R<?> warehouseGoods(@RequestBody @Valid WarehouseGoodsDto dto) { SysUser user = tokenService.getLoginUser().getUser(); Integer roleType = user.getRoleType(); String supplierClinicId =null; @@ -242,9 +279,37 @@ .last("LIMIT 1")); supplierClinicId = crmClinic.getId(); } - erpClinicWarehousingService.warehouseGoods(dtos,user,supplierClinicId); + erpClinicWarehousingService.warehouseGoods(dto,user,supplierClinicId); return R.ok(); } + @ApiOperation(value = "诊所 获取草稿") + @GetMapping(value = "/getWarehouseGoodsDraft") + public R<List<TErpClinicWarehousingBatch>> getWarehouseGoodsDraft() { + SysUser user = tokenService.getLoginUser().getUser(); + Integer roleType = user.getRoleType(); + String supplierClinicId =null; + ArrayList<TErpClinicWarehousingBatch> clinicWarehouseGoodsDtos = new ArrayList<>(); + if(roleType == 5){ + // 诊所 + TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) + .eq(TCrmClinic::getUserId, user.getUserId()) + .last("LIMIT 1")); + supplierClinicId = crmClinic.getId(); + List<TErpClinicWarehousing> list = erpClinicWarehousingService.list(new LambdaQueryWrapper<TErpClinicWarehousing>().eq(TErpClinicWarehousing::getClinicId, supplierClinicId).eq(TErpClinicWarehousing::getStatus, 1).orderByDesc(BaseModel::getCreateTime)); + if(list.isEmpty()){ + return R.ok(clinicWarehouseGoodsDtos); + } + List<TErpClinicWarehousingBatch> list1 = erpClinicWarehousingBatchService.list(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getWarehousingId, list.get(0).getId())); + for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : list1) { + String goodsId = tErpClinicWarehousingBatch.getGoodsId(); + TErpGoods tErpGoods = erpGoodsService.getOne(new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getId, goodsId)); + TErpGoodsUnit byId = erpGoodsUnitService.getById(tErpGoods.getPackingUnitId()); + tErpClinicWarehousingBatch.setUnitName(byId.getUnitName()); + } + return R.ok(list1); + } + return R.ok(clinicWarehouseGoodsDtos); + } 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 2e488d6..73441fe 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 @@ -116,12 +116,15 @@ } return R.ok(erpGoodsService.pageList(query,user)); } + + + /** * 获取erp问题上报管理列表 */ @ApiOperation(value = "诊所 一键获取商品分页列表") @PostMapping(value = "/pageAddList") - public R<Page<TErpGoods>> pageAddList(BasePage query) { + public R<Page<TErpGoods>> pageAddList(@RequestBody BasePage query) { SysUser user = tokenService.getLoginUser().getUser(); Integer roleType = user.getRoleType(); String clinicSupplierId=null; @@ -134,7 +137,7 @@ } Page<TErpGoods> tErpGoodsPage = new Page<>(query.getPageNum(), query.getPageSize()); - Page<TErpGoods> page = erpGoodsService.page(tErpGoodsPage, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last("and (NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids) or clinic_ids is null)")); + Page<TErpGoods> page = erpGoodsService.page(tErpGoodsPage, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(TErpGoods::getState,1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last("and (NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids) or clinic_ids is null)")); for (TErpGoods record : page.getRecords()) { TCrmSupplier byId = crmSupplierService.getById(record.getSupplierClinicId()); record.setSupplierName(byId.getSupplierName()); @@ -145,6 +148,45 @@ } return R.ok(page); + } + + /** + * 获取erp问题上报管理列表 + */ + @ApiOperation(value = "诊所 一键获取商品 获取全部") + @PostMapping(value = "/getAllGoodsList") + public R<?> getAllGoodsList() { + SysUser user = tokenService.getLoginUser().getUser(); + Integer roleType = user.getRoleType(); + String clinicSupplierId=null; + if(roleType == 5){ + // 诊所 + TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) + .eq(TCrmClinic::getUserId, user.getUserId()) + .last("LIMIT 1")); + clinicSupplierId = crmClinic.getId(); + } + + List<TErpGoods> list = erpGoodsService.list(new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(TErpGoods::getState,1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last("and (NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids) or clinic_ids is null)")); + for (TErpGoods goods : list) { + String clinicIds = goods.getClinicIds(); + if(clinicIds == null || clinicIds.isEmpty()){ + goods.setClinicIds(clinicSupplierId); + }else { + String[] split = clinicIds.split(","); + ArrayList<String> split1 = new ArrayList<>(); + for (String s : split) { + split1.add(s); + } + if(!split1.contains(clinicSupplierId)){ + split1.add(clinicSupplierId); + goods.setClinicIds(String.join(",",split1)); + } + } + + } + erpGoodsService.updateBatchById(list); + return R.ok(); } @@ -203,6 +245,7 @@ } goods.setCreateId(user.getUserId().toString()); goods.setGoodsIdCode(dto.getGoodsIdCode()); + goods.setClinicPurchasePrice(dto.getSalesAmount()); return R.ok(erpGoodsService.save(goods)); } @@ -266,9 +309,9 @@ @ApiOperation(value = "诊所 一键添加商品") @PostMapping(value = "/addSupplierGoods") - public R<Boolean> addSupplierGoods(String goodsIds) { - List<String> split = Arrays.asList(goodsIds.split(",")); - List<TErpGoods> list = erpGoodsService.list(new LambdaQueryWrapper<TErpGoods>().in(TErpGoods::getId, split)); + public R<Boolean> addSupplierGoods(@RequestBody AddSupplierGoodsDto dto) { +// List<String> split = Arrays.asList(goodsIds.split(",")); + List<TErpGoods> list = erpGoodsService.list(new LambdaQueryWrapper<TErpGoods>().in(TErpGoods::getId, dto.getGoodsIds())); SysUser user = tokenService.getLoginUser().getUser(); String cid = null; @@ -279,11 +322,20 @@ cid = crmClinic.getId(); for (TErpGoods goods : list) { String clinicIds = goods.getClinicIds(); - List<String> split1 = Arrays.asList(clinicIds.split(",")); - if(!split1.contains(cid)){ - split1.add(cid); - goods.setClinicIds(String.join(",",split1)); + if(clinicIds==null || clinicIds.isEmpty()){ + goods.setClinicIds( cid); + }else { + String[] split = clinicIds.split(","); + List<String> split1 = new ArrayList<>(); + for (String s : split) { + split1.add(s); + } + if(!split1.contains(cid)){ + split1.add(cid); + goods.setClinicIds(String.join(",",split1)); + } } + } erpGoodsService.updateBatchById(list); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddSupplierGoodsDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddSupplierGoodsDto.java new file mode 100644 index 0000000..b7f2909 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddSupplierGoodsDto.java @@ -0,0 +1,10 @@ +package com.ruoyi.system.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class AddSupplierGoodsDto { + private List<String> goodsIds; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/WarehouseGoodsDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/WarehouseGoodsDto.java new file mode 100644 index 0000000..9de8f77 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/WarehouseGoodsDto.java @@ -0,0 +1,17 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("诊所入库操作") +public class WarehouseGoodsDto { + @ApiModelProperty("1草稿") + private Integer status; + + @ApiModelProperty("商品信息") + private List<clinicWarehouseGoodsDto> dtos; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java index 4f83f55..eadd00e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java @@ -7,6 +7,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; @Data @@ -31,14 +32,14 @@ @ApiModelProperty(value = "生产日期") @NotNull(message = "生产日期不能为空") - private LocalDateTime productionDate; + private LocalDate productionDate; @ApiModelProperty(value = "有效日期") @NotNull(message = "有效日期不能为空") - private LocalDateTime expiryDate; + private LocalDate expiryDate; @ApiModelProperty(value = "供应商id") - @NotBlank(message = "供应商id不能为空") +// @NotBlank(message = "供应商id不能为空") private String supplierId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java index 9da2edc..1a85ba5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java @@ -33,6 +33,6 @@ List<TErpClinicOutboundPageListVO> outboundPageList(@Param("query") TClinicOutboundQuery query, @Param("pageInfo") PageInfo<TErpClinicOutboundPageListVO> pageInfo, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("sTime") String sTime, @Param("eTime") String eTime); - + List<TErpGoodsVO> pageList1(@Param("query") TErpGoodsQuery query, @Param("user") SysUser user); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java index 2be7174..307992a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java @@ -67,4 +67,7 @@ @ApiModelProperty(value = "盘点id") @TableField("inventory_id") private String inventoryId; + + @ApiModelProperty(value = "入库状态 1=草稿 2=正常") + private Integer status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java index 060d76c..10f81ec 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java @@ -29,6 +29,9 @@ @ApiModelProperty(value = "库存管理条件 不足传1") private Integer type; + @ApiModelProperty(value = "1入库 其他不传") + private Integer category; + @ApiModelProperty(value = "供应商id/诊所id") private String supplierClinicId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java index 6df47c1..e1b62e3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java @@ -5,6 +5,7 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.dto.ClinicOutboundGoodsDto; +import com.ruoyi.system.dto.WarehouseGoodsDto; import com.ruoyi.system.dto.clinicWarehouseGoodsDto; import com.ruoyi.system.model.TErpClinicWarehousing; import com.ruoyi.system.model.TErpGoods; @@ -38,9 +39,12 @@ PageInfo<TErpClinicOutboundPageListVO> outboundPageList(TClinicOutboundQuery query, SysUser user, String supplierClinicId); - void warehouseGoods(@Valid List<clinicWarehouseGoodsDto> dtos, SysUser user, String supplierClinicId); + void warehouseGoods(@Valid WarehouseGoodsDto dto, SysUser user, String supplierClinicId); void outboundGoods(@Valid ClinicOutboundGoodsDto dto, SysUser user, String supplierClinicId); + List<TErpGoodsVO> pageList1(TErpGoodsQuery query, SysUser user); + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java index e4436ef..4213712 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java @@ -72,4 +72,7 @@ OutboundGoodsDetailVo outboundGoodsDetail(String id); + PageInfo<TErpGoodsVO> pageList1(TErpGoodsQuery query, SysUser user); + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java index aafd7f6..fc7aad7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.dto.ClinicOutboundGoodsDto; import com.ruoyi.system.dto.OutboundGoodsNextDto; +import com.ruoyi.system.dto.WarehouseGoodsDto; import com.ruoyi.system.dto.clinicWarehouseGoodsDto; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.*; @@ -238,6 +239,24 @@ pageInfo.setRecords(list); return pageInfo; } + @Override + public List<TErpGoodsVO> pageList1(TErpGoodsQuery query, SysUser user) { + List<TErpGoodsVO> list = this.baseMapper.pageList1(query,user); + if(list.isEmpty()){ + return list; + } + + + List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); + if(!typeIds.isEmpty()){ + List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); + for (TErpGoodsVO tErpGoodsVO : list) { + typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); + tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); + } + } + return list; + } @Override public PageInfo<TErpClinicWarehousePageListVO> warehousePageList(TClinicWarehouseQuery query, SysUser user, String supplierClinicId) { @@ -282,31 +301,29 @@ } @Override - public void warehouseGoods(List<clinicWarehouseGoodsDto> dtos, SysUser user, String supplierClinicId) { + public void warehouseGoods(WarehouseGoodsDto dtos, SysUser user, String supplierClinicId) { // dtos根据供应商分组 - Map<String, List<clinicWarehouseGoodsDto>> collect = dtos.stream().collect(Collectors.groupingBy(clinicWarehouseGoodsDto::getSupplierId)); +// Map<String, List<clinicWarehouseGoodsDto>> collect = dtos.stream().collect(Collectors.groupingBy(clinicWarehouseGoodsDto::getSupplierId)); - for (Map.Entry<String, List<clinicWarehouseGoodsDto>> stringListEntry : collect.entrySet()) { - String key = stringListEntry.getKey(); - List<clinicWarehouseGoodsDto> value = stringListEntry.getValue(); +// for (Map.Entry<String, List<clinicWarehouseGoodsDto>> stringListEntry : collect.entrySet()) { TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing(); tErpClinicWarehousing.setClinicId(supplierClinicId); tErpClinicWarehousing.setCreateId(user.getUserId().toString()); tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow()); tErpClinicWarehousing.setCreateTime(LocalDateTime.now()); - tErpClinicWarehousing.setSupplierId(key); tErpClinicWarehousing.setType(3); + tErpClinicWarehousing.setStatus(dtos.getStatus()); this.save(tErpClinicWarehousing); BigDecimal totalPrice = new BigDecimal(0); - for (clinicWarehouseGoodsDto dto : value) { + for (clinicWarehouseGoodsDto dto : dtos.getDtos()) { TErpClinicWarehousingBatch tErpClinicWarehousingBatch = new TErpClinicWarehousingBatch(); tErpClinicWarehousingBatch.setWarehousingId(tErpClinicWarehousing.getId()); tErpClinicWarehousingBatch.setWarehousingNumber(dto.getPurchaseCount()); tErpClinicWarehousingBatch.setBatchNumber(dto.getBatchNumber()); - tErpClinicWarehousingBatch.setProductionDate(dto.getProductionDate()); - tErpClinicWarehousingBatch.setExpiryDate(dto.getExpiryDate()); + tErpClinicWarehousingBatch.setProductionDate(dto.getProductionDate().atStartOfDay()); + tErpClinicWarehousingBatch.setExpiryDate(dto.getExpiryDate().atStartOfDay()); tErpClinicWarehousingBatch.setGoodsId(dto.getId()); TErpGoods goods = erpGoodsMapper.selectById(dto.getId()); tErpClinicWarehousingBatch.setGoodsName(goods.getGoodsName()); @@ -324,7 +341,7 @@ tErpClinicWarehousing.setTotalPrice(totalPrice); this.updateById(tErpClinicWarehousing); - } +// } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java index aa6e797..075277f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java @@ -101,6 +101,31 @@ typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); } } + List<String> collect = list.stream().filter(e -> e.getGoodsSource() == 1).map(TErpGoods::getSupplierClinicId).collect(Collectors.toList()); + if (!collect.isEmpty()) { + List<TCrmSupplier> crmClinics = crmSupplierMapper.selectBatchIds(collect); + for (TErpGoodsVO tErpGoodsVO : list) { + crmClinics.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName())); + } + } + + pageInfo.setRecords(list); + return pageInfo; + } + @Override + public PageInfo<TErpGoodsVO> pageList1(TErpGoodsQuery query, SysUser user) { + PageInfo<TErpGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TErpGoodsVO> list = this.baseMapper.pageList(query, pageInfo, user); + if (list.isEmpty()) { + return pageInfo; + } + List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); + if (!typeIds.isEmpty()) { + List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); + for (TErpGoodsVO tErpGoodsVO : list) { + typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); + } + } pageInfo.setRecords(list); return pageInfo; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsVo.java new file mode 100644 index 0000000..2b03118 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsVo.java @@ -0,0 +1,51 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@ApiModel("诊所 商品入库vo") +public class WarehouseGoodsVo { + @ApiModelProperty(value = "商品id") + private String id; + + @ApiModelProperty(value = "单价") + private BigDecimal unitAmount; + + @ApiModelProperty(value = "销售价格") + private BigDecimal salesAmount; + + @ApiModelProperty(value = "采购数量") + @NotNull(message = "采购数量不能为空") + private Integer purchaseCount; + + @ApiModelProperty(value = "批次号") + @NotBlank(message = "批次号不能为空") + private String batchNumber; + + @ApiModelProperty(value = "生产日期") + @NotNull(message = "生产日期不能为空") + private LocalDateTime productionDate; + + @ApiModelProperty(value = "有效日期") + @NotNull(message = "有效日期不能为空") + private LocalDateTime expiryDate; + + @ApiModelProperty(value = "供应商id") +// @NotBlank(message = "供应商id不能为空") + private String supplierId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "国药准字号") + private String quasiNumber; + + +} diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml index 2b2ffd7..f198f29 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml @@ -108,7 +108,7 @@ <if test="user.roleType != null and user.roleType == 4 "> and t1.goods_source =1 and t1.supplier_clinic_id =#{query.supplierClinicId} </if> - <if test="user.roleType != null and user.roleType == 5 "> + <if test="user.roleType != null and user.roleType == 5"> and ( ( t1.goods_source =2 and t1.supplier_clinic_id =#{query.supplierClinicId} ) or find_in_set(#{query.supplierClinicId},t1.clinic_ids) ) </if> GROUP BY t1.id @@ -157,5 +157,23 @@ </if> order by t1.create_time desc </select> + <select id="pageList1" resultType="com.ruoyi.system.vo.TErpGoodsVO"> + select * from ( + select <include refid="Base_Column_List1"/> + COALESCE(sum(t2.purchase_count), 0) - COALESCE(sum(t3.outbound_count), 0) as allNum, + SUM(t2.unit_amount * (t2.purchase_count - COALESCE(t3.outbound_count, 0))) as allTotalPrice, + + COALESCE(sum(t3.outbound_count), 0) as outNum + from t_erp_goods t1 left join t_erp_clinic_warehousing_batch t2 on t1.id = t2.goods_id + left join t_erp_clinic_outbound_goods t3 on t2.id = t3.warehousing_id + where t1.disabled = 0 and t2.id is not null + and t1.goods_source =2 and t1.supplier_clinic_id =#{query.supplierClinicId} + GROUP BY t1.id + ) o where 1=1 + <if test="query.type != null and query.type ==1"> + and o.warning_inventory > (o.allNum-o.outNum) + </if> + order by o.create_time desc + </select> </mapper> diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml index 5105d6d..3a8f164 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml @@ -50,7 +50,7 @@ taboo, precautions, interaction, -storage +storage,supplier_name </sql> <select id="pageList" resultType="com.ruoyi.system.vo.TErpGoodsVO"> -- Gitblit v1.7.1