Explorar el Código

优化代码以及添加手术部位的维护

xiaochan hace 3 años
padre
commit
7619df7460

+ 5 - 1
src/main/java/thyyxxk/webserver/controller/yibao/XiangMuLuRuController.java

@@ -151,6 +151,10 @@ public class XiangMuLuRuController {
                             @RequestBody @Validated ZyDetailCharge param) {
         service.exportExcel(response, param);
     }
+
+    @PostMapping("/xiuGaiZiFeiBiaoZhi")
+    public ResultVo<String> xiuGaiZiFeiBiaoZhi(@RequestBody @Validated ZyDetailCharge param) throws Exception {
+        return service.xiuGaiZiFeiBiaoZhi(param);
+    }
 }
 
-// 000107

+ 1 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/JianYanJianChaController.java

@@ -3,6 +3,7 @@ package thyyxxk.webserver.controller.zhuyuanyizheng;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.*;

+ 12 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/ShouShuShenQingController.java

@@ -13,6 +13,7 @@ import thyyxxk.webserver.service.zhuyuanyisheng.ShouShuShenQingServer;
 
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * <p>
@@ -79,4 +80,15 @@ public class ShouShuShenQingController {
         return server.shanChuShouShu(recordId);
     }
 
+    @GetMapping("/addASurgicalSite")
+    public ResultVo<String> addASurgicalSite(@RequestParam("name") String name) {
+        name = name.trim();
+        return server.addASurgicalSite(name);
+    }
+
+    @GetMapping("/removeSurgicalSite")
+    public ResultVo<String> removeSurgicalSite(String code) {
+        return server.removeSurgicalSite(code);
+    }
+
 }

+ 20 - 0
src/main/java/thyyxxk/webserver/dao/his/yibao/XiangMuLuRuDao.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.dao.his.yibao;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -64,6 +65,9 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "<if test=\"tuiFeiFlag != null and tuiFeiFlag == 2  \">" +
             "and (ori_detail_sn = -1 )" +
             "</if>" +
+            "<if test=\"actOrderNo != null\">" +
+            " and order_no = #{actOrderNo} " +
+            "</if>" +
             ") temp where RowNumber > ${pageSize} * (${currentPage} - 1 )) a  " +
             "        left join zd_charge_item b on (a.charge_code = b.code)  " +
             "        left join  yp_zd_dict c on (a.serial = c.serial and c.code= a.charge_code_mx)  " +
@@ -79,6 +83,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                                               @Param("startTime") String startTime,
                                               @Param("endTime") String endTime,
                                               @Param("orderNo") BigDecimal orderNo,
+                                              @Param("actOrderNo") BigDecimal actOrderNo,
                                               @Param("dept") String dept,
                                               @Param("riQiPaiXu") String riQiPaiXu,
                                               @Param("tuiFeiFlag") Integer tuiFeiFlag);
@@ -113,6 +118,9 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "<if test=\"tuiFeiFlag != null and tuiFeiFlag == 2  \">" +
             "and (ori_detail_sn = -1 )" +
             "</if>" +
+            "<if test=\"actOrderNo != null\">" +
+            " and order_no = #{actOrderNo} " +
+            "</if>" +
             "</script>")
     long huanZheYaoPinFeiYongTotal(@Param("inpatientNo") String inpatientNo,
                                    @Param("admissTimes") Integer admissTimes,
@@ -122,6 +130,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                                    @Param("startTime") String startTime,
                                    @Param("endTime") String endTime,
                                    @Param("orderNo") BigDecimal orderNo,
+                                   @Param("actOrderNo") BigDecimal actOrderNo,
                                    @Param("dept") String dept,
                                    @Param("tuiFeiFlag") Integer tuiFeiFlag);
 
@@ -182,6 +191,9 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "<if test=\"tuiFeiFlag != null and tuiFeiFlag == 2  \">" +
             "and (ori_detail_sn = -1 )" +
             "</if>" +
