diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java index 1312981..1e5d07e 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java @@ -4,6 +4,9 @@ import com.syjiaer.clinic.server.common.exception.MessageException; import org.springframework.stereotype.Component; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; @@ -12,44 +15,6 @@ import java.util.zip.ZipOutputStream; @Component public class FileUtil { - public List readToList(List file_list) { - List list = new ArrayList(); - for (String file : file_list) { - List child_list = readToList(file); - list.addAll(child_list); - } - return list; - - } - - public List readToList(String file) { - List list = new ArrayList(); - int i = 0; - try (BufferedReader br = new BufferedReader(new FileReader(file))) { - String line; - while ((line = br.readLine()) != null) { - list.add(line); - } - } catch (IOException e) { - throw new MessageException("读取文件失败"); - } - return list; - } - - public String readToString(String path) { - StringBuilder content = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - String line; - while ((line = br.readLine()) != null) { - content.append(line).append("\n"); - } - } catch (IOException e) { - throw new MessageException("读取文件失败"); - } - return content.toString(); - } - - public List unzip(String path, String filename) { List file_list = new ArrayList(); try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(path + "/" + filename))) { @@ -81,25 +46,64 @@ public class FileUtil { return file_list; } - public void zipFiles(String[] srcFiles, String zipFile) { - try (FileOutputStream fos = new FileOutputStream(zipFile); - ZipOutputStream zos = new ZipOutputStream(fos)) { + public boolean deleteImage(String fileName) { + if (fileName == null || fileName.isEmpty()) { + throw new MessageException("文件名为空"); + } + try { + // 指定文件保存的目录 + Path uploadPath = Paths.get("D:/uploads/"); - for (String srcFile : srcFiles) { - File fileToZip = new File(srcFile); - FileInputStream fis = new FileInputStream(fileToZip); - ZipEntry zipEntry = new ZipEntry(fileToZip.getName()); - zos.putNextEntry(zipEntry); + // 构建完整的文件路径 + Path filePath = uploadPath.resolve(fileName); - byte[] bytes = new byte[1024]; - int length; - while ((length = fis.read(bytes)) >= 0) { - zos.write(bytes, 0, length); - } - fis.close(); + // 检查文件是否存在 + if (!Files.exists(filePath)) { + throw new MessageException("文件不存在"); } + + // 删除文件 + Files.delete(filePath); + return true; } catch (IOException e) { e.printStackTrace(); + throw new MessageException("删除文件失败"); } } + public List readToList(List file_list) { + List list = new ArrayList(); + for (String file : file_list) { + List child_list = readToList(file); + list.addAll(child_list); + } + return list; + + } + + public List readToList(String file) { + List list = new ArrayList(); + int i = 0; + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + String line; + while ((line = br.readLine()) != null) { + list.add(line); + } + } catch (IOException e) { + throw new MessageException("读取文件失败"); + } + return list; + } + + public String readFileToString(String path) { + StringBuilder content = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new FileReader(path))) { + String line; + while ((line = br.readLine()) != null) { + content.append(line).append("\n"); + } + } catch (IOException e) { + throw new MessageException("读取文件失败"); + } + return content.toString(); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java index 5c32c98..b8a45d5 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java @@ -2,9 +2,11 @@ package com.syjiaer.clinic.server.common.util; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import com.syjiaer.clinic.server.common.annotations.NotNull; import com.syjiaer.clinic.server.common.exception.MessageException; import org.springframework.stereotype.Component; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -121,4 +123,30 @@ public class ParmsUtil { } return Integer.parseInt(map.get(key).toString()); } + public T getObjectWithCheck(String key, Class clazz) { + T t = getObject(key, clazz); + if (t == null) { + throw new MessageException("Object is null for key: " + key); + } + + // 获取目标对象的实际类 + Class tClazz = t.getClass(); + while (tClazz != null) { + for (Field field : tClazz.getDeclaredFields()) { + field.setAccessible(true); // 设置字段可访问 + try { + Object value = field.get(t); // 修复:使用 t 而不是 this + if (value == null && field.isAnnotationPresent(NotNull.class)) { + NotNull annotation = field.getAnnotation(NotNull.class); + String nullStr = annotation.value(); + throw new MessageException(nullStr); // 字段不能为空时抛出异常 + } + } catch (IllegalAccessException e) { + throw new MessageException("Illegal access exception: " + e.getMessage()); + } + } + tClazz = tClazz.getSuperclass(); // 遍历父类字段 + } + return t; + } } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsCateController.java b/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsCateController.java new file mode 100644 index 0000000..3b49bbb --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsCateController.java @@ -0,0 +1,76 @@ +package com.syjiaer.clinic.server.controller.goods; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.goods.GoodsCate; +import com.syjiaer.clinic.server.service.goods.GoodsCateService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 商品 前端控制器 + *

+ * + * @author NiuZiYuan + * @since 2025-02-21 + */ +@RestController +@RequestMapping("/goods/cate") +public class GoodsCateController extends BaseController { + private static final Logger log = LoggerFactory.getLogger(GoodsCateController.class); + @Autowired + private GoodsCateService goodsCateService; + + /** + * 获取商二级分类列表 + * 参数 type 商品一级类型 + */ + @RequestMapping("list") + public Result> list(){ + Map map=getParms(); + int type= parmsUtil.getInteger("type","类型不能为空"); + List list=goodsCateService.listByType(type); + return success(list); + } + + /** + * 获取所有的分类 + */ + @RequestMapping("getAllList") + public Result>> getAllList(){ + Map> resultMap=goodsCateService.listAll(); + return success(resultMap); + } + /** + * 删除二级分类 + * 参数 id + */ + @RequestMapping("del") + public Result del(){ + Map map=getParms(); + Integer id= parmsUtil.getInteger("id","id不能为空"); + goodsCateService.del(id); + return success(); + } + + /** + * 保存二级分类 + * 参数 cateList + */ + @RequestMapping("save") + public Result save(){ + List cateList = parmsUtil.getList("cateList", GoodsCate.class); + goodsCateService.save(cateList); + return success(); + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsController.java b/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsController.java new file mode 100644 index 0000000..6939ac9 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/goods/GoodsController.java @@ -0,0 +1,142 @@ +package com.syjiaer.clinic.server.controller.goods; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.enums.GoodsPricingModelEnum; +import com.syjiaer.clinic.server.common.util.ParmsUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.goods.Goods; +import com.syjiaer.clinic.server.entity.goods.GoodsView; +import com.syjiaer.clinic.server.entity.goods.dto.GoodsQuery; +import com.syjiaer.clinic.server.entity.goods.vo.GoodsDetailVo; +import com.syjiaer.clinic.server.service.goods.GoodsService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + *

+ * 商品 前端控制器 + *

+ * + * @author NiuZiYuan + * @since 2025-02-21 + */ +@RestController +@RequestMapping("/goods/goods") +public class GoodsController extends BaseController { + @Autowired + private GoodsService goodsService; + @Autowired + private ParmsUtil parmsUtil; + + /** + * 商品建档 或 修改 + * @return + */ + @RequestMapping("save") + public Result save() { + + Goods goods = JSONObject.parseObject(JSONObject.toJSONString(parmsUtil.getMap()), Goods.class); + if (goods.getPurchaseUnitPrice()==null) { + return error("请输入参考进价"); + } + if (goods.getName() == null || goods.getName().isEmpty()) { + return error("请输入信息"); + } + if (goods.getPricingModel() == null) { + return error("定价模式不能为空"); + } + if (goods.getPricingModel().equals(GoodsPricingModelEnum.Bonus.getPricingModel()) && goods.getMakeUp() == null) { + return error("加成率不能为空"); + } + if (goods.getPricingModel().equals(GoodsPricingModelEnum.Fixed.getPricingModel()) && goods.getUnitPrice() == null) { + return error("固定售价不能为空"); + } + if (goods.getIdCode() != null && goods.getIdCode().isEmpty()){ + goods.setIdCode(null); + + } + Goods dbGoods = goodsService.createGoods(goods); + + return success(dbGoods); + } + + /** + * 商品重新初始化医保库存 + */ + @RequestMapping("returnInit") + public Result returnInit() { + Integer goodId = parmsUtil.getInteger("id"); + goodsService.returnInit(goodId); + return success(); + } + + /** + * 商品搜索 goods页搜索 + */ + @RequestMapping("searchDetail") + public Result> searchGoodeDetail() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + GoodsQuery goodsQuery = parmsUtil.getObject("query", GoodsQuery.class); + Page result = goodsService.searchGoodeDetail(goodsQuery); + return success(result); + } + + /** + * 商品搜索 一键建档内的搜索 + */ + @RequestMapping("search") + public Result search() { + Map parms = getParms(); + String keyword = (String) parms.get("keyword"); + if (keyword == null || keyword.isEmpty()) { + return success(new ArrayList<>()); + } + List searchResult = goodsService.search(keyword);; + return success(searchResult); + } + + /** + * 根据商品id获取商品 + * @return + */ + @RequestMapping("get") + public Result get() { + int id = parmsUtil.getInteger("id", "请输入ID"); + return success(goodsService.getById(id)); + } + + /** + * 商品添加标识码 + * 参数:goodsId,idCode + */ + @RequestMapping("addIdCode") + public Result addIdCode(){ + Integer goodsId = parmsUtil.getInteger("goodsId","商品id为空"); + String idCode = parmsUtil.getString("idCode","标识码为空"); + goodsService.addIdCode(goodsId,idCode); + return success(); + } + + /** + * 获取二级分类绑定的商品数量 + * 参数 cateId 二级分类ID + */ + @RequestMapping("getByCateId") + public Result getCountByCateId() { + Integer cateId = parmsUtil.getInteger("cateId", "请输入分类ID"); + return success(goodsService.getByCateId(cateId)); + + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java new file mode 100644 index 0000000..1e06155 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java @@ -0,0 +1,74 @@ +package com.syjiaer.clinic.server.controller.item; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.item.Item; +import com.syjiaer.clinic.server.service.item.ItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/item") +public class ItemController extends BaseController { + + @Autowired + private ItemService itemService; + + @RequestMapping("/list") + public Result> getAllItems() { + int page = parmsUtil.getInteger("page", "页码不能为空"); + int size = parmsUtil.getInteger("size", "页容量不能为空"); + String name = parmsUtil.getString("name"); + String tel = parmsUtil.getString("tel"); + + return success(itemService.getPageList(page, size, name, tel)); + } + + @RequestMapping("/getItemById") + public Result getItemById() { + Integer id = parmsUtil.getInteger("id"); + if (id == null) { + throw new MessageException("id参数为空"); + } + return success(itemService.getItemById(id)); + } + + @RequestMapping("/add") + public Result createItem() { + Item item = parmsUtil.getObject("data", Item.class); + itemService.createItem(item); + return success(); + } + + @RequestMapping("/edit") + public Result updateItem() { + Item item = parmsUtil.getObject("data", Item.class); + itemService.updateItem(item); + return success(); + } + + @RequestMapping("/delete") + public Result deleteItem() { + Integer id = parmsUtil.getInteger("id"); + itemService.del(id); + return success(); + } + + @RequestMapping("/search") + public Result> search() { + String keyword = parmsUtil.getString("keyword"); + if (keyword == null || keyword.isEmpty()) { + return success(new ArrayList<>()); + } + return success(itemService.search(keyword)); + } +} + \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/controller/item/ItemGroupController.java b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemGroupController.java new file mode 100644 index 0000000..818cc75 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemGroupController.java @@ -0,0 +1,55 @@ +package com.syjiaer.clinic.server.controller.item; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.item.ItemGroup; +import com.syjiaer.clinic.server.entity.item.param.ItemGroupParam; +import com.syjiaer.clinic.server.service.item.ItemGroupService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/item/group") +public class ItemGroupController extends BaseController { + @Autowired + private ItemGroupService itemGroupService; + + @RequestMapping("/list") + public Result> list() { + Integer page = parmsUtil.getInteger("page", "页码不能为空"); + Integer size = parmsUtil.getInteger("size", "页容量不能为空"); + String name = parmsUtil.getString("name"); + Page pageResult = itemGroupService.getItemGroupList(page, size, name); + return success(pageResult); + } + + @RequestMapping("/getItemGroupById") + public Result getItemGroupById() { + Integer id = parmsUtil.getInteger("id", "id不能为空"); + ItemGroup itemGroup = itemGroupService.getItemGroupById(id); + return success(itemGroup); + } + + @RequestMapping("/save") + public Result save() { + ItemGroupParam itemGroupParam = parmsUtil.getObject("data", ItemGroupParam.class); + if (itemGroupParam == null){ + throw new MessageException("请求参数不能为空"); + } + itemGroupService.saveItemGroup(itemGroupParam); + return success(); + } + + @RequestMapping("/delete") + public Result delete() { + Integer id = parmsUtil.getInteger("id", "id不能为空"); + itemGroupService.delete(id); + return success(); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/medical/MedicalRecordController.java b/src/main/java/com/syjiaer/clinic/server/controller/medical/MedicalRecordController.java new file mode 100644 index 0000000..e4f513d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/medical/MedicalRecordController.java @@ -0,0 +1,55 @@ +package com.syjiaer.clinic.server.controller.medical; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto; +import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo; +import com.syjiaer.clinic.server.service.medical.MedicalRecordService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/medical/record") +public class MedicalRecordController extends BaseController { + + @Autowired + private MedicalRecordService medicalRecordService; + + /** + * 保存病历 + * @return + */ + @RequestMapping("/save") + public Result save() { + MedicalRecordSaveDto saveDto = parmsUtil.getObject("data", MedicalRecordSaveDto.class); + medicalRecordService.save(saveDto); + return success(); + } + + /** + * 查询患者病历 + * @return + */ + @RequestMapping("/listByPatient") + public Result> listByPatient() { + Integer patientId = parmsUtil.getInteger("patientId", "患者不能为空"); + return success( medicalRecordService.listByPatientId(patientId)); + } + + /** + *根据挂单号回显病历详情 + * @return + */ + @RequestMapping("/getDetailByRegisId") + public Result getDetailByRegisId() { + Integer regisId = parmsUtil.getInteger("regisId", "挂单id不能为空"); + return success(medicalRecordService.getDetailByRegisId(regisId)); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java new file mode 100644 index 0000000..ba9c9b0 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java @@ -0,0 +1,63 @@ +package com.syjiaer.clinic.server.controller.organization; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.service.organization.OrganizationMemberService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/organization/member") +public class OrganizationMemberController extends BaseController { + @Autowired + private OrganizationMemberService organizationMemberService; + @RequestMapping("/list") + public Result> list() { + int page = parmsUtil.getInteger("page","页码不能为空"); + int size = parmsUtil.getInteger("size", "页容量不能为空"); + String name = parmsUtil.getString("name"); + String tel = parmsUtil.getString("tel"); + return success(organizationMemberService.listPage(page,size,name,tel)); + } + @RequestMapping("/add") + public Result add() { + OrganizationMember organizationMember = parmsUtil.getObjectWithCheck("data", OrganizationMember.class); + if(organizationMember ==null){ + throw new MessageException("data参数为空"); + } + organizationMemberService.save(organizationMember); + return success(); + } + @RequestMapping("/edit") + public Result edit() { + OrganizationMember organizationMember = parmsUtil.getObjectWithCheck("data", OrganizationMember.class); + organizationMemberService.edit(organizationMember); + return success(); + } + @RequestMapping("/delete") + public Result delete() { + Integer id = parmsUtil.getInteger("id"); + if(id == null){ + throw new MessageException("id参数为空"); + } + organizationMemberService.delete(id); + return success(); + } + @RequestMapping("/getById") + public Result getById() { + Integer id = parmsUtil.getInteger("id"); + return success(organizationMemberService.get(id)); + } + + @RequestMapping("/allDoctorList") + public Result> allDoctorList() { + return success(organizationMemberService.doctorList()); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationSectionController.java b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationSectionController.java new file mode 100644 index 0000000..034d289 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationSectionController.java @@ -0,0 +1,70 @@ +package com.syjiaer.clinic.server.controller.organization; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.util.StringUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.organization.OrganizationSection; +import com.syjiaer.clinic.server.service.organization.OrganizationSectionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/organization/section") +public class OrganizationSectionController extends BaseController { + @Autowired + private OrganizationSectionService organizationSectionService; + @RequestMapping("/list") + public Result> list() { + int page = parmsUtil.getInteger("page","页码不能为空"); + int size = parmsUtil.getInteger("size", "页容量不能为空"); + String name = parmsUtil.getString("name"); + String caty = parmsUtil.getString("caty"); + String resperName = parmsUtil.getString("resperName"); + String resperTel = parmsUtil.getString("resperTel"); + return success(organizationSectionService.list(page,size,name,caty,resperName,resperTel)); + } + @RequestMapping("/add") + public Result add() { + OrganizationSection organizationSection = parmsUtil.getObjectWithCheck("data", OrganizationSection.class); + organizationSectionService.add(organizationSection); + return success("添加成功"); + } + @RequestMapping("/edit") + public Result edit() { + OrganizationSection organizationSection = parmsUtil.getObjectWithCheck("data", OrganizationSection.class); + if(organizationSection ==null){ + throw new MessageException("data参数为空"); + } + organizationSectionService.edit(organizationSection); + return success("编辑成功"); + } + @RequestMapping("/delete") + public Result delete() { + Integer id = parmsUtil.getInteger("id"); + if(id == null){ + throw new MessageException("id参数为空"); + } + organizationSectionService.delete(id); + return success("删除成功"); + } + @RequestMapping("/getById") + public Result getById() { + Integer id = parmsUtil.getInteger("id"); + if(id == null){ + throw new MessageException("id参数为空"); + } + OrganizationSection organizationSection = organizationSectionService.get(id); + return success(organizationSection); + } + @RequestMapping("/allList") + public Result> allList() { + return success( organizationSectionService.getAllList()); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java new file mode 100644 index 0000000..2f8624a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java @@ -0,0 +1,124 @@ +package com.syjiaer.clinic.server.controller.patient; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.util.DateUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.patient.PatientRegistration; +import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; +import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; +import com.syjiaer.clinic.server.service.patient.PatientInfoService; +import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDate; +import java.util.List; + +@RestController +@RequestMapping("/registration") +public class RegistrationController extends BaseController { + @Autowired + private PatientRegistrationService patientRegistrationService; + @Autowired + private PatientInfoService patientInfoService; + + /** + * 挂号 + * @return + */ + @RequestMapping("/add") + public Result registration() { + + PatientRegistration registrationParam = parmsUtil.getObjectWithCheck("data", PatientRegistration.class); + patientRegistrationService.registration(registrationParam); + return success(); + } + + /** + * 分页查询 挂号列表 + * @return + */ + @RequestMapping("/list") + public Result> list() { + int page = parmsUtil.getInteger("page", "页码不能为空"); + int size = parmsUtil.getInteger("size", "页容量不能为空"); + String date = parmsUtil.getString("date"); + Page pageResult = patientRegistrationService.listPage(page, size, date); + return success(pageResult); + } + + /** + * 修改挂号信息 + * @return + */ + @RequestMapping("/edit") + public Result edit() { + PatientRegistration registration = parmsUtil.getObjectWithCheck("data", PatientRegistration.class); + if (registration == null) { + throw new MessageException("data参数为空"); + } + patientRegistrationService.updateById(registration); + return success(); + } + + /** + * 删除挂号信息 + * @return + */ + @RequestMapping("/delete") + public Result delete() { + Integer id = parmsUtil.getInteger("id"); + if (id == null) { + throw new MessageException("id参数为空"); + } + patientRegistrationService.delete(id); + return success(); + } + + /** + * 获取挂号信息 + * @return + */ + @RequestMapping("/getById") + public Result getById() { + Integer id = parmsUtil.getInteger("id"); + if (id == null) { + throw new MessageException("id参数为空"); + } + PatientRegistration result = patientRegistrationService.getById(id); + return success(result); + } + + @RequestMapping("/allList") + public Result> allList() { + List list = patientRegistrationService.listAll(); + return success(list); + } + + /** + * 挂号信息分页搜索 + * @return + */ + @RequestMapping("/getListByType") + public Result> getListByType() { + RegistrationQuery query = parmsUtil.getObject("query", RegistrationQuery.class); + return success(patientRegistrationService.getPageByType(query)); + } + + /** + * 根据id返回挂号详细信息 + * @return + */ + @RequestMapping("/getDetailById") + public Result getDetailById(){ + Integer regisId= parmsUtil.getInteger("id","挂号单不能为空"); + return success(patientRegistrationService.getDetailById(regisId)); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/GoodsRetailDto.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/GoodsRetailDto.java new file mode 100644 index 0000000..5a235ed --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/GoodsRetailDto.java @@ -0,0 +1,117 @@ +package com.syjiaer.clinic.server.entity.medical.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +@Getter +@Setter +public class GoodsRetailDto { + @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 selectNum; + @ApiModelProperty("选择的单位") + private String selectedUnit; + @ApiModelProperty("选择的价格") + private BigDecimal selectedPrice; + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordSaveDto.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordSaveDto.java index e588608..2e7888a 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordSaveDto.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordSaveDto.java @@ -1,11 +1,12 @@ package com.syjiaer.clinic.server.entity.medical.dto; +import com.syjiaer.clinic.server.entity.item.Item; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.util.List; -import java.util.Map; + @Getter @Setter public class MedicalRecordSaveDto { @@ -46,7 +47,7 @@ public class MedicalRecordSaveDto { private String diagnosisSummary; @ApiModelProperty("服务项目列表") - private List itemList; + private List itemList; @ApiModelProperty("药品耗材列表") - private Map goodsMap; + private List goodsList; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java new file mode 100644 index 0000000..33b4f49 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java @@ -0,0 +1,55 @@ +package com.syjiaer.clinic.server.entity.medical.dto; + +import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; +import java.util.List; +@Getter +@Setter +public class MedicalRecordVo { + @ApiModelProperty("自增id") + private Integer id; + + @ApiModelProperty("患者id") + private Integer patientId; + + @ApiModelProperty("主诉") + private String mainAppeal; + + @ApiModelProperty("现病史") + private String nowMedicalHistory; + + @ApiModelProperty("往病史") + private String beforeMedicalHistory; + + @ApiModelProperty("过敏史") + private String allergyHistory; + + @ApiModelProperty("体检检查") + private String exam; + + @ApiModelProperty("非通用字段") + private String json; + + @ApiModelProperty("接诊医生id") + private Integer dockerId; + + @ApiModelProperty("接诊医生姓名") + private String dockerName; + + @ApiModelProperty("诊断详细数据") + private String diagnosisDetail; + + @ApiModelProperty("诊断概况") + private String diagnosisSummary; + + @ApiModelProperty("创建日期") + private LocalDateTime createDatetime; + @ApiModelProperty("诊疗服务") + private List serviceDetail; + @ApiModelProperty("药品耗材") + private List goodsDetail; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java index a97fa96..111209c 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java @@ -41,8 +41,17 @@ public class PatientRegistration implements Serializable { @ApiModelProperty("医生id") private Integer organizationDoctorId; + @ApiModelProperty("患者姓名") + private String name; + + @ApiModelProperty("患者年龄") + private Integer age; + + @ApiModelProperty("患者手机号") + private String phone; + @ApiModelProperty("就诊类型") - private Integer visitType; + private Short visitType; @ApiModelProperty("挂号时间") private LocalDateTime createDatetime; @@ -65,6 +74,9 @@ public class PatientRegistration implements Serializable { @ApiModelProperty("挂号类型") private Integer type; + @ApiModelProperty("性别") + private String gender; + @ApiModelProperty("病人id") private Integer patientInfoId; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/param/PatientRegistrationParam.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/param/PatientRegistrationParam.java deleted file mode 100644 index 783aa4d..0000000 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/param/PatientRegistrationParam.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.syjiaer.clinic.server.entity.patient.param; - -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 PatientRegistrationParam { - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty("科室id") - private Integer organizationSectionId; - - @ApiModelProperty("医生id") - private Integer organizationDoctorId; - - @ApiModelProperty("患者姓名") - private String name; - - @ApiModelProperty("患者年龄") - private Integer age; - - @ApiModelProperty("患者手机号") - private String phone; - - @ApiModelProperty("就诊类型") - private Short visitType; - - @ApiModelProperty("挂号时间") - private LocalDateTime createDatetime; - - @ApiModelProperty("推荐") - private String recommendations; - - @ApiModelProperty("备注") - private String memo; - - @ApiModelProperty("预诊") - private String advanceDiagnosis; - - @ApiModelProperty("挂号费") - private BigDecimal registrationMoney; - - @ApiModelProperty("逻辑删除") - private Short delFlag; - - @ApiModelProperty("挂号类型") - private Short type; - - @ApiModelProperty("性别") - private String gender; - - @ApiModelProperty("病人id") - private Integer patientInfoId; - - @ApiModelProperty("挂号状态 1候诊 2在诊 3已诊 0取消") - private Integer status; -} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientAndRegistrationInfoVo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientAndRegistrationInfoVo.java new file mode 100644 index 0000000..dea33d0 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientAndRegistrationInfoVo.java @@ -0,0 +1,41 @@ +package com.syjiaer.clinic.server.entity.patient.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +public class PatientAndRegistrationInfoVo { + @ApiModelProperty("自增id") + private Integer id; + + @ApiModelProperty("患者姓名") + private String name; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("身份证号") + private String certno; + + @ApiModelProperty("性别") + private String sex; + + @ApiModelProperty("年龄") + private Integer age; + + @ApiModelProperty("就诊次数") + private Integer visitCount; + @ApiModelProperty("上次就诊时间") + private LocalDateTime lastVisitTime; + @ApiModelProperty("挂号医生姓名") + private String dockerName; + @ApiModelProperty("挂号医生科室") + private String dockerSection; + + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/patient/RegistrationMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/patient/PatientRegistrationMapper.java similarity index 70% rename from src/main/java/com/syjiaer/clinic/server/mapper/patient/RegistrationMapper.java rename to src/main/java/com/syjiaer/clinic/server/mapper/patient/PatientRegistrationMapper.java index 4352ad4..fd557f1 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/patient/RegistrationMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/patient/PatientRegistrationMapper.java @@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.mapper.patient; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.syjiaer.clinic.server.entity.patient.PatientRegistration; +import org.mapstruct.Mapper; /** @@ -12,7 +13,7 @@ import com.syjiaer.clinic.server.entity.patient.PatientRegistration; * @author NiuZiYuan * @since 2025-04-10 */ -public interface RegistrationMapper extends BaseMapper { +public interface PatientRegistrationMapper extends BaseMapper { } diff --git a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsCateService.java b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsCateService.java index 27cd8c5..6d75e24 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsCateService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsCateService.java @@ -10,6 +10,7 @@ import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -24,7 +25,7 @@ public class GoodsCateService { * 获取分类列表 * 参数 type 分类类型 */ - public List list(int type){ + public List listByType(int type){ QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("type",type); queryWrapper.orderByAsc("sort"); @@ -33,7 +34,7 @@ public class GoodsCateService { /* * 获取所有分类列表 */ - public Map> getAllList(){ + public Map> listAll(){ List list=goodsCateMapper.selectList(new QueryWrapper<>()); return list.stream().collect(Collectors.groupingBy(GoodsCate::getType)); } @@ -42,11 +43,25 @@ public class GoodsCateService { * 参数 id 分类id */ public void del(int id){ + GoodsCate goodsCate = goodsCateMapper.selectById(id); goodsCateMapper.deleteById(id); UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("cate_id",-1); updateWrapper.eq("cate_id",id); + updateWrapper.set("cate_id",-1); goodsMapper.update(updateWrapper); + //对所有该类型的分类重新设置sort + List goodsCateList = goodsCateMapper.selectList(new QueryWrapper() + .eq("type", goodsCate.getType()).orderByAsc("sort")); + List updateList = new ArrayList<>(); + for (int i = 0 ; i< goodsCateList.size() ; i++){ + GoodsCate updateItem = new GoodsCate(); + updateItem.setId(goodsCateList.get(i).getId()); + updateItem.setSort(i+1); + updateList.add(updateItem); + } + goodsCateMapper.updateById(updateList); + + } /* * 保存/修改分类 diff --git a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java index d4a2e10..ed8baee 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java @@ -46,7 +46,8 @@ public class GoodsService { * 新建商品 * @param goods 商品信息 */ - public void createGoods(Goods goods) { + public Goods createGoods(Goods goods) { + if (goods.getPricingModel().equals(GoodsPricingModelEnum.Bonus.getPricingModel())) { //进价加成 更新固定售价 goods.setUnitPrice(goods.getPurchaseUnitPrice() @@ -78,12 +79,17 @@ public class GoodsService { } } + return goods; } /* * 重新初始化医保库存 */ - public void returnInit(Goods goods) { - // todo 重新初始化医保库存 + public void returnInit(Integer goodId) { + Goods goods = goodsMapper.selectById(goodId); + if (goods == null) { + throw new MessageException("商品不存在"); + } + // 重新初始化医保库存 requestReturnInit(goods); } /* @@ -349,6 +355,9 @@ public class GoodsService { * @return 商品 */ public Goods getById(int goodsId) { + if (goodsId <= 0) { + throw new MessageException("请输入ID"); + } return goodsMapper.selectById(goodsId); } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/item/ItemGroupService.java b/src/main/java/com/syjiaer/clinic/server/service/item/ItemGroupService.java index b559adb..c1fccb9 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/item/ItemGroupService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/item/ItemGroupService.java @@ -24,11 +24,12 @@ public class ItemGroupService extends BaseService { private ItemMapper itemMapper; @Autowired private ItemGroupMapper itemGroupMapper; + /* - * 获取项目组列表 - * @param pageNum 页码 - * @param pageSize 页面大小 - * @param name 项目组名称 + * 获取项目组列表 + * @param pageNum 页码 + * @param pageSize 页面大小 + * @param name 项目组名称 */ public Page getItemGroupList(int pageNum, int pageSize, String name) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -38,16 +39,18 @@ public class ItemGroupService extends BaseService { queryWrapper.eq("del_flag", false); return pageHelper(pageNum, pageSize, queryWrapper, itemGroupMapper); } + /* - * 获取项目组详情 - * @param id 项目组id + * 获取项目组详情 + * @param id 项目组id */ public ItemGroup getItemGroupById(int id) { return itemGroupMapper.selectById(id); } + /* - * 保存/修改项目组 - * @param itemGroupParam 项目组参数 + * 保存/修改项目组 + * @param itemGroupParam 项目组参数 */ public void saveItemGroup(ItemGroupParam itemGroupParam) { if (itemGroupParam.getId() != null) { @@ -71,9 +74,10 @@ public class ItemGroupService extends BaseService { ItemGroup itemGroup = getItemGroup(itemGroupParam); itemGroupMapper.insert(itemGroup); } + /* - * 生成项目组 - * @param itemGroupParam 项目组参数 + * 生成项目组 + * @param itemGroupParam 项目组参数 */ private ItemGroup getItemGroup(ItemGroupParam itemGroupParam) { ItemGroup itemGroup = new ItemGroup(); @@ -102,16 +106,18 @@ public class ItemGroupService extends BaseService { itemGroup.setPurchaseUnitPrice(purchaseUnitPrice); return itemGroup; } + /* - * 删除项目组 - * @param id 项目组id + * 删除项目组 + * @param id 项目组id */ public void delete(int id) { ItemGroup itemGroup = itemGroupMapper.selectById(id); - if(itemGroup ==null){ + if (itemGroup == null) { throw new MessageException("id不存在"); } itemGroup.setDelFlag(true); itemGroupMapper.updateById(itemGroup); } + } diff --git a/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java b/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java index c923cce..d3a991f 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java @@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @Service public class ItemService extends BaseService { @@ -24,7 +26,7 @@ public class ItemService extends BaseService { * @param name 项目名称 * @param tel 手机号 */ - public Page getItemList(int pageNum, int pageSize, String name, String tel) { + public Page getPageList(int pageNum, int pageSize, String name, String tel) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (name != null && !name.isEmpty()) { queryWrapper.like("name", name); @@ -33,7 +35,7 @@ public class ItemService extends BaseService { queryWrapper.eq("tel", tel); } queryWrapper.eq("del_flag", 0); - return pageHelper(pageNum, pageSize, queryWrapper, itemMapper); + return pageHelper(pageNum, pageSize, queryWrapper, itemMapper,"create_datetime",false); } /* * 根据id获取项目信息 @@ -67,4 +69,24 @@ public class ItemService extends BaseService { item.setUpdateDatetime(LocalDateTime.now()); itemMapper.updateById(item); } + + public void del(Integer id) { + if (id == null) { + throw new MessageException("id参数为空"); + } + Item item = itemMapper.selectById(id); + if (item == null || item.getDelFlag() == 1) { + throw new MessageException("该服务项目已被删除或不存在"); + } + Item updateItem = new Item(); + updateItem.setId(id); + updateItem.setDelFlag(1); + itemMapper.updateById(updateItem); + } + public List search(String keyword){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like("item_name", keyword); + queryWrapper.last("limit 20"); + return itemMapper.selectList(queryWrapper); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordDetailService.java b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordDetailService.java deleted file mode 100644 index 04c9542..0000000 --- a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordDetailService.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.syjiaer.clinic.server.service.medical; - -public class MedicalRecordDetailService { -} diff --git a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java index ed94cec..6fd36a3 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java @@ -1,15 +1,22 @@ package com.syjiaer.clinic.server.service.medical; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum; import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.item.Item; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.medical.MedicalRecord; import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; +import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto; import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto; +import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.medical.MedicalRecordDetailMapper; import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper; +import com.syjiaer.clinic.server.service.BaseService; +import com.syjiaer.clinic.server.service.goods.GoodsService; +import com.syjiaer.clinic.server.service.item.ItemService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,47 +26,112 @@ import java.util.List; import java.util.Map; @Service -public class MedicalRecordService { - @Autowired - private ItemMapper itemMapper; - @Autowired - private GoodsMapper goodsMapper; +public class MedicalRecordService extends BaseService { @Autowired private MedicalRecordMapper medicalRecordMapper; @Autowired private MedicalRecordDetailMapper medicalRecordDetailMapper; + @Autowired + private ItemMapper itemMapper; + @Autowired + private GoodsMapper goodsMapper; + /* * 保存 * @param saveDto 病历信息 */ public void save(MedicalRecordSaveDto saveDto) { + ManagerUser managerUser = getManagerUser(); MedicalRecord medicalRecord = new MedicalRecord(); BeanUtils.copyProperties(saveDto, medicalRecord); + medicalRecord.setDockerId(managerUser.getId()); + medicalRecord.setDockerName(managerUser.getName()); + medicalRecordMapper.insert(medicalRecord); + Integer medicalRecordId = medicalRecord.getId(); List detailList = new ArrayList<>(); - for (Integer id : saveDto.getItemList()){ - Item dbItem = itemMapper.selectById(id); + + for (Item item : saveDto.getItemList()) { + Item dbItem = itemMapper.selectById(item.getId()); MedicalRecordDetail detail = new MedicalRecordDetail(); - detail.setProjectId(id); + detail.setMedicalRecordId(medicalRecordId); + detail.setProjectId(item.getId()); detail.setProjectName(dbItem.getItemName()); detail.setProjectSocialCode(dbItem.getItemSocialCode()); detail.setProjectUnit(dbItem.getUnit()); detail.setProjectUnitPrice(dbItem.getUnitPrice()); detail.setType(MedicalRecordDetailTypeEnum.item.getType()); detailList.add(detail); + } - for (Map.Entry itemMap : saveDto.getGoodsMap().entrySet()){ - Goods dbGoods = goodsMapper.selectById(itemMap.getKey()); + for (GoodsRetailDto goodsRetailDto : saveDto.getGoodsList()) { + Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId()); MedicalRecordDetail detail = new MedicalRecordDetail(); - detail.setProjectId(itemMap.getKey()); + detail.setMedicalRecordId(medicalRecordId); + detail.setProjectId(goodsRetailDto.getId()); detail.setProjectName(dbGoods.getName()); detail.setProjectSocialCode(dbGoods.getHilistCode()); - detail.setProjectUnit(dbGoods.getPackagingUnit()); - detail.setProjectUnitPrice(dbGoods.getUnitPrice()); + detail.setProjectUnit(goodsRetailDto.getSelectedUnit()); + detail.setProjectUnitPrice(goodsRetailDto.getSelectedPrice()); detail.setType(MedicalRecordDetailTypeEnum.goods.getType()); - detail.setNumber(itemMap.getValue()); + detail.setNumber(goodsRetailDto.getSelectNum()); detailList.add(detail); } - medicalRecordMapper.insert(medicalRecord); + medicalRecordDetailMapper.insert(detailList); } + + /** + * 根据患者的id查询病历 + * @param patientId + * @return + */ + public List listByPatientId(Integer patientId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("patient_id", patientId); + query.orderByDesc("create_datetime"); + query.last("limit 10"); + List mrList = medicalRecordMapper.selectList(query); + List mrvList = new ArrayList<>(); + for (MedicalRecord medicalRecord : mrList) { + QueryWrapper severQuery = new QueryWrapper<>(); + MedicalRecordVo vo = new MedicalRecordVo(); + BeanUtils.copyProperties(medicalRecord, vo); + severQuery.eq("medical_record_id", medicalRecord.getId()); + severQuery.eq("type", 1); + List serverDetail = medicalRecordDetailMapper.selectList(severQuery); + vo.setServiceDetail(serverDetail); + QueryWrapper goodsQuery = new QueryWrapper<>(); + severQuery.eq("medical_record_id", medicalRecord.getId()); + severQuery.eq("type", 2); + List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery); + vo.setGoodsDetail(goodsDetail); + mrvList.add(vo); + } + return mrvList; + } + + /** + * 根据挂单号回显病历信息 + * @param regisId + * @return + */ + public MedicalRecordVo getDetailByRegisId(Integer regisId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("registration_id", regisId); + + MedicalRecord mr = medicalRecordMapper.selectOne(query); + QueryWrapper severQuery = new QueryWrapper<>(); + MedicalRecordVo vo = new MedicalRecordVo(); + BeanUtils.copyProperties(mr, vo); + severQuery.eq("medical_record_id", mr.getId()); + severQuery.eq("type", 1); + List serverDetail = medicalRecordDetailMapper.selectList(severQuery); + vo.setServiceDetail(serverDetail); + QueryWrapper goodsQuery = new QueryWrapper<>(); + goodsQuery.eq("medical_record_id", mr.getId()); + goodsQuery.eq("type", 2); + List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery); + vo.setGoodsDetail(goodsDetail); + return vo; + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java index e0e5a41..f7e32db 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java @@ -2,11 +2,14 @@ package com.syjiaer.clinic.server.service.organization; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.util.FileUtil; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.service.BaseService; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,9 +19,12 @@ import java.util.List; * 组织成员 */ @Service +@Slf4j public class OrganizationMemberService extends BaseService { @Autowired private OrganizationMemberMapper organizationMemberMapper; + @Autowired + private FileUtil fileUtil; /* * 获取成员列表 * @param pageNum 页码 @@ -26,7 +32,7 @@ public class OrganizationMemberService extends BaseService { * @param name 姓名 * @param tel 电话 */ - public Page list(int pageNum, int pageSize, String name, String tel) { + public Page listPage(int pageNum, int pageSize, String name, String tel) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (name != null && !name.isEmpty()) { queryWrapper.like("name", name); @@ -49,27 +55,43 @@ public class OrganizationMemberService extends BaseService { organizationMember.setCreateDatetime(LocalDateTime.now()); organizationMemberMapper.insertOrUpdate(organizationMember); } + public void edit(OrganizationMember organizationMember) { + if(organizationMember ==null){ + throw new MessageException("data参数为空"); + } + organizationMemberMapper.updateById(organizationMember); + } /* * 删除成员信息 * @param id 成员id */ public void delete(int id) { OrganizationMember organizationMember = organizationMemberMapper.selectById(id); - if(organizationMember ==null){ - throw new MessageException("id不存在"); + if (organizationMember == null) { + throw new MessageException("该成员不存在"); + } + OrganizationMember updateMember = new OrganizationMember(); + updateMember.setId(id); + updateMember.setDelFlag(true); + organizationMemberMapper.updateById(updateMember); + try { + fileUtil.deleteImage(organizationMember.getElectronicSignature()); + } catch (Exception e) { + + log.error("删除电子签名文件失败", e); } - organizationMember.setDelFlag(true); - organizationMemberMapper.updateById(organizationMember); } /* * 根据id获取成员信息 * @param id 成员id */ public OrganizationMember get(int id) { + if(id <= 0){ + throw new MessageException("id参数为空"); + } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("del_flag", false).eq("id", id); - OrganizationMember organizationMember = organizationMemberMapper.selectOne(queryWrapper); - return organizationMember; + return organizationMemberMapper.selectOne(queryWrapper); } /* * 获取医生列表 @@ -78,7 +100,6 @@ public class OrganizationMemberService extends BaseService { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("role", 0) .eq("del_flag", false); - List organizationMembers = organizationMemberMapper.selectList(queryWrapper); - return organizationMembers; + return organizationMemberMapper.selectList(queryWrapper); } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java index c206ed2..782ed23 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java @@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.service.organization; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.StringUtil; import com.syjiaer.clinic.server.common.vo.Page; @@ -11,6 +12,7 @@ import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.service.BaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import java.time.LocalDateTime; @@ -25,7 +27,19 @@ public class OrganizationSectionService extends BaseService { private StringUtil stringUtil; @Autowired private OrganizationSectionMapper organizationSectionMapper; + @Autowired + private Config config; + /** + * 分页查询科室 + * @param pageNum + * @param pageSize + * @param name + * @param caty + * @param resperName + * @param resperTel + * @return + */ public Page list(int pageNum, int pageSize, String name, String caty, String resperName, String resperTel) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (name != null && !name.isEmpty()) { @@ -45,25 +59,99 @@ public class OrganizationSectionService extends BaseService { return pageResult; } - public void save(OrganizationSection organizationSection) { - if (organizationSection == null) { - throw new MessageException("organizationSection参数为空"); + /** + * 添加科室 + * @param organizationSection + */ + public void add(OrganizationSection organizationSection) { + String socialInsuplcAdmdvs = config.get("social", "insuplcAdmdvs"); + long count = organizationSectionMapper.selectCount(new QueryWrapper().eq("code", organizationSection.getCode())); + if (count > 0) { + throw new MessageException("科室编码重复"); } - if (organizationSection.getId() == null) { - organizationSection.setCreateDatetime(LocalDateTime.now()); - //生成编码 - organizationSection.setCode(stringUtil.getCode("S")); - } - organizationSectionMapper.insertOrUpdate(organizationSection); + organizationSection.setCreateDatetime(LocalDateTime.now()); + String caty = organizationSection.getCaty(); + String processing = getString(caty); + organizationSection.setCaty(processing); + organizationSectionMapper.insert(organizationSection); +// try { +// socialRequest.call3401(new com.syjiaer.clinic.server.modules.social.api.input.IM3401() +// .setHospDeptCodg(organizationSection.getCode()) +// .setHospDeptName(organizationSection.getName()) +// .setCaty(organizationSection.getCaty()) +// .setBegntime(organizationSection.getBeginDate()) +// .setEndtime(organizationSection.getEndDate()) +// .setItro(organizationSection.getInfo()) +// .setDeptResperName(organizationSection.getResperName()) +// .setDeptResperTel(organizationSection.getResperTel()) +// .setDeptMedServScp(organizationSection.getMedServScp()) +// .setDeptEstbdat(organizationSection.getCreationDate()) +// .setAprvBedCnt(organizationSection.getBedCnt()) +// .setHiCrtfBedCnt(organizationSection.getSocialBedCnt()) +// .setPoolareaNo(social_insuplcAdmdvs) +// .setDrPsncnt(organizationSection.getDrPsncnt()) +// .setPharPsncnt(organizationSection.getPharPsncnt()) +// .setNursPsncnt(organizationSection.getNursPsncnt()) +// .setTecnPsncnt(organizationSection.getTecnPsncnt()) +// .setMemo(organizationSection.getMemo())); +// } catch (MessageException messageException) { +// log.error("科室添加失败", messageException); +// throw new MessageException("科室添加失败"); +// } + } - public void delete(int id) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("del_flag", 0).eq("id", id); - OrganizationSection organizationSection = organizationSectionMapper.selectOne(queryWrapper); - if(organizationSection == null){ - throw new MessageException("id不存在"); - } + @Transactional + public void edit(OrganizationSection organizationSection) { + String caty = organizationSection.getCaty(); + String processing = getString(caty); + organizationSection.setCaty(processing); organizationSectionMapper.updateById(organizationSection); +// try { +// socialRequest.call3402(new com.syjiaer.clinic.server.modules.social.api.input.IM3402() +// .setHospDeptCodg(organizationSection.getCode()) +// .setHospDeptName(organizationSection.getName()) +// .setBegntime(organizationSection.getBeginDate()) +// .setEndtime(organizationSection.getEndDate()) +// .setItro(organizationSection.getInfo()) +// .setDeptResperName(organizationSection.getResperName()) +// .setDeptResperTel(organizationSection.getResperTel()) +// .setDeptMedServScp(organizationSection.getMedServScp()) +// .setCaty(organizationSection.getCaty()) +// .setDeptEstbdat(organizationSection.getCreationDate()) +// .setAprvBedCnt(organizationSection.getBedCnt()) +// .setHiCrtfBedCnt(organizationSection.getSocialBedCnt()) +// .setDrPsncnt(organizationSection.getDrPsncnt()) +// .setPharPsncnt(organizationSection.getPharPsncnt()) +// .setNursPsncnt(organizationSection.getNursPsncnt()) +// .setTecnPsncnt(organizationSection.getTecnPsncnt()) +// .setMemo(organizationSection.getMemo()) +// ); +// } catch (MessageException messageException) { +// log.error("科室修改失败", messageException); +// throw new MessageException("科室修改失败"); +// } + } + + + + + public void delete(Integer id) { + OrganizationSection organizationSection = organizationSectionMapper.selectById(id); + if (organizationSection == null){ + throw new MessageException("科室不存在"); + } + organizationSection.setDelFlag(1); + organizationSectionMapper.updateById(organizationSection); +// try { +// socialRequest.call3403(new com.syjiaer.clinic.server.modules.social.api.input.IM3403() +// .setHospDeptCodg(organizationSection.getCode()) +// .setHospDeptName(organizationSection.getName()) +// .setBegntime(organizationSection.getBeginDate()) +// ); +// } catch (MessageException messageException) { +// log.error("科室删除失败", messageException); +// throw new MessageException("科室删除失败"); +// } } public OrganizationSection get(int id) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -83,4 +171,27 @@ public class OrganizationSectionService extends BaseService { }).toList(); return list; } + + private static String getString(String caty) { + if (caty.contains("[")) { + String substring = caty.substring(1, caty.length() - 1).replace("\"", ""); + String[] split = substring.split(","); + caty = split[split.length - 1]; + } + return caty; + } + + public List getAllList() { + QueryWrapper organizationSectionQueryWrapper = new QueryWrapper<>(); + organizationSectionQueryWrapper.eq("del_flag", 0); + List organizationSections = organizationSectionMapper.selectList(organizationSectionQueryWrapper); + List list = organizationSections.stream().map(organizationSection -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", organizationSection.getId()); + jsonObject.put("name", organizationSection.getName()); + return jsonObject; + }).toList(); + return list; + + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java index 11188a3..e4b7b9e 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java @@ -1,4 +1,25 @@ package com.syjiaer.clinic.server.service.patient; -public class PatientInfoService { +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.patient.PatientRegistration; +import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; +import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; +import com.syjiaer.clinic.server.service.BaseService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; +@Service +public class PatientInfoService extends BaseService { + + + + + + } diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java new file mode 100644 index 0000000..79057ec --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java @@ -0,0 +1,215 @@ +package com.syjiaer.clinic.server.service.patient; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.util.DateUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.OrganizationSection; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.patient.PatientRegistration; +import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; +import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; +import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; +import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; +import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; +import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; +import com.syjiaer.clinic.server.service.BaseService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 挂号服务 + */ +@Service +public class PatientRegistrationService extends BaseService { + @Autowired + private PatientRegistrationMapper patientRegistrationMapper; + @Autowired + private PatientInfoMapper patientInfoMapper; + @Autowired + private OrganizationMemberMapper organizationMemberMapper; + @Autowired + private OrganizationSectionMapper organizationSectionMapper; + + + /* + * 挂号 + * @param patientRegistrationParam 挂号信息 + */ + public void registration(PatientRegistration registrationParam) { + //TODO 挂号和患者 记录身份证号非必填 + if (registrationParam == null) { + throw new MessageException("data参数为空"); + } + PatientRegistration registration = new PatientRegistration(); + BeanUtils.copyProperties(registrationParam, registration); + registration.setRegistrationMoney(new BigDecimal("0")); + registration.setCreateDatetime(LocalDateTime.now()); + registration.setType(1); + registration.setStatus(1); + + //将患者添加到患者表 + + PatientInfo patientInfo = new PatientInfo(); + patientInfo.setName(registrationParam.getName()); + patientInfo.setPhone(registrationParam.getPhone()); + patientInfo.setSex(registrationParam.getGender()); + patientInfo.setAge(registrationParam.getAge()); + + QueryWrapper patientInfoQuery = new QueryWrapper<>(); + patientInfoQuery.eq("phone", registrationParam.getPhone()); + List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); + if (patientInfoList.isEmpty()) { + patientInfoMapper.insert(patientInfo); + } else { + patientInfo.setId(patientInfoList.get(0).getId()); + patientInfoMapper.updateById(patientInfo); + } + registration.setPatientInfoId(patientInfo.getId()); + patientRegistrationMapper.insert(registration); + } + /* + * 挂号列表 + * @param pageNum 页码 + * @param pageSize 每页数量 + * @param date 日期 + */ + public Page list(int pageNum, int pageSize, String date) { + if (date == null || date.isEmpty()) { + date = LocalDate.now().toString(); + } + String startDate = date + " 00:00:00"; + String endDate = date + " 23:59:59"; + QueryWrapper queryWrapper = new QueryWrapper<>(); + //查询条件 + queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate)); + queryWrapper.eq("del_flag", 0); + Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, patientRegistrationMapper); + return pageResult; + } + /* + * 删除挂号信息 + * @param id 挂号id + */ + public void delete(int id) { + PatientRegistration patientRegistration = patientRegistrationMapper.selectById(id); + if (patientRegistration == null) { + throw new MessageException("id不存在"); + } + patientRegistration.setDelFlag(1); + patientRegistrationMapper.updateById(patientRegistration); + } + /* + * 根据id查询挂号信息 + * @param id 挂号id + */ + public PatientRegistration getById(int id) { + return patientRegistrationMapper.selectById(id); + } + /* + * 获取所有已删除挂号信息 + * @param id 挂号id + */ + public List allList() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", 1); + List list = patientRegistrationMapper.selectList(queryWrapper); + return list; + } + /* + * 根据查询条件查询挂号信息 + * @param query 查询条件 + */ + public Page getPageByType(RegistrationQuery query) { + QueryWrapper regisQuery = new QueryWrapper<>(); + regisQuery.eq("del_flag", 0); + regisQuery.orderByAsc("create_datetime"); + if (query.getStatus() != null) { + regisQuery.eq("status", query.getStatus()); + } + if (query.getKeyword() != null) { + regisQuery.like("name", query.getKeyword()); + regisQuery.or().like("phone", query.getKeyword()); + } + if (query.getPageNum() == null) { + query.setPageNum(1); + } + if (query.getPageSize() == null) { + query.setPageSize(Constants.DetailPageSize); + } + + return pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, patientRegistrationMapper,"create_datetime",false); + } + + /** + * 按时间范围分页查询挂号信息 + * @param page + * @param size + * @param date + * @return + */ + + public Page listPage(int page, int size, String date) { + if (date == null || date.isEmpty()) { + date = LocalDate.now().toString(); + } + String startDate = date + " 00:00:00"; + String endDate = date + " 23:59:59"; + QueryWrapper queryWrapper = new QueryWrapper<>(); + //查询条件 + queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate)); + queryWrapper.eq("del_flag", 0); + return pageHelper(page, size, queryWrapper, patientRegistrationMapper,"create_datetime",false); + } + + public List listAll() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", 1); + return patientRegistrationMapper.selectList(queryWrapper); + } + + + public void updateById(PatientRegistration registration) { + patientRegistrationMapper.updateById(registration); + } + + /** + * 根据挂号id 查询挂号详细信息 + * @param regisId + * @return + */ + public PatientAndRegistrationInfoVo getDetailById(Integer regisId) { + + PatientRegistration registration = patientRegistrationMapper.selectById(regisId); + + PatientInfo patientInfo = patientInfoMapper.selectById(registration.getPatientInfoId()); + PatientAndRegistrationInfoVo vo = new PatientAndRegistrationInfoVo(); + if (patientInfo!=null){ + BeanUtils.copyProperties(patientInfo,vo); + } + + OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); + vo.setDockerName(docker.getName()); + OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId()); + vo.setDockerSection(section.getName()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("patient_info_id",registration.getPatientInfoId()); + queryWrapper.eq("status",3); + queryWrapper.orderByDesc("create_datetime"); + List PatientRegislist = patientRegistrationMapper.selectList(queryWrapper); + if (!PatientRegislist.isEmpty()){ + vo.setLastVisitTime(PatientRegislist.get(0).getCreateDatetime()); + vo.setVisitCount(PatientRegislist.size()); + } + return vo; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/RegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/RegistrationService.java deleted file mode 100644 index c148dad..0000000 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/RegistrationService.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.syjiaer.clinic.server.service.patient; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.syjiaer.clinic.server.common.constants.Constants; -import com.syjiaer.clinic.server.common.exception.MessageException; -import com.syjiaer.clinic.server.common.util.DateUtil; -import com.syjiaer.clinic.server.common.vo.Page; -import com.syjiaer.clinic.server.entity.patient.PatientInfo; -import com.syjiaer.clinic.server.entity.patient.PatientRegistration; -import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; -import com.syjiaer.clinic.server.entity.patient.param.PatientRegistrationParam; -import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; -import com.syjiaer.clinic.server.mapper.patient.RegistrationMapper; -import com.syjiaer.clinic.server.service.BaseService; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.List; - -/** - * 挂号服务 - */ -@Service -public class RegistrationService extends BaseService { - @Autowired - private RegistrationMapper registrationMapper; - @Autowired - private PatientInfoMapper patientInfoMapper; - - /* - * 挂号 - * @param patientRegistrationParam 挂号信息 - */ - public void registration(PatientRegistrationParam patientRegistrationParam) { - //TODO 挂号和患者 记录身份证号非必填 - PatientRegistration patientRegistration = new PatientRegistration(); - BeanUtils.copyProperties(patientRegistrationParam, patientRegistration); - if (patientRegistrationParam.getId() == null) { - patientRegistration.setRegistrationMoney(new BigDecimal("0")); - patientRegistration.setCreateDatetime(LocalDateTime.now()); - patientRegistration.setType(1); - patientRegistration.setStatus(1); - registrationMapper.insert(patientRegistration); - }else { - registrationMapper.updateById(patientRegistration); - } - //将患者添加到患者表 - QueryWrapper patientInfoQuery = new QueryWrapper<>(); - patientInfoQuery.eq("phone", patientRegistrationParam.getPhone()); - PatientInfo patientInfo = new PatientInfo(); - patientInfo.setName(patientRegistrationParam.getName()); - patientInfo.setPhone(patientRegistrationParam.getPhone()); - patientInfo.setSex(patientRegistrationParam.getGender()); - patientInfo.setAge(patientRegistrationParam.getAge()); - List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); - if (patientInfoList.isEmpty()) { - patientInfoMapper.insert(patientInfo); - } else { - patientInfo.setId(patientInfoList.get(0).getId()); - patientInfoMapper.updateById(patientInfo); - } - } - /* - * 挂号列表 - * @param pageNum 页码 - * @param pageSize 每页数量 - * @param date 日期 - */ - public Page list(int pageNum, int pageSize, String date) { - if (date == null || date.isEmpty()) { - date = LocalDate.now().toString(); - } - String startDate = date + " 00:00:00"; - String endDate = date + " 23:59:59"; - QueryWrapper queryWrapper = new QueryWrapper<>(); - //查询条件 - queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate)); - queryWrapper.eq("del_flag", 0); - Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, registrationMapper); - return pageResult; - } - /* - * 删除挂号信息 - * @param id 挂号id - */ - public void delete(int id) { - PatientRegistration patientRegistration = registrationMapper.selectById(id); - if (patientRegistration == null) { - throw new MessageException("id不存在"); - } - patientRegistration.setDelFlag(1); - registrationMapper.updateById(patientRegistration); - } - /* - * 根据id查询挂号信息 - * @param id 挂号id - */ - public PatientRegistration getById(int id) { - PatientRegistration patientRegistration = registrationMapper.selectById(id); - return patientRegistration; - } - /* - * 获取所有已删除挂号信息 - * @param id 挂号id - */ - public List allList() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("del_flag", 1); - List list = registrationMapper.selectList(queryWrapper); - return list; - } - /* - * 根据查询条件查询挂号信息 - * @param query 查询条件 - */ - public Page getListByType(RegistrationQuery query) { - QueryWrapper regisQuery = new QueryWrapper<>(); - regisQuery.eq("del_flag", 0); - regisQuery.orderByAsc("create_datetime"); - if (query.getStatus() != null) { - regisQuery.eq("status", query.getStatus()); - } - if (query.getKeyword() != null) { - regisQuery.like("name", query.getKeyword()); - regisQuery.or().like("phone", query.getKeyword()); - } - if (query.getPageNum() == null) { - query.setPageNum(1); - } - if (query.getPageSize() == null) { - query.setPageSize(Constants.DetailPageSize); - } - - Page registrationPage = pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, registrationMapper); - return registrationPage; - } -} diff --git a/src/main/resources/xml/RegistrationMapper.xml b/src/main/resources/xml/PatientRegistrationMapper.xml similarity index 64% rename from src/main/resources/xml/RegistrationMapper.xml rename to src/main/resources/xml/PatientRegistrationMapper.xml index 56794b9..7d4703b 100644 --- a/src/main/resources/xml/RegistrationMapper.xml +++ b/src/main/resources/xml/PatientRegistrationMapper.xml @@ -1,5 +1,5 @@ - +