浏览代码

菜单优化。

lighter 4 年之前
父节点
当前提交
5dce2f8b08

+ 10 - 0
src/main/java/thyyxxk/webserver/controller/LoginController.java

@@ -1,15 +1,20 @@
 package thyyxxk.webserver.controller;
 
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.login.UserInfo;
+import thyyxxk.webserver.entity.settings.permissions.MenuItem;
 import thyyxxk.webserver.service.LoginService;
 
 import java.util.List;
 
+/**
+ * @author dj
+ */
 @RestController
 @RequestMapping("/login")
 public class LoginController {
@@ -31,6 +36,11 @@ public class LoginController {
         return service.getMenus();
     }
 
+    @GetMapping("/fetchMenus")
+    public ResultVo<List<MenuItem>> fetchMenus() {
+        return service.fetchMenus();
+    }
+
     @GetMapping("/getWards")
     public ResultVo<List<CodeName>> getWards() {
         return service.getWards();

+ 35 - 0
src/main/java/thyyxxk/webserver/controller/yibao/AdvanceUploadController.java

@@ -0,0 +1,35 @@
+package thyyxxk.webserver.controller.yibao;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.yibao.patient.AdvanceUpload;
+import thyyxxk.webserver.service.yibao.AdvanceUploadService;
+
+import java.util.Map;
+
+/**
+ * @description: 高级费用上传入口
+ * @author: DingJie
+ * @create: 2021-04-06 17:36:42
+ **/
+@RestController
+@RequestMapping("/advanceUpload")
+public class AdvanceUploadController {
+    private final AdvanceUploadService service;
+
+    @Autowired
+    public AdvanceUploadController(AdvanceUploadService service) {
+        this.service = service;
+    }
+
+    @GetMapping("/fetchPatient")
+    public ResultVo<AdvanceUpload> fetchPatient(@RequestParam("inpatientNo") String inpatientNo) {
+        return service.fetchPatient(inpatientNo);
+    }
+
+    @PostMapping("/fetchFees")
+    ResultVo<Map<String, Object>> fetchFees(@RequestBody AdvanceUpload param) {
+        return service.fetchFees(param);
+    }
+}

+ 17 - 0
src/main/java/thyyxxk/webserver/dao/his/LoginDao.java

@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.login.UserInfo;
+import thyyxxk.webserver.entity.settings.permissions.MenuItem;
+import thyyxxk.webserver.entity.settings.permissions.MenuTree;
 
 import java.util.List;
 
@@ -63,4 +65,19 @@ public interface LoginDao {
             "</script>")
     List<String> getParentPaths(@Param("paths") List<String> paths);
 
+
+    @Select("select * from dj_dict_menu where parent=#{parent}")
+    List<MenuItem> selectMenusByParent(@Param("parent") Integer parent);
+
+    @Select("<script>" +
+            "select * from dj_dict_menu where code in " +
+            "(select menu_code from dj_role_menu where role_id in " +
+            "<foreach collection='roles' item='role' separator=',' open='(' close='))'>" +
+            "#{role}" +
+            "</foreach>" +
+            "</script>")
+    List<MenuItem> selectMenusByRoles(@Param("roles") List<Integer> roles);
+
+    @Select("select * from dj_dict_menu where code=#{code}")
+    MenuItem selectMenuByCode(@Param("code") Integer code);
 }

+ 49 - 0
src/main/java/thyyxxk/webserver/dao/his/yibao/AdvanceUploadDao.java

@@ -0,0 +1,49 @@
+package thyyxxk.webserver.dao.his.yibao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.yibao.patient.AdvanceUpload;
+import thyyxxk.webserver.entity.yibao.patient.Fee;
+
+import java.util.List;
+
+/**
+ * @description: 高级费用上传服务
+ * @author: DingJie
+ * @create: 2021-04-06 17:35:57
+ **/
+@Mapper
+public interface AdvanceUploadDao {
+
+    @Select("select rtrim(inpatient_no) as inpatientNo, " +
+            "admiss_times, " +
+            "rtrim(responce_type) as responceType, " +
+            "rtrim(yb_type) as ybType, " +
+            "rtrim(treat_type) as treatType, " +
+            "ledgerSn=(select max(ledger_sn) from zy_ledger_file where inpatient_no = a.inpatient_no " +
+            "and admiss_times=a.admiss_times) " +
+            "from zy_actpatient a where inpatient_no=#{inpatientNo}")
+    AdvanceUpload fetchPatient(@Param("inpatientNo") String inpatientNo);
+
+    @Select("select ledger_sn from zy_ledger_file where inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes}")
+    List<Integer> selectLedgerSns(@Param("inpatientNo") String inpatientNo,
+                                  @Param("admissTimes") Integer admissTimes);
+
+    @Select("select detail_sn, " +
+            "charge_date, " +
+            "rtrim(charge_code_mx) as hisItemCode, " +
+            "hisItemName=(isnull((select rtrim(name) from zd_charge_item where code=charge_code_mx), " +
+            "(select rtrim(name) from yp_zd_dict where code=charge_code_mx and yp_zd_dict.serial=zy_detail_charge.serial))), " +
+            "charge_fee, " +
+            "charge_amount, " +
+            "yb_self_flag " +
+            "from zy_detail_charge " +
+            "where inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} " +
+            "and ledger_sn=#{ledgerSn} and trans_flag_yb not in (1,2)")
+    IPage<Fee> selectFees(IPage<Fee> iPage,
+                          @Param("inpatientNo") String inpatientNo,
+                          @Param("admissTimes") Integer admissTimes,
+                          @Param("ledgerSn") Integer ledgerSn);
+}

+ 0 - 10
src/main/java/thyyxxk/webserver/entity/settings/permissions/Menu.java

@@ -1,10 +0,0 @@
-package thyyxxk.webserver.entity.settings.permissions;
-
-import lombok.Data;
-
-@Data
-public class Menu {
-    private Integer code;
-    private String name;
-    private Integer parent;
-}

+ 19 - 0
src/main/java/thyyxxk/webserver/entity/settings/permissions/MenuItem.java

@@ -0,0 +1,19 @@
+package thyyxxk.webserver.entity.settings.permissions;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author dj
+ */
+@Data
+public class MenuItem {
+    private Integer code;
+    private String path;
+    private String name;
+    private Integer parent;
+    private Integer type;
+    private String icon;
+    private List<MenuItem> children;
+}

+ 5 - 0
src/main/java/thyyxxk/webserver/entity/settings/permissions/MenuTree.java

@@ -4,11 +4,16 @@ import lombok.Data;
 
 import java.util.List;
 
+/**
+ * @author dj
+ */
 @Data
 public class MenuTree {
     private Integer code;
+    private String path;
     private String name;
     private Integer parent;
     private Integer type;
+    private String icon;
     private List<MenuTree> menus;
 }

+ 24 - 0
src/main/java/thyyxxk/webserver/entity/yibao/patient/AdvanceUpload.java

@@ -0,0 +1,24 @@
+package thyyxxk.webserver.entity.yibao.patient;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description: 高级费用上传实体类
+ * @author: DingJie
+ * @create: 2021-04-06 17:38:01
+ **/
+@Data
+public class AdvanceUpload {
+    private String inpatientNo;
+    private Integer admissTimes;
+    private String responceType;
+    private String ybType;
+    private String treatType;
+    private Integer ledgerSn;
+    private List<Integer> ledgerSns;
+
+    private Integer currentPage;
+    private Integer pageSize;
+}

+ 7 - 2
src/main/java/thyyxxk/webserver/entity/yibao/patient/Fee.java

@@ -5,6 +5,9 @@ import thyyxxk.webserver.utils.StringUtil;
 
 import java.util.Date;
 
+/**
+ * @author dj
+ */
 @Data
 public class Fee {
     private Integer detailSn;
@@ -19,7 +22,9 @@ public class Fee {
     private String ybSelfFlag;
 
     public String getYbSelfFlag() {
-        if (StringUtil.isBlank(ybSelfFlag)) return "是";
-        return ybSelfFlag.trim().equals("0") ? "是" : "否";
+        if (StringUtil.isBlank(ybSelfFlag)) {
+            return "是";
+        }
+        return "0".equals(ybSelfFlag.trim()) ? "是" : "否";
     }
 }

+ 65 - 3
src/main/java/thyyxxk/webserver/service/LoginService.java

@@ -1,27 +1,30 @@
 package thyyxxk.webserver.service;
 
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.constants.Capacity;
 import thyyxxk.webserver.dao.his.LoginDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.login.UserInfo;
+import thyyxxk.webserver.entity.settings.permissions.MenuItem;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.SnowFlakeId;
 import thyyxxk.webserver.utils.TokenUtil;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 /**
  * @author dj
  */
+@Slf4j
 @Service
 public class LoginService {
     private final LoginDao dao;
     private final TokenService tokenService;
+    private static final int DOUBLE_LEVEL_MAX = 10;
 
     @Autowired
     public LoginService(LoginDao dao, TokenService tokenService) {
@@ -62,6 +65,65 @@ public class LoginService {
         return ResultVoUtil.success(paths);
     }
 
+    public ResultVo<List<MenuItem>> fetchMenus() {
+        Map<Integer, MenuItem> finalMap = new HashMap<>(Capacity.DEFAULT);
+        List<Integer> roles = dao.getUserRoles(TokenUtil.getTokenUserId());
+        List<MenuItem> userMenus = dao.selectMenusByRoles(roles);
+        List<MenuItem> doubleLevelMenus = new ArrayList<>();
+        List<MenuItem> tripleLevelMenus = new ArrayList<>();
+        userMenus.forEach(item -> {
+            if (item.getParent() > DOUBLE_LEVEL_MAX) {
+                tripleLevelMenus.add(item);
+            } else {
+                doubleLevelMenus.add(item);
+            }
+        });
+
+        if (!doubleLevelMenus.isEmpty()) {
+            Map<Integer, List<MenuItem>> doubleLevelMap = new HashMap<>(Capacity.DEFAULT);
+            doubleLevelMenus.forEach(item -> {
+                if (doubleLevelMap.containsKey(item.getParent())) {
+                    doubleLevelMap.get(item.getParent()).add(item);
+                } else {
+                    List<MenuItem> tempList = new ArrayList<>();
+                    tempList.add(item);
+                    doubleLevelMap.put(item.getParent(), tempList);
+                }
+            });
+            for (Map.Entry<Integer, List<MenuItem>> entry : doubleLevelMap.entrySet()) {
+                MenuItem item = dao.selectMenuByCode(entry.getKey());
+                item.setChildren(entry.getValue());
+                finalMap.put(item.getCode(), item);
+            }
+        }
+        if (!tripleLevelMenus.isEmpty()) {
+            Map<Integer, List<MenuItem>> tripleLevelMap = new HashMap<>(Capacity.DEFAULT);
+            tripleLevelMenus.forEach(item -> {
+                if (tripleLevelMap.containsKey(item.getParent())) {
+                    tripleLevelMap.get(item.getParent()).add(item);
+                } else {
+                    List<MenuItem> tempList = new ArrayList<>();
+                    tempList.add(item);
+                    tripleLevelMap.put(item.getParent(), tempList);
+                }
+            });
+            for (Map.Entry<Integer, List<MenuItem>> entry : tripleLevelMap.entrySet()) {
+                MenuItem item = dao.selectMenuByCode(entry.getKey());
+                item.setChildren(entry.getValue());
+                if (null == finalMap.get(item.getParent())) {
+                    finalMap.put(item.getParent(), item);
+                } else {
+                    finalMap.get(item.getParent()).getChildren().add(item);
+                }
+            }
+        }
+        List<MenuItem> list = new ArrayList<>();
+        for (Map.Entry<Integer, MenuItem> entry : finalMap.entrySet()) {
+            list.add(entry.getValue());
+        }
+        return ResultVoUtil.success(list);
+    }
+
     public ResultVo<List<CodeName>> getWards() {
         String code = TokenUtil.getTokenUserId();
         List<Integer> roles = dao.getUserRoles(code);

+ 52 - 0
src/main/java/thyyxxk/webserver/service/yibao/AdvanceUploadService.java

@@ -0,0 +1,52 @@
+package thyyxxk.webserver.service.yibao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.constants.Capacity;
+import thyyxxk.webserver.dao.his.yibao.AdvanceUploadDao;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.yibao.patient.AdvanceUpload;
+import thyyxxk.webserver.entity.yibao.patient.Fee;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description: 高级费用上传服务
+ * @author: DingJie
+ * @create: 2021-04-06 17:34:29
+ **/
+@Slf4j
+@Service
+public class AdvanceUploadService {
+    private final AdvanceUploadDao dao;
+
+    @Autowired
+    public AdvanceUploadService(AdvanceUploadDao dao) {
+        this.dao = dao;
+    }
+
+    public ResultVo<AdvanceUpload> fetchPatient(String inpatientNo) {
+        AdvanceUpload advanceUpload = dao.fetchPatient(inpatientNo);
+        if (null == advanceUpload) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有住院号【" + inpatientNo + "】的在院业务!");
+        }
+        advanceUpload.setLedgerSns(dao.selectLedgerSns(inpatientNo, advanceUpload.getAdmissTimes()));
+        return ResultVoUtil.success(advanceUpload);
+    }
+
+    public ResultVo<Map<String, Object>> fetchFees(AdvanceUpload param) {
+        IPage<Fee> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
+        iPage = dao.selectFees(iPage, param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn());
+        Map<String, Object> map = new HashMap<>(Capacity.TWO);
+        map.put("totalSize", iPage.getTotal());
+        map.put("list", iPage.getRecords());
+        return ResultVoUtil.success(map);
+    }
+}