+            "<if test=\"actOrderNo != null\">" +
+            " and order_no = #{actOrderNo} " +
+            "</if>" +
             ") temp where RowNumber > ${pageSize} * (${currentPage}-1) )  a " +
             "  left join  zd_charge_item b on (a.charge_code=b.code) " +
             "  left join a_employee_mi c on (c.code = a.op_id_code)" +
@@ -196,6 +208,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime,
                                                @Param("orderNo") BigDecimal orderNo,
+                                               @Param("actOrderNo") BigDecimal actOrderNo,
                                                @Param("dept") String dept,
                                                @Param("riQiPaiXu") String riQiPaiXu,
                                                @Param("tuiFeiFlag") Integer tuiFeiFlag);
@@ -228,6 +241,9 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "<if test=\"tuiFeiFlag != null and tuiFeiFlag == 2  \">" +
             "and (ori_detail_sn = -1 )" +
             "</if>" +
+            "<if test=\"actOrderNo != null\">" +
+            " and order_no = #{actOrderNo} " +
+            "</if>" +
             "</script>")
     long huanZheFeiYongToatal(@Param("inpatientNo") String inpatientNo,
                               @Param("admissTimes") Integer admissTimes,
@@ -237,6 +253,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                               @Param("startTime") String startTime,
                               @Param("endTime") String endTime,
                               @Param("orderNo") BigDecimal orderNo,
+                              @Param("actOrderNo") BigDecimal actOrderNo,
                               @Param("dept") String dept,
                               @Param("tuiFeiFlag") Integer tuiFeiFlag);
 
@@ -1165,4 +1182,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                                           @Param("detailSn") Integer detailSn,
                                           @Param("oriDetailSn") Integer oriDetailSn);
 
+    @Update("update zy_detail_charge set yb_self_flag = 0 ${ew.customSqlSegment}")
+    void xiuGaiZiFeiZhiYiBaoBiaoZhi(@Param(Constants.WRAPPER) Wrapper<?> wq);
+
 }

+ 15 - 1
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/ShouShuShenQingDao.java

@@ -109,7 +109,7 @@ public interface ShouShuShenQingDao extends BaseMapper<OpRecord> {
                                          @Param("code") String code,
                                          @Param("name") String name);
 
-    @Select("select code,name from op_zd_part with (NOLOCK) where (name like #{code} or py_code like #{code} or d_code like #{code})")
+    @Select("select code,name from op_zd_part with (NOLOCK) where (name like #{code} or py_code like #{code} or d_code like #{code}) and del_flag = 0")
     List<GetDropdownBox> huoQuShouShuBuWei(String code);
 
     @Select("Select isnull(Max(op_times),0) " +
@@ -182,5 +182,19 @@ public interface ShouShuShenQingDao extends BaseMapper<OpRecord> {
     @Update("update op_record set status = 'd' where record_id = #{id}")
     void genXingShanChuBiaoZhi(Integer id);
 
+    @Select("select count(1) from op_zd_part where name = #{name} and del_flag = 0")
+    Boolean repeatPartName(String name);
 
+    @Select("select cast(max(code) as INTEGER) as code from op_zd_part")
+    Integer getTheMaximumSurgicalCode();
+
+    @Insert("insert into op_zd_part (code, name, py_code, d_code)\n" +
+            "values (#{code}, #{name}, #{py}, #{wb})")
+    void insertNewSurgicalSite(@Param("code") String code,
+                               @Param("name") String name,
+                               @Param("py") String py,
+                               @Param("wb") String wb);
+
+    @Update("update op_zd_part set del_flag = 1 where code = #{code}")
+    void removeSurgicalSite(String code);
 }

+ 11 - 0
src/main/java/thyyxxk/webserver/entity/datamodify/ZyDetailCharge.java

@@ -8,6 +8,10 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -30,10 +34,14 @@ public class ZyDetailCharge implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "inpatient_no", type = IdType.ID_WORKER)
+    @NotNull(message = "住院号不能为空1")
+    @NotBlank(message = "住院号不能为空")
     private String inpatientNo;
 
     private Integer rowIndex;
 
