This commit is contained in:
LiJianZhao 2025-05-08 16:06:34 +08:00
parent 9ac00fe203
commit 518812e177
8 changed files with 337 additions and 60 deletions

View File

@ -0,0 +1,27 @@
package com.syjiaer.clinic.server.common.enums;
public enum ChrgitmLvEnum {
ONE("01", ""),
TWO("02", ""),
THREE("03", "");
private final String code;
private final String name;
ChrgitmLvEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static ChrgitmLvEnum getChrgitmLvEnumByCode(String code) {
for (ChrgitmLvEnum chrgitmLvEnum : ChrgitmLvEnum.values()) {
if (chrgitmLvEnum.getCode().equals(code)) {
return chrgitmLvEnum;
}
}
return null;
}
}

View File

@ -11,6 +11,7 @@ import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.goods.GoodsView; import com.syjiaer.clinic.server.entity.goods.GoodsView;
import com.syjiaer.clinic.server.entity.goods.dto.GoodsQuery; import com.syjiaer.clinic.server.entity.goods.dto.GoodsQuery;
import com.syjiaer.clinic.server.entity.goods.vo.GoodsDetailVo; import com.syjiaer.clinic.server.entity.goods.vo.GoodsDetailVo;
import com.syjiaer.clinic.server.entity.goods.vo.GoodsSearchVo;
import com.syjiaer.clinic.server.service.goods.GoodsService; import com.syjiaer.clinic.server.service.goods.GoodsService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -101,10 +102,10 @@ public class GoodsController extends BaseController {
* 商品搜索 一键建档内的搜索 * 商品搜索 一键建档内的搜索
*/ */
@RequestMapping("search") @RequestMapping("search")
public Result<Object> search() { public Result<List<GoodsSearchVo>> search() {
Map<String, Object> parms = getParms(); Map<String, Object> parms = getParms();
String keyword = (String) parms.get("keyword"); String keyword = (String) parms.get("keyword");
List<Goods> searchResult = goodsService.search(keyword);; List<GoodsSearchVo> searchResult = goodsService.search(keyword);;
return success(searchResult); return success(searchResult);
} }

View File

@ -5,6 +5,7 @@ import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.item.vo.ItemSearchVo;
import com.syjiaer.clinic.server.service.item.ItemService; import com.syjiaer.clinic.server.service.item.ItemService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -60,7 +61,7 @@ public class ItemController extends BaseController {
} }
@RequestMapping("/search") @RequestMapping("/search")
public Result<List<Item>> search() { public Result<List<ItemSearchVo>> search() {
String keyword = parmsUtil.getString("keyword"); String keyword = parmsUtil.getString("keyword");
return success(itemService.search(keyword)); return success(itemService.search(keyword));

View File

@ -0,0 +1,124 @@
package com.syjiaer.clinic.server.entity.goods.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class GoodsSearchVo {
@ApiModelProperty("自增主键")
private Integer id;
@ApiModelProperty("商品名称")
private String name;
@ApiModelProperty("商品类型")
private Integer type;
@ApiModelProperty("通用名")
private String commonName;
@ApiModelProperty("医保目录编码")
private String hilistCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("进货价")
private BigDecimal purchaseUnitPrice;
@ApiModelProperty("生厂商")
private String producer;
@ApiModelProperty("条形码")
private String barcode;
@ApiModelProperty("最小制剂单位")
private String medicineDosageUnit;
@ApiModelProperty("最小包装数量")
private Integer minPackagingNumber;
@ApiModelProperty("最小包装单位")
private String minPackagingUnit;
@ApiModelProperty("保质期")
private Integer expiryTime;
@ApiModelProperty("国药准字")
private String approvalCode;
@ApiModelProperty("拓展字段")
private String extra;
@ApiModelProperty("分类ID")
private Integer cateId;
@ApiModelProperty("软删除 1为删除")
private Integer deleted;
@ApiModelProperty("利润分类")
private String profitCate;
@ApiModelProperty("标签")
private String tags;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("利率")
private Double interestRate;
@ApiModelProperty("库存整数量 ")
private Integer inventoryWholeNumber;
@ApiModelProperty("标识码 由追溯码生成")
private String idCode;
@ApiModelProperty("库存分数量")
private Integer inventoryFragmentNumber;
@ApiModelProperty("0不允许拆零 1允许拆零")
private Boolean trdnFlag;
@ApiModelProperty("拆零价格")
private BigDecimal disassemblyPrice;
@ApiModelProperty("最小制剂数量")
private String medicineDosageNum;
@ApiModelProperty("包装单位")
private String packagingUnit;
@ApiModelProperty("售卖模式")
private Integer pricingModel;
@ApiModelProperty("加成率 30=30%")
private Integer makeUp;
@ApiModelProperty("0禁售 1可售")
private Boolean status;
@ApiModelProperty("库存预警数量")
private Integer inventoryWarnNumber;
@ApiModelProperty("到期预警天数")
private Integer expiryWarnDays;
@ApiModelProperty("使用次数")
private Integer useNum;
@ApiModelProperty("全拼")
private String pinyinFull;
@ApiModelProperty("拼音首字母")
private String pinyinFirst;
@ApiModelProperty("甲乙丙类")
private String category;
@ApiModelProperty("限制条件")
private String limit;
@ApiModelProperty("库存")
private String inventory;
}

View File

@ -0,0 +1,60 @@
package com.syjiaer.clinic.server.entity.item.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ItemSearchVo {
@ApiModelProperty("自增主键")
private Integer id;
@ApiModelProperty("项目创建时间")
private LocalDateTime createDatetime;
@ApiModelProperty("项目创建人")
private String createBy;
@ApiModelProperty("项目修改时间")
private LocalDateTime updateDatetime;
@ApiModelProperty("项目修改人")
private String updateBy;
@ApiModelProperty("项目名称")
private String itemName;
@ApiModelProperty("项目医保目录编码")
private String itemSocialCode;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("售价")
private BigDecimal unitPrice;
@ApiModelProperty("进货价")
private BigDecimal purchaseUnitPrice;
@ApiModelProperty("逻辑删除")
private Integer delFlag;
@ApiModelProperty("使用次数")
private Integer useNum;
@ApiModelProperty("全拼")
private String pinyinFull;
@ApiModelProperty("拼音首字母")
private String pinyinFirst;
@ApiModelProperty("甲乙丙类")
private String chrgitmLv;
@ApiModelProperty("限制条件")
private String limit;
}

View File

@ -7,6 +7,7 @@ import com.syjiaer.clinic.server.common.api.input.IM3501;
import com.syjiaer.clinic.server.common.api.input.IM3502; import com.syjiaer.clinic.server.common.api.input.IM3502;
import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.ChrgitmLvEnum;
import com.syjiaer.clinic.server.common.enums.GoodsPricingModelEnum; import com.syjiaer.clinic.server.common.enums.GoodsPricingModelEnum;
import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum; import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum;
import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum;
@ -16,11 +17,14 @@ import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.goods.dto.GoodsQuery; import com.syjiaer.clinic.server.entity.goods.dto.GoodsQuery;
import com.syjiaer.clinic.server.entity.goods.vo.GoodsDetailVo; import com.syjiaer.clinic.server.entity.goods.vo.GoodsDetailVo;
import com.syjiaer.clinic.server.entity.goods.vo.GoodsSearchVo;
import com.syjiaer.clinic.server.entity.inventory.Inventory; import com.syjiaer.clinic.server.entity.inventory.Inventory;
import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.social.SocialDirectoryUpinfo;
import com.syjiaer.clinic.server.entity.social.vo.SocialDirectoryView; import com.syjiaer.clinic.server.entity.social.vo.SocialDirectoryView;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper;
import com.syjiaer.clinic.server.mapper.social.SocialDirectoryUpinfoMapper;
import com.syjiaer.clinic.server.service.social.SocialDirectoryService; import com.syjiaer.clinic.server.service.social.SocialDirectoryService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -43,6 +47,9 @@ public class GoodsService {
private InventoryMapper inventoryMapper; private InventoryMapper inventoryMapper;
@Autowired @Autowired
private SocialDirectoryService socialDirectoryService; private SocialDirectoryService socialDirectoryService;
@Autowired
private SocialDirectoryUpinfoMapper socialDirectoryUpinfoMapper;
/* /*
* 新建商品 * 新建商品
* @param goods 商品信息 * @param goods 商品信息
@ -93,6 +100,7 @@ public class GoodsService {
} }
return goods; return goods;
} }
/* /*
* 重新初始化医保库存 * 重新初始化医保库存
*/ */
@ -104,6 +112,7 @@ public class GoodsService {
// 重新初始化医保库存 // 重新初始化医保库存
requestReturnInit(goods); requestReturnInit(goods);
} }
/* /*
* 重新初始化医保库存 * 重新初始化医保库存
* @param goods 商品信息 * @param goods 商品信息
@ -156,6 +165,7 @@ public class GoodsService {
.setCnt(number); .setCnt(number);
socialRequest.call3502(im3502); socialRequest.call3502(im3502);
} }
/* /*
* 获取商品详情 * 获取商品详情
* @param goodsQuery 商品查询条件 * @param goodsQuery 商品查询条件
@ -239,6 +249,7 @@ public class GoodsService {
result.setTotal_page(page.getTotal_page()); result.setTotal_page(page.getTotal_page());
return result; return result;
} }
/* /*
* 分页查询商品 * 分页查询商品
* @param goodsQuery 查询条件 * @param goodsQuery 查询条件
@ -258,11 +269,12 @@ public class GoodsService {
page.setTotal_page(totalPage); page.setTotal_page(totalPage);
return page; return page;
} }
/* /*
* 根据关键字搜索商品 * 根据关键字搜索商品
* @param keyword 关键字 * @param keyword 关键字
*/ */
public List<Goods> search(String keyword) { public List<GoodsSearchVo> search(String keyword) {
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>(); QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
if (keyword != null && !keyword.isEmpty()) { if (keyword != null && !keyword.isEmpty()) {
@ -281,9 +293,31 @@ public class GoodsService {
} }
queryWrapper.orderByDesc("use_num"); queryWrapper.orderByDesc("use_num");
queryWrapper.last("limit 20"); queryWrapper.last("limit 20");
return goodsMapper.selectList(queryWrapper);
List<Goods> list = goodsMapper.selectList(queryWrapper);
List<GoodsSearchVo> goodsSearchVoList = new ArrayList<>();
for (Goods goods : list) {
GoodsSearchVo goodsSearchVo = new GoodsSearchVo();
BeanUtils.copyProperties(goods, goodsSearchVo);
String inventory = goods.getInventoryWholeNumber() +goods.getPackagingUnit();
if (goods.getInventoryFragmentNumber() != 0){
inventory += goods.getInventoryFragmentNumber() + goods.getMinPackagingNumber();
} }
goodsSearchVo.setInventory(inventory);
SocialDirectoryUpinfo socialDirectoryUpinfo = socialDirectoryUpinfoMapper.selectByCode(goods.getHilistCode());
if (socialDirectoryUpinfo != null) {
ChrgitmLvEnum chrgitmLvEnum = ChrgitmLvEnum.getChrgitmLvEnumByCode(socialDirectoryUpinfo.getChrgitmLv());
goodsSearchVo.setCategory(chrgitmLvEnum == null ? null : chrgitmLvEnum.getName());
}
goodsSearchVoList.add(goodsSearchVo);
}
return goodsSearchVoList;
}
/* /*
* 根据id获取商品信息 * 根据id获取商品信息
* @param id 商品id * @param id 商品id
@ -295,6 +329,7 @@ public class GoodsService {
} }
return goods; return goods;
} }
/* /*
* 添加标识码 * 添加标识码
* 参数 goodsId 商品ID * 参数 goodsId 商品ID
@ -321,6 +356,7 @@ public class GoodsService {
updateGoods.setIdCode(String.join(",", idCodeList)); updateGoods.setIdCode(String.join(",", idCodeList));
goodsMapper.updateById(updateGoods); goodsMapper.updateById(updateGoods);
} }
/* /*
* 获取二级分类绑定的商品数量 * 获取二级分类绑定的商品数量
* 参数 cateId 二级分类ID * 参数 cateId 二级分类ID
@ -331,6 +367,7 @@ public class GoodsService {
return goodsMapper.selectCount(queryWrapper); return goodsMapper.selectCount(queryWrapper);
} }
/* /*
* 更新商品库存信息 * 更新商品库存信息
* 参数 id 商品ID * 参数 id 商品ID
@ -371,6 +408,7 @@ public class GoodsService {
/** /**
* 根据id查询goods * 根据id查询goods
*
* @param goodsId 商品id * @param goodsId 商品id
* @return 商品 * @return 商品
*/ */

View File

@ -2,26 +2,37 @@ package com.syjiaer.clinic.server.service.item;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.syjiaer.clinic.server.common.enums.ChrgitmLvEnum;
import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.PinYinUtil; import com.syjiaer.clinic.server.common.util.PinYinUtil;
import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.goods.vo.GoodsSearchVo;
import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.item.vo.ItemSearchVo;
import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.manager.ManagerUser;
import com.syjiaer.clinic.server.entity.social.SocialDiagnose; import com.syjiaer.clinic.server.entity.social.SocialDiagnose;
import com.syjiaer.clinic.server.entity.social.SocialDirectoryUpinfo;
import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper;
import com.syjiaer.clinic.server.mapper.social.SocialDirectoryUpinfoMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
public class ItemService extends BaseService { public class ItemService extends BaseService {
@Autowired @Autowired
private ItemMapper itemMapper; private ItemMapper itemMapper;
@Autowired
private SocialDirectoryUpinfoMapper socialDirectoryUpinfoMapper;
/* /*
* 获取项目列表 * 获取项目列表
* @param pageNum 页码 * @param pageNum 页码
@ -40,6 +51,7 @@ public class ItemService extends BaseService {
queryWrapper.eq("del_flag", 0); queryWrapper.eq("del_flag", 0);
return pageHelper(pageNum, pageSize, queryWrapper, itemMapper, "create_datetime", false); return pageHelper(pageNum, pageSize, queryWrapper, itemMapper, "create_datetime", false);
} }
/* /*
* 根据id获取项目信息 * 根据id获取项目信息
* @param id 项目id * @param id 项目id
@ -47,6 +59,7 @@ public class ItemService extends BaseService {
public Item get(int id) { public Item get(int id) {
return itemMapper.selectById(id); return itemMapper.selectById(id);
} }
/* /*
* 创建项目 * 创建项目
* @param item 项目信息 * @param item 项目信息
@ -94,7 +107,8 @@ public class ItemService extends BaseService {
updateItem.setDelFlag(1); updateItem.setDelFlag(1);
itemMapper.updateById(updateItem); itemMapper.updateById(updateItem);
} }
public List<Item> search(String keyword){
public List<ItemSearchVo> search(String keyword) {
QueryWrapper<Item> queryWrapper = new QueryWrapper<>(); QueryWrapper<Item> queryWrapper = new QueryWrapper<>();
if (keyword != null && !keyword.isEmpty()) { if (keyword != null && !keyword.isEmpty()) {
String upperKeyword = keyword.toUpperCase(); String upperKeyword = keyword.toUpperCase();
@ -105,7 +119,19 @@ public class ItemService extends BaseService {
} }
queryWrapper.orderByDesc("use_num", "update_datetime"); queryWrapper.orderByDesc("use_num", "update_datetime");
queryWrapper.last("limit 20"); queryWrapper.last("limit 20");
return itemMapper.selectList(queryWrapper); List<Item> items = itemMapper.selectList(queryWrapper);
List<ItemSearchVo> itemSearchVos = new ArrayList<>();
for (Item item : items) {
ItemSearchVo itemSearchVo = new ItemSearchVo();
BeanUtils.copyProperties(item, itemSearchVo);
SocialDirectoryUpinfo socialDirectoryUpinfo = socialDirectoryUpinfoMapper.selectByCode(item.getItemSocialCode());
if (socialDirectoryUpinfo != null) {
ChrgitmLvEnum chrgitmLvEnum = ChrgitmLvEnum.getChrgitmLvEnumByCode(socialDirectoryUpinfo.getChrgitmLv());
itemSearchVo.setChrgitmLv(chrgitmLvEnum == null ? null : chrgitmLvEnum.getName());
}
itemSearchVos.add(itemSearchVo);
}
return itemSearchVos;
} }
/* /*

View File

@ -93,7 +93,7 @@ public class SocialDiagnoseService extends BaseService {
.or().like("pinyin_first", key)); .or().like("pinyin_first", key));
} }
queryWrapper.orderByDesc("use_num","id"); queryWrapper.orderByDesc("use_num","id");
queryWrapper.last("limit 20"); queryWrapper.last("limit 60");
return socialDiagnoseMapper.selectList(queryWrapper); return socialDiagnoseMapper.selectList(queryWrapper);
} }