+    @NotNull(message = "住院次数不能为空")
+    @Min(value = 1, message = "住院次数最小为1")
     private Integer admissTimes;
 
     private String startTime;
@@ -44,6 +52,8 @@ public class ZyDetailCharge implements Serializable {
 
     private BigDecimal origChargeFee;
 
+    @NotNull(message = "账页号不能为空")
+    @Min(value = 1, message = "账页号最小为1")
     private Integer ledgerSn;
 
     private Integer detailSn;
@@ -77,6 +87,7 @@ public class ZyDetailCharge implements Serializable {
     private String deptCode;
 
     private BigDecimal orderNo;
+    private BigDecimal actOrderNo;
 
     private String opeFlag;
 

+ 31 - 7
src/main/java/thyyxxk/webserver/service/yibao/XiangMuLuRuService.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.service.yibao;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -16,8 +17,10 @@ import thyyxxk.webserver.dao.his.yibao.XiangMuLuRuDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
+import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyPatientInfo;
 import thyyxxk.webserver.entity.yibao.ZyActpatient;
 import thyyxxk.webserver.service.PublicServer;
+import thyyxxk.webserver.service.medicalinsurance.SiZyService;
 import thyyxxk.webserver.utils.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -41,11 +44,13 @@ import java.util.stream.Collectors;
 public class XiangMuLuRuService {
     private final XiangMuLuRuDao dao;
     private final PublicServer publicServer;
+    private final SiZyService siZyService;
 
     @Autowired
-    public XiangMuLuRuService(XiangMuLuRuDao dao, PublicServer publicServer) {
+    public XiangMuLuRuService(XiangMuLuRuDao dao, PublicServer publicServer, SiZyService siZyService) {
         this.dao = dao;
         this.publicServer = publicServer;
+        this.siZyService = siZyService;
     }
 
     /**
@@ -56,11 +61,11 @@ public class XiangMuLuRuService {
      * @return 返回患者费用
      */
     public ResultVo<Page<ZyDetailCharge>> getHuanZheFeiYong(ZyDetailCharge param) {
+        log.info("医嘱号:{}", param.getActOrderNo());
         if (StringUtil.isBlank(param.getInpatientNo()) || param.getAdmissTimes() == null) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "住院号或住院次数为空 <br/>๑乛◡乛๑");
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_HTML_ERROR, "住院号或住院次数为空 <br/>๑乛◡乛๑");
         }
         Integer ledgerSn = publicServer.getLedgerSn(param.getInpatientNo(), param.getAdmissTimes());
-        log.info("查询患者费用==》住院号{},住院次数:{},项目名称:{},费用类型:{},科室:{},当前页:{},页大小:{},退费:{},总数:{},账页号:{}", param.getInpatientNo(), param.getAdmissTimes(), param.getChargeCode(), param.getOrderNo(), param.getDept(), param.getCurrentPage(), param.getPageSize(), param.getTuiFeiFlag(), param.getTotal(), ledgerSn);
         int infantFlag = 0;
         // 如果是婴儿的话那么就需要截取 字符串了 在通过婴儿标识来判断
         if (param.getInpatientNo().contains("$")) {
@@ -74,14 +79,14 @@ public class XiangMuLuRuService {
 
         if (param.getFeiYongLeiXingCode() == 0) {
             if (param.getTotal() == 0) {
-                page.setTotal(dao.huanZheFeiYongToatal(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getDept(), param.getTuiFeiFlag()));
+                page.setTotal(dao.huanZheFeiYongToatal(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getActOrderNo(), param.getDept(), param.getTuiFeiFlag()));
             }
-            page.setRecords(dao.huanZheXiangMuFeiYong(param.getCurrentPage(), param.getPageSize(), param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getDept(), param.getRiQiPaiXu(), param.getTuiFeiFlag()));
+            page.setRecords(dao.huanZheXiangMuFeiYong(param.getCurrentPage(), param.getPageSize(), param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getActOrderNo(), param.getDept(), param.getRiQiPaiXu(), param.getTuiFeiFlag()));
         } else {
             if (param.getTotal() == 0) {
-                page.setTotal(dao.huanZheYaoPinFeiYongTotal(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getDept(), param.getTuiFeiFlag()));
+                page.setTotal(dao.huanZheYaoPinFeiYongTotal(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getActOrderNo(), param.getDept(), param.getTuiFeiFlag()));
             }
-            page.setRecords(dao.huanZheYaoPinFeiYong(param.getCurrentPage(), param.getPageSize(), param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getDept(), param.getRiQiPaiXu(), param.getTuiFeiFlag()));
+            page.setRecords(dao.huanZheYaoPinFeiYong(param.getCurrentPage(), param.getPageSize(), param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getChargeCode(), infantFlag, param.getStartTime(), param.getEndTime(), param.getOrderNo(), param.getActOrderNo(), param.getDept(), param.getRiQiPaiXu(), param.getTuiFeiFlag()));
         }
         if (ListUtil.isBlank(page.getRecords())) {
             return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到符合费用。");
@@ -746,5 +751,24 @@ public class XiangMuLuRuService {
         }
         ExcelUtil.exportExcel(response, title, content);
     }
+
+    public ResultVo<String> xiuGaiZiFeiBiaoZhi(ZyDetailCharge param) throws Exception {
+        log.info("pa:{}",JSON.toJSONString(param));
+        QueryWrapper<?> qw = new QueryWrapper<>();
+        qw.eq("inpatient_no", param.getInpatientNo());
+        qw.eq("admiss_times", param.getAdmissTimes());
+        qw.eq("ledger_sn", param.getLedgerSn());
+        List<Integer> detailList = new ArrayList<>();
+        for (ZyDetailCharge item : param.getList()) {
+            detailList.add(item.getDetailSn());
+        }
+        qw.in("detail_sn", detailList);
+        // 把费用标志改成 0
+        dao.xiuGaiZiFeiZhiYiBaoBiaoZhi(qw);
+        ZyPatientInfo p = EntityCopy.Copy(param, ZyPatientInfo.class);
+        p.setDetailSns(detailList);
+        siZyService.revokeUploadFees(p);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
+    }
 }
 

+ 1 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/CaoYaoYiZhuServer.java

@@ -209,4 +209,5 @@ public class CaoYaoYiZhuServer {
         dao.genXingCaoYaoShanChuBiaoZhi(patNo, times, orderNo);
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
+
 }

+ 0 - 1
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/JianYanJianChaShenQingServer.java

@@ -75,7 +75,6 @@ public class JianYanJianChaShenQingServer {
         return ResultVoUtil.success(page);
     }
 
-
     public ResultVo<Map<String, Object>> huoQuShengQingXiangQing(Integer reqNo) {
         YshYjReq req = dao.huoQuShengQingXiangQing(reqNo);
         if (req == null) {

+ 19 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/ShouShuShenQingServer.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dtflys.forest.annotation.LogHandler;
+import jdk.nashorn.internal.objects.annotations.SpecializedFunction;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
@@ -150,4 +152,21 @@ public class ShouShuShenQingServer {
         log.info("删除手术==》操作人:{},申请单号:{}", TokenUtil.getTokenUserId(), recordId);
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
+
+
+    public ResultVo<String> addASurgicalSite(String name) {
+        if (dao.repeatPartName(name)) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "手术部位名称重复");
+        }
+        String maxCode = String.valueOf(dao.getTheMaximumSurgicalCode() + 1);
+        String newCode = maxCode.length() > 1 ? maxCode : '0' + maxCode;
+        dao.insertNewSurgicalSite(newCode, name, PingYinUtils.pyShouZiMuDaXie(name), PingYinUtils.getWBCode(name));
+        log.info("新增手术部位==>操作人:{}", TokenUtil.getTokenUserId());
+        return ResultVoUtil.success(newCode);
+    }
+
+    public ResultVo<String> removeSurgicalSite(String code) {
+        dao.removeSurgicalSite(code);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
+    }
 }