فهرست منبع

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

wangzhinan 1 سال پیش
والد
کامیت
ebb43437db
27فایلهای تغییر یافته به همراه1614 افزوده شده و 583 حذف شده
  1. 1 2
      business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java
  2. 8 1
      common/common-entity/sql/2023.sql
  3. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServiceItemConfig.java
  4. 73 70
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/role/MenuEndpoint.java
  5. 56 56
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java
  6. 2 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageItemService.java
  7. 64 40
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageService.java
  8. 217 207
      svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java
  9. 1 0
      svr/svr-cloud-care/src/main/resources/bootstrap.yml
  10. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/async/AsynService.java
  11. 8 3
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/controller/ConsultController.java
  12. 2 2
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/controller/DoctorConsultController.java
  13. 8 4
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/service/ConsultTeamService.java
  14. 14 0
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/controller/DoorOrderController.java
  15. 9 4
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/controller/WlyyDoorServiceOrderController.java
  16. 84 47
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/DoorOrderService.java
  17. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/WlyyDoorPrescriptionService.java
  18. 149 111
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/WlyyDoorServiceOrderService.java
  19. 2 2
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/followup/service/FollowUpService.java
  20. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/jw/service/JwArchivesService.java
  21. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/jw/service/JwSmjkService.java
  22. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/rehabilitation/service/RehabilitationInfoService.java
  23. 1 1
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/rehabilitation/service/ZsRehabilitationInfoService.java
  24. 883 0
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/upload/controller/FileUploadController.java
  25. 4 4
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/task/PushMsgTask.java
  26. 2 2
      svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/utils/DoctorAssistantUtil.java
  27. 20 20
      svr/svr-visit-behind/src/main/resources/application.yml

+ 1 - 2
business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java

@ -586,8 +586,6 @@ public class ImUtil {
    }
    /**
     * 判断会话是否存在
     */
@ -743,6 +741,7 @@ public class ImUtil {
     */
    public JSONObject getTopic(String topicId) throws Exception {
        String url = im_host + "api/v2/sessions/topics/" + topicId + "?topic_id=" + topicId;
        System.out.println("获取议题==>地址:" + url);
        try {
            String ret = httpClientUtil.get(url, "utf-8");
            System.out.println("getTopic结果==>" + ret);

+ 8 - 1
common/common-entity/sql/2023.sql

@ -243,4 +243,11 @@ INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_
INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('1000000007', NULL, 'PROFESSIONAL_STATE', '6', '军人', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('1000000008', NULL, 'PROFESSIONAL_STATE', '7', '不便分类的其他从业人员', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
===========================20231024上门服务结束====================================
===========================20231024上门服务结束====================================
ALTER TABLE `base`.`base_service_package`
    MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL FIRST;
ALTER TABLE `base`.`base_service_package_item`
    MODIFY COLUMN `service_package_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'system' COMMENT '服务包id' AFTER `name`,
    MODIFY COLUMN `service_package_item_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建服务项的id。也是本表的id。system那些数据' AFTER `service_package_id`;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServiceItemConfig.java

@ -40,7 +40,7 @@ public class ServiceItemConfig extends UuidIdentityEntity implements java.io.Ser
    private String serverCount;//服务次数
    @Column(name = "template_type")
    private String templateType;//模板的类型-目前是随访为1
    private String templateType;//模板的类型-目前是随访为1 0手动配置
    @Column(name = "template_code")
    private String templateCode;//对应模板的id

+ 73 - 70
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/role/MenuEndpoint.java

@ -1,5 +1,6 @@
package com.yihu.jw.base.endpoint.role;
import com.alibaba.fastjson.JSON;
import com.yihu.jw.base.contant.CommonContant;
import com.yihu.jw.base.service.role.MenuService;
import com.yihu.jw.base.service.role.RoleMenuService;
@ -45,18 +46,18 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.Menu.CREATE)
    @ApiOperation(value = "创建")
    public ObjEnvelop<MenuVO> create (
    public ObjEnvelop<MenuVO> create(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        try {
            MenuDO menuDO = toEntity(jsonData, MenuDO.class);
            int count = menuService.isExistName(menuDO.getName());
            if(count>0){
            if (count > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Menu.NAME_IS_EXIST), ObjEnvelop.class);
            }
            menuDO = menuService.addMenu(menuDO);
            return success(menuDO, MenuVO.class);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("操作失败");
        }
@ -70,7 +71,7 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
        try {
            menuService.moveDown(id);
            return success("修改成功");
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
@ -84,7 +85,7 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
        try {
            menuService.moveUp(id);
            return success("修改成功");
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
@ -100,20 +101,20 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
        try {
            menuService.updateStatus(id, status);
            return success("修改成功");
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
    }
    @GetMapping(value = BaseRequestMapping.Menu.IS_NAME_EXIST)
    @ApiOperation(value = "名称是否存在",notes = "返回值中的obj=1表示名称已经存在,0表示名称不存在")
    @ApiOperation(value = "名称是否存在", notes = "返回值中的obj=1表示名称已经存在,0表示名称不存在")
    public ObjEnvelop isNameExist(
            @ApiParam(name = "name", value = "菜单名称", required = true)
            @RequestParam(value = "name") String name) {
        try {
            return success(menuService.isExistName(name));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("操作失败");
        }
@ -121,21 +122,21 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.Menu.UPDATE)
    @ApiOperation(value = "更新")
    public Envelop update (
    public Envelop update(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData){
            @RequestParam String jsonData) {
        try {
            MenuDO menuDO = toEntity(jsonData, MenuDO.class);
            if (null == menuDO.getId()) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Common.ID_IS_NULL), Envelop.class);
            }
            int count = menuService.isExistName(menuDO.getName());
            if(count>1){
            if (count > 1) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Menu.NAME_IS_EXIST), ObjEnvelop.class);
            }
            menuDO = menuService.updateMenu(menuDO);
            return success(menuDO);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
@ -143,7 +144,7 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<MenuVO> page (
    public PageEnvelop<MenuVO> page(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -153,12 +154,12 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size){
            @RequestParam(value = "size") int size) {
        try {
            List<MenuDO> menuDOS = menuService.search(fields, filters, sorts, page, size);
            int count = (int)menuService.getCount(filters);
            int count = (int) menuService.getCount(filters);
            return success(menuDOS, count, page, size, MenuVO.class);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return PageEnvelop.getError("获取失败");
        }
@ -166,25 +167,25 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<MenuVO> list (
    public ListEnvelop<MenuVO> list(
            @ApiParam(name = "id", value = "id")
            @RequestParam(value = "id", required = false) String id){
            @RequestParam(value = "id", required = false) String id) {
        try {
            String filters = "";
            if(StringUtils.isNotBlank(id)){
                filters = "parentId="+id+";";
            if (StringUtils.isNotBlank(id)) {
                filters = "parentId=" + id + ";";
            }
            List<MenuDO> menuDOS = menuService.search(null, filters, "+sort");
            MenuDO menuDO = menuService.findOne(id);
            menuDOS.forEach(menu -> {
                if(CommonContant.DEFAULT_PARENTID.equals(menu.getParentId())){
                if (CommonContant.DEFAULT_PARENTID.equals(menu.getParentId())) {
                    menu.setParentName(CommonContant.DEFAULT_PARENTNAME);
                }else {
                } else {
                    menu.setParentName(menuDO.getName());
                }
            });
            return success(menuDOS, MenuVO.class);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
@ -192,42 +193,42 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.FIND_ALL)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<MenuVO> findAll (
    public ListEnvelop<MenuVO> findAll(
            @ApiParam(name = "status", value = "状态")
            @RequestParam(value = "status", required = false) String status,
            @ApiParam(name = "name", value = "名称")
            @RequestParam(value = "name", required = false) String name){
            @RequestParam(value = "name", required = false) String name) {
        try {
            String filters = "";
            if(StringUtils.isNotBlank(status)){
                filters = "status="+status+";";
            if (StringUtils.isNotBlank(status)) {
                filters = "status=" + status + ";";
            }
            if(StringUtils.isNotBlank(name)){
                filters += "name?"+name+";";
            if (StringUtils.isNotBlank(name)) {
                filters += "name?" + name + ";";
            }
            List<MenuDO> menuDOs = menuService.search(null, filters, "+sort");
            List<MenuVO> menuVOs = convertToModels(menuDOs,new ArrayList<>(menuDOs.size()), MenuVO.class);
            List<MenuVO> menuVOs = convertToModels(menuDOs, new ArrayList<>(menuDOs.size()), MenuVO.class);
            menuVOs.forEach(menuVO -> {
                if(CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())){
                if (CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())) {
                    menuVO.setParentName(CommonContant.DEFAULT_PARENTNAME);
                }else {
                } else {
                    MenuDO menuDO = menuService.findOne(menuVO.getParentId());
                    menuVO.setParentName(menuDO.getName());
                }
            });
            Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            Map<String, List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            menuVOs.forEach(menu->{
            menuVOs.forEach(menu -> {
                List<MenuVO> tmp = map.get(menu.getId());
                menu.setChildren(tmp);
            });
            if(StringUtils.isBlank(name)){
            if (StringUtils.isBlank(name)) {
                menuVOs = menuVOs.stream()
                        .filter(menu -> CommonContant.DEFAULT_PARENTID.equals(menu.getParentId()))
                        .collect(Collectors.toList());
            }
            return success(menuVOs);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
@ -235,18 +236,18 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.GET_TREE)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<MenuVO> getTree (
    public ListEnvelop<MenuVO> getTree(
            @ApiParam(name = "status", value = "状态")
            @RequestParam(value = "status", required = false) String status) {
        try {
            String filters = null;
            if(StringUtils.isNotBlank(status)){
                filters = "status="+status;
            if (StringUtils.isNotBlank(status)) {
                filters = "status=" + status;
            }
            List<MenuDO> menuDOs = menuService.search(null, filters, null);
            List<MenuVO> menuVOs = convertToModels(menuDOs,new ArrayList<>(menuDOs.size()),MenuVO.class);
            Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            menuVOs.forEach(menu->{
            List<MenuVO> menuVOs = convertToModels(menuDOs, new ArrayList<>(menuDOs.size()), MenuVO.class);
            Map<String, List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            menuVOs.forEach(menu -> {
                List<MenuVO> tmp = map.get(menu.getId());
                menu.setChildren(tmp);
            });
@ -255,7 +256,7 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
                    .collect(Collectors.toList());
            return success(menuVOs);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
@ -264,20 +265,20 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.findRoleMenuTree)
    @ApiOperation(value = "获取角色菜单列表")
    public ListEnvelop<MenuVO> findRoleMenuTree (
    public ListEnvelop<MenuVO> findRoleMenuTree(
            @ApiParam(name = "status", value = "状态")
            @RequestParam(value = "status", required = false) String status,
            @ApiParam(name = "name", value = "名称")
            @RequestParam(value = "name", required = false) String name,
            @ApiParam(name = "roleId", value = "角色id")
            @RequestParam(value = "roleId", required = false)String roleId){
            @RequestParam(value = "roleId", required = false) String roleId) {
        try {
            String filters = "";
            if(StringUtils.isNotBlank(status)){
                filters = "status="+status+";";
            if (StringUtils.isNotBlank(status)) {
                filters = "status=" + status + ";";
            }
            if(StringUtils.isNotBlank(name)){
                filters += "name?"+name+";";
            if (StringUtils.isNotBlank(name)) {
                filters += "name?" + name + ";";
            }
@ -285,35 +286,35 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
            List<RoleMenuDO> roleMenus = roleMenuService.findRoleMenu(roleId);
            List<MenuDO> menuDOs = menuService.search(null, filters, "+sort");
            List<MenuVO> menuVOs = convertToModels(menuDOs,new ArrayList<>(menuDOs.size()), MenuVO.class);
            List<MenuVO> menuVOs = convertToModels(menuDOs, new ArrayList<>(menuDOs.size()), MenuVO.class);
            menuVOs.forEach(menuVO -> {
                if(CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())){
                if (CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())) {
                    menuVO.setParentName(CommonContant.DEFAULT_PARENTNAME);
                }else {
                } else {
                    MenuDO menuDO = menuService.findOne(menuVO.getParentId());
                    menuVO.setParentName(menuDO.getName());
                }
                //对比树是否被选择
                if(checkedTree(menuVO.getId(),roleMenus)){
                if (checkedTree(menuVO.getId(), roleMenus)) {
                    menuVO.setChecked(true);
                }else{
                } else {
                    menuVO.setChecked(false);
                }
            });
            Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            Map<String, List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            menuVOs.forEach(menu->{
            menuVOs.forEach(menu -> {
                List<MenuVO> tmp = map.get(menu.getId());
                menu.setChildren(tmp);
            });
            if(StringUtils.isBlank(name)){
            if (StringUtils.isBlank(name)) {
                menuVOs = menuVOs.stream()
                        .filter(menu -> CommonContant.DEFAULT_PARENTID.equals(menu.getParentId()))
                        .collect(Collectors.toList());
            }
            return success(menuVOs);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
@ -321,15 +322,16 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    /**
     * 验证树是否被选择
     *
     * @param menuId
     * @param roleMenus
     * @return
     */
    public Boolean checkedTree(String menuId,List<RoleMenuDO> roleMenus){
    public Boolean checkedTree(String menuId, List<RoleMenuDO> roleMenus) {
        if(roleMenus!=null&&roleMenus.size()>0){
            for(RoleMenuDO roleMenuDO:roleMenus){
                if(menuId.equals(roleMenuDO.getMenuId())){
        if (roleMenus != null && roleMenus.size() > 0) {
            for (RoleMenuDO roleMenuDO : roleMenus) {
                if (menuId.equals(roleMenuDO.getMenuId())) {
                    return true;
                }
            }
@ -339,32 +341,33 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Menu.findLoginRoleMenuTree)
    @ApiOperation(value = "获取角色登录菜单")
    public ListEnvelop<MenuVO> findLoginRoleMenuTree (
    public ListEnvelop<MenuVO> findLoginRoleMenuTree(
            @ApiParam(name = "roleId", value = "角色id")
            @RequestParam(value = "roleId", required = false)String roleId){
            @RequestParam(value = "roleId", required = false) String roleId) {
        try {
            System.out.println("获取角色登录菜单==>参数:" + roleId);
            List<MenuVO> menuVOs = roleMenuService.findMenuByRoleId(roleId);
            menuVOs.forEach(menuVO -> {
                if(CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())){
                if (CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())) {
                    menuVO.setParentName(CommonContant.DEFAULT_PARENTNAME);
                }else {
                } else {
                    MenuDO menuDO = menuService.findOne(menuVO.getParentId());
                    menuVO.setParentName(menuDO.getName());
                }
            });
            Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            Map<String, List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
            menuVOs.forEach(menu->{
            menuVOs.forEach(menu -> {
                List<MenuVO> tmp = map.get(menu.getId());
                menu.setChildren(tmp);
            });
            menuVOs = menuVOs.stream()
                    .filter(menu -> CommonContant.DEFAULT_PARENTID.equals(menu.getParentId()))
                    .collect(Collectors.toList());
            System.out.println("结果==>" + JSON.toJSONString(menuVOs));
            return success(menuVOs);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }

+ 56 - 56
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java

@ -11,13 +11,11 @@ import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -40,16 +38,16 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.User.CREATE)
    @ApiOperation(value = "创建")
    public Envelop create (
    public Envelop create(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData){
            @RequestParam String jsonData) {
        try {
            JSONObject jsonObject =  userService.createUser(jsonData);
            JSONObject jsonObject = userService.createUser(jsonData);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getString("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -63,7 +61,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
        try {
            userService.delete(ids.split(","));
            return success("删除成功");
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -71,16 +69,16 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.User.UPDATE)
    @ApiOperation(value = "更新")
    public Envelop update (
                @ApiParam(name = "jsonData", value = "Json数据")
                @RequestParam(value = "jsonData", required = false) String jsonData) {
    public Envelop update(
            @ApiParam(name = "jsonData", value = "Json数据")
            @RequestParam(value = "jsonData", required = false) String jsonData) {
        try {
            JSONObject jsonObject =  userService.updateUser(jsonData);
            JSONObject jsonObject = userService.updateUser(jsonData);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getString("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -88,7 +86,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.User.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<UserVO> page (
    public PageEnvelop<UserVO> page(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -98,12 +96,12 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size){
            @RequestParam(value = "size") int size) {
        try {
            List<UserDO> userDOS = userService.search(fields, filters, sorts, page, size);
            int count = (int)userService.getCount(filters);
            int count = (int) userService.getCount(filters);
            return success(userDOS, count, page, size, UserVO.class);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return PageEnvelop.getError("操作错误");
        }
@ -111,7 +109,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.User.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<UserVO> list (
    public ListEnvelop<UserVO> list(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -121,7 +119,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
        try {
            List<UserDO> userDOS = userService.search(fields, filters, sorts);
            return success(userDOS, UserVO.class);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("操作错误");
        }
@ -129,16 +127,16 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.User.CHECK_USERNAME)
    @ApiOperation(value = "检查用户名是否可用(message=available代表可用,message=inavailable代表不可用)")
    public Envelop checkName (
    public Envelop checkName(
            @ApiParam(name = "username", value = "用户名", required = true)
            @RequestParam(value = "username", required = false) String username){
            @RequestParam(value = "username", required = false) String username) {
        try {
            if (userService.existUsername(username)) {
                return success("inavailable");
            } else {
                return success("available");
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -146,9 +144,9 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.User.CHECK_MOBILE)
    @ApiOperation(value = "检查手机号是否可用(message=available代表可用,message=inavailable代表不可用)")
    public Envelop checkMobile (
    public Envelop checkMobile(
            @ApiParam(name = "mobile", value = "手机号", required = true)
            @RequestParam(value = "mobile", required = false) String mobile){
            @RequestParam(value = "mobile", required = false) String mobile) {
        try {
            if (userService.existMobile(mobile)) {
@ -156,7 +154,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            } else {
                return success("available");
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -164,11 +162,12 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.User.findUserBaseInfo)
    @ApiOperation(value = "获取登录基本信息")
    public ObjEnvelop<Map<String,Object>> findUserBaseInfo(@ApiParam(name = "id", value = "用户id", required = true)
                                                               @RequestParam(value = "id", required = false)String id){
    public ObjEnvelop<Map<String, Object>> findUserBaseInfo(@ApiParam(name = "id", value = "用户id", required = true)
                                                            @RequestParam(value = "id", required = false) String id) {
        try {
            return success(BaseRequestMapping.User.api_success,userService.findUserBaseInfo(id));
        }catch (Exception e){
            System.out.println("获取登录基本信息==>参数:" + id);
            return success(BaseRequestMapping.User.api_success, userService.findUserBaseInfo(id));
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("操作错误");
        }
@ -185,14 +184,14 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "获取单个用户信息")
    public Envelop doctorHosplist(
            @ApiParam(name = "id", value = "获取单个用户信息")
            @RequestParam(value = "id", required = true) String id){
            @RequestParam(value = "id", required = true) String id) {
        try {
            JSONObject jsonObject = userService.getOneUserInfo(id);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getJSONObject("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -213,14 +212,14 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "userId", value = "userId")
            @RequestParam(value = "userId", required = false) String userId,
            @ApiParam(name = "roleId", value = "roleId")
            @RequestParam(value = "roleId", required = false) String roleId){
            @RequestParam(value = "roleId", required = false) String roleId) {
        try {
            JSONObject jsonObject = userService.generateUserOrgTree(saasid,userId,roleId);
            JSONObject jsonObject = userService.generateUserOrgTree(saasid, userId, roleId);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.get("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -229,6 +228,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    /**
     * 获取用户管理机构树 省/市/区/机构 树形结构数据
     * 新增社区树
     *
     * @param saasid
     * @return
     * @throws Exception
@ -241,14 +241,14 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "userId", value = "userId")
            @RequestParam(value = "userId", required = false) String userId,
            @ApiParam(name = "roleId", value = "roleId")
            @RequestParam(value = "roleId", required = false) String roleId){
            @RequestParam(value = "roleId", required = false) String roleId) {
        try {
            JSONObject jsonObject = userService.orgChoiceInfo(saasid,userId,roleId);
            JSONObject jsonObject = userService.orgChoiceInfo(saasid, userId, roleId);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.get("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -273,11 +273,11 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size){
            @RequestParam(value = "size") int size) {
        try {
            JSONObject result = userService.userInfoList(realName,saasid, roleId,page,size,wechatId);
            return success(result.getJSONArray("msg"),result.getInteger("count"),page,size);
        }catch (Exception e){
            JSONObject result = userService.userInfoList(realName, saasid, roleId, page, size, wechatId);
            return success(result.getJSONArray("msg"), result.getInteger("count"), page, size);
        } catch (Exception e) {
            e.printStackTrace();
            return PageEnvelop.getError("操作错误");
        }
@ -297,14 +297,14 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "id", value = "用户标识")
            @RequestParam(value = "id", required = true) String id,
            @ApiParam(name = "status", value = "生效或失效标识")
            @RequestParam(value = "status", required = true) boolean status){
            @RequestParam(value = "status", required = true) boolean status) {
        try {
            JSONObject jsonObject =  userService.lockOrUnlocakUser(id, status);
            JSONObject jsonObject = userService.lockOrUnlocakUser(id, status);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getString("response"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -318,12 +318,12 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "status", value = "生效或失效标识")
            @RequestParam(value = "status", required = true) boolean status) {
        try {
            JSONObject jsonObject =  userService.enableOrDisable(id, status);
            JSONObject jsonObject = userService.enableOrDisable(id, status);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getString("response"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
@ -341,30 +341,30 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "重置密码")
    public Envelop resetPwd(
            @ApiParam(name = "id", value = "用户标识")
            @RequestParam(value = "id", required = true) String id){
            @RequestParam(value = "id", required = true) String id) {
        try {
            JSONObject jsonObject =  userService.resetPassword(id);
            JSONObject jsonObject = userService.resetPassword(id);
            if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
                return failed(jsonObject.getString("msg"));
            }
            return success(jsonObject.getString("msg"));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }
    }
    
    @PostMapping(value = BaseRequestMapping.User.updatePwd)
    @ApiOperation(value = "修账号密码")
    public Envelop updatePwd(@ApiParam(name = "id", value = "用户ID")
                                  @RequestParam(value = "id", required = true)String id,
                                  @ApiParam(name = "pw", value = "密码")
                                  @RequestParam(value = "pw", required = true)String pw,
                                  @ApiParam(name = "orgPw", value = "原密码")
                                  @RequestParam(value = "orgPw", required = true)String orgPw){
                             @RequestParam(value = "id", required = true) String id,
                             @ApiParam(name = "pw", value = "密码")
                             @RequestParam(value = "pw", required = true) String pw,
                             @ApiParam(name = "orgPw", value = "原密码")
                             @RequestParam(value = "orgPw", required = true) String orgPw) {
        try {
            return success(userService.updatePwd(id,pw,orgPw));
        }catch (Exception e){
            return success(userService.updatePwd(id, pw, orgPw));
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("操作错误");
        }

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageItemService.java

@ -58,9 +58,10 @@ public class ServicePackageItemService extends BaseJpaService<ServicePackageItem
            itemDO.setServicePackageId("system");
            itemDO.setCreateTime(DateUtil.getStringDate());
            itemDO.setDel("1");
            servicePackageItemDao.save(itemDO);
            //保存子项目
            String subItemIdList = itemDO.getSubItemId();
            itemDO = servicePackageItemDao.save(itemDO);
            for (String subItemId : subItemIdList.split(",")) {
                ServicePackageItemRelationalDO entity = new ServicePackageItemRelationalDO();
                entity.setItemId(itemDO.getId());

+ 64 - 40
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageService.java

@ -1,15 +1,16 @@
package com.yihu.jw.base.service.servicePackage;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.servicePackage.ServiceItemConfigDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageSignRecordDao;
import com.yihu.jw.base.dao.system.SystemDictEntryDao;
import com.yihu.jw.base.dao.team.BaseTeamDao;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServiceItemConfig;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.system.SystemDictEntryDO;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
@ -22,6 +23,7 @@ import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
@ -34,7 +36,6 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@Service
@ -57,62 +58,85 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    private SystemDictEntryDao systemDictEntryDao;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private ServiceItemConfigDao itemConfigDao;
    @Autowired
    private ServicePackageSignRecordDao servicePackageSignRecordDao;
    @Transactional(rollbackFor = Exception.class)
    public JSONObject create(ServicePackageDO servicePackageDO,String uid){
    public JSONObject create(ServicePackageDO servicePackageDO, String uid) {
        JSONObject result = new JSONObject();
        UserDO userDO = userDao.findById(uid);
        List<ServicePackageItemDO> itemDOList = servicePackageDO.getPackageItemDOList();
        if(itemDOList==null){
        if (itemDOList == null) {
            servicePackageDO.setNum(0);
        }else {
        } else {
            servicePackageDO.setNum(itemDOList.size());
        }
        if(StringUtil.isEmpty(servicePackageDO.getId())){
        if (StringUtil.isEmpty(servicePackageDO.getId())) {
            //新增
            servicePackageDO.setCreateTime(new Date());
            if(userDO!=null){
            if (userDO != null) {
                servicePackageDO.setCreateUser(userDO.getId());
                servicePackageDO.setCreateUserName(userDO.getName());
            }
            servicePackageDO=servicePackageDao.save(servicePackageDO);
        }else{
            servicePackageDO = servicePackageDao.save(servicePackageDO);
        } else {
            //修改
            servicePackageDO.setUpdateTime(new Date());
            if(userDO!=null){
            if (userDO != null) {
                servicePackageDO.setUpdateUser(userDO.getId());
                servicePackageDO.setUpdateUserName(userDO.getName());
            }
            servicePackageDO= servicePackageDao.save(servicePackageDO);
            servicePackageDO = servicePackageDao.save(servicePackageDO);
        }
        List<ServicePackageItemDO> itemDOs = new ArrayList<>();
        for (ServicePackageItemDO itemDO:itemDOList){
        List<ServiceItemConfig> itemConfigList = new ArrayList<>();
        String sql = " SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'plan_frequency' limit 1";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        String frequencyCode = "0 0 10 ? * *";
        if (list.size() > 0) {
            frequencyCode = list.get(0).get("dict_code") + "";
        }
        for (ServicePackageItemDO itemDO : itemDOList) {
            boolean flag = false;
            ServicePackageItemDO itemDO1 = new ServicePackageItemDO();
            if(StringUtils.isNotBlank(itemDO.getId())){
            if (StringUtils.isNotBlank(itemDO.getId())) {
                itemDO1 = servicePackageItemDao.findOne(itemDO.getId());
            }else {
                itemDO1 = itemDO;
                itemDO1.setCreateTime(DateUtil.getStringDate());
                SystemDictEntryDO systemDictEntryDO = systemDictEntryDao.findByDictCodeAndCode("service_item",itemDO.getCode());
                if (systemDictEntryDO!=null){
                    if (StringUtils.isNotBlank(systemDictEntryDO.getRemark())){//服务项所属专题不为空
                        itemDO1.setTopicItem(systemDictEntryDO.getRemark());
                    }
                }
            }
            if ("system".equals(itemDO1.getServicePackageId())) {
                flag = true;
                BeanUtils.copyProperties(itemDO1, itemDO);
                itemDO.setId(null);
                itemDO.setCreateTime(DateUtil.getStringDate());
                itemDO.setServicePackageItemId(itemDO1.getId());//20231110补的
                itemDO.setServicePackageId(servicePackageDO.getId());
            }
            servicePackageItemDao.save(itemDO);
            if (flag) {
                String itemId = itemDO.getId();
                //新增的服务项新增默认执行计划
                ServiceItemConfig itemConfig = new ServiceItemConfig();
                itemConfig.setPackageId(servicePackageDO.getId());
                itemConfig.setServerItemId(itemId);
                itemConfig.setAssessType("0");
                itemConfig.setBookingType("1");
                itemConfig.setLateServeType("0");
                itemConfig.setServerCount("1");
                itemConfig.setPlanStartTimeType("0");
                itemConfig.setServerTimeType("1");
                itemConfig.setFrequencyCode(frequencyCode);
                itemConfig.setTemplateType("0");
                itemConfigList.add(itemConfig);
            }
        }
            itemDO1.setDictId(itemDO.getId());
            itemDO1.setServicePackageId(servicePackageDO.getId());
            itemDOs.add(itemDO1);
        if (itemConfigList.size() > 0) {
            itemConfigDao.save(itemConfigList);
        }
        servicePackageItemDao.save(itemDOs);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg","操作成功");
        result.put("msg", "操作成功");
        return result;
    }
@ -142,29 +166,29 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        String pageSql = " limit " + (page - 1) * size + "," + size;
        detailSql += sql + pageSql;
        countSql += sql;
        List<ServicePackageDO> list = jdbcTemplate.query(detailSql,new BeanPropertyRowMapper<>(ServicePackageDO.class));
        List<ServicePackageDO> list = jdbcTemplate.query(detailSql, new BeanPropertyRowMapper<>(ServicePackageDO.class));
        List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS = wlyyHospitalSysDictDao.findByDictName("serviceType");
        List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS1 = wlyyHospitalSysDictDao.findByDictName("isEffect");
        for (ServicePackageDO servicePackageDO:list){
        for (ServicePackageDO servicePackageDO : list) {
            List<ServicePackageItemDO> itemDOList = servicePackageItemDao.findByServicePackageId(servicePackageDO.getId());
            List<String> orgNames = itemDOList.stream().map(p -> p.getOrgName()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
            List<String> orgCodes = itemDOList.stream().map(p -> p.getOrgCode()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
            servicePackageDO.setOrgNames(StringUtils.join(orgNames,","));
            servicePackageDO.setOrgCodes(StringUtils.join(orgCodes,","));
            for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:wlyyHospitalSysDictDOS){
                if (servicePackageDO.getType().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
            servicePackageDO.setOrgNames(StringUtils.join(orgNames, ","));
            servicePackageDO.setOrgCodes(StringUtils.join(orgCodes, ","));
            for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO : wlyyHospitalSysDictDOS) {
                if (servicePackageDO.getType().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())) {
                    servicePackageDO.setTypeName(wlyyHospitalSysDictDO.getDictValue());
                }
            }
            for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:wlyyHospitalSysDictDOS1){
                if (servicePackageDO.getDel().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
            for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO : wlyyHospitalSysDictDOS1) {
                if (servicePackageDO.getDel().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())) {
                    servicePackageDO.setDelName(wlyyHospitalSysDictDO.getDictValue());
                }
            }
        }
        Long count = jdbcTemplate.queryForObject(countSql, Long.class);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,size,count);
        return PageEnvelop.getSuccessListWithPage("获取成功", list, page, size, count);
    }
    public void deleteById(String id) {
@ -185,11 +209,11 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        jdbcTemplate.execute(sql01);
    }
    public void changeState(String id,String del,String uid) {
    public void changeState(String id, String del, String uid) {
        ServicePackageDO packageDO = servicePackageDao.findOne(id);
        packageDO.setDel(del);
        UserDO userDO = userDao.findById(uid);
        if(userDO!=null){
        if (userDO != null) {
            packageDO.setUpdateUser(userDO.getId());
            packageDO.setUpdateUserName(userDO.getName());
        }

+ 217 - 207
svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java

@ -12,7 +12,6 @@ import com.yihu.jw.base.dao.saas.SaasDao;
import com.yihu.jw.base.service.org.BaseOrgUserService;
import com.yihu.jw.base.service.org.OrgTree;
import com.yihu.jw.base.service.org.OrgTreeService;
import com.yihu.jw.base.service.org.*;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.base.util.JavaBeanUtils;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
@ -74,7 +73,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    private WlyyUserAreaDao userAreaDao;
    @Autowired
    private WlyyUserEquipmentDao userEquipmentDao;
    
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
@ -82,7 +81,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    @Value("${configDefault.saasId}")
    private String defaultSaasId;
    
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
@ -93,16 +92,16 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    public UserDO registerWithIdcard(UserDO userDO) {
        userDO.setSalt(randomString(5));
        if (StringUtils.isEmpty(userDO.getEnabled())){
        if (StringUtils.isEmpty(userDO.getEnabled())) {
            userDO.setEnabled(true);
        }else {
        } else {
            userDO.setEnabled(userDO.getEnabled());
        }
        userDO.setLocked(false);
        userDO.setLoginFailureCount(0);
        String password = userDO.getPassword();
        if (StringUtils.isEmpty(password)) {
            password = userDO.getIdcard().substring(userDO.getIdcard().length()-6,userDO.getIdcard().length());
            password = userDO.getIdcard().substring(userDO.getIdcard().length() - 6, userDO.getIdcard().length());
        }
        userDO.setPassword(MD5.md5Hex(password + "{" + userDO.getSalt() + "}"));
        return userDao.save(userDO);
@ -121,7 +120,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        userDO.setLoginFailureCount(0);
        String password = userDO.getPassword();
        if (StringUtils.isEmpty(password)) {
            password = userDO.getMobile().substring(userDO.getMobile().length()-6, userDO.getMobile().length());
            password = userDO.getMobile().substring(userDO.getMobile().length() - 6, userDO.getMobile().length());
        }
        userDO.setPassword(MD5.md5Hex(password + "{" + userDO.getSalt() + "}"));
        return userDao.save(userDO);
@ -163,11 +162,12 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 判断用户名是否存在
     *
     * @param username
     * @return
     */
    public Boolean existUserName(String username){
        if(StringUtils.isEmpty(username)) {
    public Boolean existUserName(String username) {
        if (StringUtils.isEmpty(username)) {
            return null;
        }
        return userDao.existsByUsername(username);
@ -191,9 +191,10 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        Map<String, Object> userinfo = new HashedMap();
        UserDO user = userDao.findOne(id);
        System.out.println("用户信息:" + user);
        RoleDO role = null;
        if (user != null ) {
            if(!user.getEnabled()){
        if (user != null) {
            if (!user.getEnabled()) {
                throw new Exception("用户已失效!");
            }
            userinfo.put("id", user.getId());
@ -206,10 +207,10 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
            userinfo.put("roleCode", role.getCode());
            userinfo.put("system", role.getSystem());
            if (role.getType()==1) {
            if (role.getType() == 1) {
                //平台管理员信息获取
            } else if (role.getType()==2) {
            } else if (role.getType() == 2) {
                //saas平台管理员信息获取
                if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getId())) {
                    SaasDO saas = saasDao.findOne(user.getSaasId());
@ -219,31 +220,31 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                    userinfo.put("saas", ss);
                }
            } else if (role.getType()==3) {
            } else if (role.getType() == 3) {
                //機構管理員信息獲取
                String sql = "SELECT " +
                            " g.code AS orgCode, " +
                            " g.province_code AS provinceCode, " +
                            " g.province_name AS privinceName, " +
                            " g.city_code AS cityCode, " +
                            " g.city_name AS cityName, " +
                            " g.town_code AS townCode, " +
                            " g.town_name AS townName, " +
                            " g.street_code AS streetCode, " +
                            " g.street_name AS streetName, " +
                            " g.name, " +
                            " address " +
                            " FROM " +
                            " base_org g " +
                            " JOIN base_org_user u ON g.`code` = u.org_code " +
                            " WHERE  " +
                            " u.user_id = '" + id + "'";
                    List<Map<String, Object>> org = jdbcTemplate.queryForList(sql);
                    if (org != null && org.size() > 0) {
                        userinfo.put("org", org.get(0));
                    } else {
                        userinfo.put("org", null);
                    }
                        " g.code AS orgCode, " +
                        " g.province_code AS provinceCode, " +
                        " g.province_name AS privinceName, " +
                        " g.city_code AS cityCode, " +
                        " g.city_name AS cityName, " +
                        " g.town_code AS townCode, " +
                        " g.town_name AS townName, " +
                        " g.street_code AS streetCode, " +
                        " g.street_name AS streetName, " +
                        " g.name, " +
                        " address " +
                        " FROM " +
                        " base_org g " +
                        " JOIN base_org_user u ON g.`code` = u.org_code " +
                        " WHERE  " +
                        " u.user_id = '" + id + "'";
                List<Map<String, Object>> org = jdbcTemplate.queryForList(sql);
                if (org != null && org.size() > 0) {
                    userinfo.put("org", org.get(0));
                } else {
                    userinfo.put("org", null);
                }
            }
        }
        //機構管理員信息獲取
@ -270,40 +271,40 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        } else {
            userinfo.put("org", null);
        }
    
        //密码过期
        userinfo.put("authPw",findDoctorPwlimitDate(id));
        //密码过期
        userinfo.put("authPw", findDoctorPwlimitDate(id));
        System.out.println("信息==>" + JSON.toJSONString(userinfo));
        return userinfo;
    }
    
    public com.alibaba.fastjson.JSONObject findDoctorPwlimitDate(String user){
    public com.alibaba.fastjson.JSONObject findDoctorPwlimitDate(String user) {
        String key = "base:authPw:user:" + user;
        String authPw = redisTemplate.opsForValue().get(key);
        com.alibaba.fastjson.JSONObject valueJson = null;
        if(org.apache.commons.lang3.StringUtils.isNotBlank(authPw)){
            
        if (org.apache.commons.lang3.StringUtils.isNotBlank(authPw)) {
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById("pwOverDue");
            String code[] = wlyyHospitalSysDictDO.getDictCode().split(",");
            Integer maxDateInt = Integer.parseInt(code[0]);
            Integer remainDateInt = Integer.parseInt(code[1]);
            
            valueJson = JSON.parseObject(authPw);
            Long updateTimeLong = valueJson.getLong("updateTime");
            Date updateTime = new Date();
            updateTime.setTime(updateTimeLong);
            Date maxDate = DateUtil.getPreDays(updateTime,maxDateInt);
            
            Long betweenDate = (maxDate.getTime() - new Date().getTime())/(60*60*24*1000);
            valueJson.put("betweenDate",betweenDate);
            if(betweenDate<remainDateInt){
                valueJson.put("remaind",true);
            }else {
                valueJson.put("remaind",false);
            Date maxDate = DateUtil.getPreDays(updateTime, maxDateInt);
            Long betweenDate = (maxDate.getTime() - new Date().getTime()) / (60 * 60 * 24 * 1000);
            valueJson.put("betweenDate", betweenDate);
            if (betweenDate < remainDateInt) {
                valueJson.put("remaind", true);
            } else {
                valueJson.put("remaind", false);
            }
        }else {
        } else {
            valueJson = new com.alibaba.fastjson.JSONObject();
            valueJson.put("isChanged",false);
            valueJson.put("isChanged", false);
        }
        return valueJson;
    }
@ -349,7 +350,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        //组装用户与机构的关联关系
        List<BaseOrgUserDO> orgList = new ArrayList<>();
        BaseOrgUserDO orgUserDO = null;
        if(!CollectionUtils.isEmpty(org)){
        if (!CollectionUtils.isEmpty(org)) {
            for (Object obj : org) {
                try {
                    orgUserDO = objectMapper.readValue(obj.toString(), BaseOrgUserDO.class);
@ -365,9 +366,9 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        }
        //area:[{"city":"","cityName":"","town":"","townName":"","hospital":"","hospitalName":""}]
        //用户所属区域添加
        if (area!=null&&area.size()!=0){
        if (area != null && area.size() != 0) {
            userAreaDao.deleteByUserId(userDO.getId());
            for (int i=0;i<area.size();i++){
            for (int i = 0; i < area.size(); i++) {
                JSONObject object = area.getJSONObject(i);
                WlyyUserAreaDO userAreaDO = new WlyyUserAreaDO();
                userAreaDO.setUserId(userDO.getId());
@ -375,7 +376,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                userAreaDO.setCityName(object.getString("cityName"));
                userAreaDO.setTown(object.getString("town"));
                userAreaDO.setTownName(object.getString("townName"));
                if (!StringUtils.isEmpty(object.getString("hospital"))){
                if (!StringUtils.isEmpty(object.getString("hospital"))) {
                    userAreaDO.setHospital(object.getString("hospital"));
                    userAreaDO.setHospitalName(object.getString("hospitalName"));
                }
@ -387,9 +388,9 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        }
        //用户所管设备添加
        //equipment:[{"equipmentId":"","equipmentName":""}]
        if (equipment!=null&&equipment.size()!=0){
        if (equipment != null && equipment.size() != 0) {
            userEquipmentDao.deleteByUserId(userDO.getId());
            for (int i=0;i<equipment.size();i++){
            for (int i = 0; i < equipment.size(); i++) {
                JSONObject object = equipment.getJSONObject(i);
                WlyyUserEquipmentDO userEquipmentDO = new WlyyUserEquipmentDO();
                userEquipmentDO.setDel(1);
@ -398,7 +399,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                userEquipmentDO.setCityName(object.getString("cityName"));
                userEquipmentDO.setTown(object.getString("town"));
                userEquipmentDO.setTownName(object.getString("townName"));
                if (!StringUtils.isEmpty(object.getString("hospital"))){
                if (!StringUtils.isEmpty(object.getString("hospital"))) {
                    userEquipmentDO.setHospital(object.getString("hospital"));
                    userEquipmentDO.setHospitalName(object.getString("hospitalName"));
                }
@ -410,8 +411,8 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
            }
        }
        JSONObject returnMsg = new JSONObject();
        returnMsg.put("username",userDO.getUsername());
        returnMsg.put("password",userDO.getIdcard().substring(userDO.getIdcard().length()-6,userDO.getIdcard().length()));
        returnMsg.put("username", userDO.getUsername());
        returnMsg.put("password", userDO.getIdcard().substring(userDO.getIdcard().length() - 6, userDO.getIdcard().length()));
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", returnMsg);
        return result;
@ -481,9 +482,9 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        //area:[{"city":"","cityName":"","town":"","townName":"","hospital":"","hospitalName":""}]
        //用户所属区域添加
        if (area!=null&&area.size()!=0){
        if (area != null && area.size() != 0) {
            userAreaDao.deleteByUserId(userDO.getId());
            for (int i=0;i<area.size();i++){
            for (int i = 0; i < area.size(); i++) {
                JSONObject object = area.getJSONObject(i);
                WlyyUserAreaDO userAreaDO = new WlyyUserAreaDO();
                userAreaDO.setUserId(userDO.getId());
@ -491,7 +492,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                userAreaDO.setCityName(object.getString("cityName"));
                userAreaDO.setTown(object.getString("town"));
                userAreaDO.setTownName(object.getString("townName"));
                if (!StringUtils.isEmpty(object.getString("hospital"))){
                if (!StringUtils.isEmpty(object.getString("hospital"))) {
                    userAreaDO.setHospital(object.getString("hospital"));
                    userAreaDO.setHospitalName(object.getString("hospitalName"));
                }
@ -503,9 +504,9 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        }
        //用户所管设备添加
        //equipment:[{"equipmentId":"","equipmentName":""}]
        if (equipment!=null&&equipment.size()!=0){
        if (equipment != null && equipment.size() != 0) {
            userEquipmentDao.deleteByUserId(userDO.getId());
            for (int i=0;i<equipment.size();i++){
            for (int i = 0; i < equipment.size(); i++) {
                JSONObject object = equipment.getJSONObject(i);
                WlyyUserEquipmentDO userEquipmentDO = new WlyyUserEquipmentDO();
                userEquipmentDO.setDel(1);
@ -514,7 +515,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                userEquipmentDO.setCityName(object.getString("cityName"));
                userEquipmentDO.setTown(object.getString("town"));
                userEquipmentDO.setTownName(object.getString("townName"));
                if (!StringUtils.isEmpty(object.getString("hospital"))){
                if (!StringUtils.isEmpty(object.getString("hospital"))) {
                    userEquipmentDO.setHospital(object.getString("hospital"));
                    userEquipmentDO.setHospitalName(object.getString("hospitalName"));
                }
@ -533,22 +534,23 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 获取单个用户信息
     *
     * @param userId 用户id
     * @return
     */
    public JSONObject getOneUserInfo(String userId) throws Exception{
    public JSONObject getOneUserInfo(String userId) throws Exception {
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(userId)){
            result.put("msg","parameter userId is null ");
            result.put("response",ConstantUtils.FAIL);
        if (StringUtils.isEmpty(userId)) {
            result.put("msg", "parameter userId is null ");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        //用户基本信息
        UserDO user = userDao.findOne(userId);
        if(null == user){
            result.put("msg","User not exist for id:" + userId);
            result.put("response",ConstantUtils.FAIL);
        if (null == user) {
            result.put("msg", "User not exist for id:" + userId);
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        //用户角色
@ -561,31 +563,32 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        List<WlyyUserEquipmentDO> userEquipmentDOList = userEquipmentDao.findAllByUserId(userId);
        //用户关联的机构
        List<BaseOrgUserDO>  orgList = baseOrgUserService.findAllByUserId(user.getId());
        List<BaseOrgUserDO> orgList = baseOrgUserService.findAllByUserId(user.getId());
        JSONObject userInfo = new JSONObject();
        userInfo.put("user",user);
        userInfo.put("role",roleDO);
        userInfo.put("userArea",userAreaDOList);
        userInfo.put("userEquipment",userEquipmentDOList);
        userInfo.put("org",orgList);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg",userInfo);
        userInfo.put("user", user);
        userInfo.put("role", roleDO);
        userInfo.put("userArea", userAreaDOList);
        userInfo.put("userEquipment", userEquipmentDOList);
        userInfo.put("org", orgList);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", userInfo);
        return result;
    }
    /**
     * 租户只能给用户归属到自己租户底下的机构
     * 机构管理员只能属于一个租户
     *
     * @param saasid
     * @param userId
     * @return
     */
    public JSONObject generateUserOrgTree(String saasid,String userId,String roleId) throws IOException {
    public JSONObject generateUserOrgTree(String saasid, String userId, String roleId) throws IOException {
        JSONObject result = new JSONObject();
        List<OrgTree> orgList = new ArrayList<>();
        // 有归属租户加载saas底下的所有机构树列表,角色为机构管理员时不需要选管理机构
        String admin ="admin";
        if(!StringUtils.isEmpty(saasid) && !StringUtils.endsWithIgnoreCase(admin,roleId)){
        String admin = "admin";
        if (!StringUtils.isEmpty(saasid) && !StringUtils.endsWithIgnoreCase(admin, roleId)) {
            StringBuilder sql = new StringBuilder("SELECT " +
                    "  tree.* " +
                    " FROM " +
@ -597,12 +600,12 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                    " and  saas.saasid = '{saasid}' " +
                    " and  (tree.code = org.code or tree.code = org.province_code or tree.code = org.city_code or tree.code = town_code) " +
                    " ORDER BY tree.name;");
            orgList = jdbcTemplate.query(sql.toString().replace("{saasid}",saasid),new BeanPropertyRowMapper(OrgTree.class));
            orgList = jdbcTemplate.query(sql.toString().replace("{saasid}", saasid), new BeanPropertyRowMapper(OrgTree.class));
        }
        if(!StringUtils.isEmpty(userId)){// 用户不为空表示修改,需要筛选出用户已经选择过的机构,设置checked为true
        if (!StringUtils.isEmpty(userId)) {// 用户不为空表示修改,需要筛选出用户已经选择过的机构,设置checked为true
            Set<String> codeSet = baseOrgUserService.findorgCodeListByUserId(userId);
            orgList.forEach( one -> {
                if(codeSet.contains(one.getCode())){
            orgList.forEach(one -> {
                if (codeSet.contains(one.getCode())) {
                    one.setChecked(true);
                }
            });
@ -619,11 +622,11 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
            orgList = jdbcTemplate.query(sql.toString().replace("{userId}",userId),new BeanPropertyRowMapper(OrgTree.class));*/
        }
        if(!CollectionUtils.isEmpty(orgList)){
            String tree = orgTreeService.makeTree(orgList,false,true);
            result.put("msg",objectMapper.readValue(tree,JSONArray.class));
        }else{
            result.put("msg",orgList);
        if (!CollectionUtils.isEmpty(orgList)) {
            String tree = orgTreeService.makeTree(orgList, false, true);
            result.put("msg", objectMapper.readValue(tree, JSONArray.class));
        } else {
            result.put("msg", orgList);
        }
        result.put("response", ConstantUtils.SUCCESS);
        return result;
@ -632,34 +635,35 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 租户只能给用户归属到自己租户底下的机构
     * 机构管理员只能属于一个租户,增加社区树
     *
     * @param saasid
     * @param userId
     * @return
     */
    public JSONObject orgChoiceInfo(String saasid,String userId,String roleId) throws IOException {
    public JSONObject orgChoiceInfo(String saasid, String userId, String roleId) throws IOException {
        JSONObject result = new JSONObject();
        List<OrgTree> orgList = new ArrayList<>();
        String admin = "admin";
        // 有归属租户加载saas底下的所有机构树列表,角色为机构管理员时不需要选管理机构
        if(!StringUtils.isEmpty(saasid) && !StringUtils.endsWithIgnoreCase(admin,roleId)){
        if (!StringUtils.isEmpty(saasid) && !StringUtils.endsWithIgnoreCase(admin, roleId)) {
            StringBuilder sql = new StringBuilder("SELECT tree.*  FROM org_tree tree, base_org org, base_org_saas saas WHERE org.code = saas.org_code and 'null'= '{saasid}';");
 //           StringBuilder sql = new StringBuilder("SELECT tree.* FROM base_org base , org_tree tree WHERE base.`code` = tree.code ");
            orgList = jdbcTemplate.query(sql.toString().replace("{saasid}","null"),new BeanPropertyRowMapper(OrgTree.class));
            //           StringBuilder sql = new StringBuilder("SELECT tree.* FROM base_org base , org_tree tree WHERE base.`code` = tree.code ");
            orgList = jdbcTemplate.query(sql.toString().replace("{saasid}", "null"), new BeanPropertyRowMapper(OrgTree.class));
        }
        if(!StringUtils.isEmpty(userId)){// 用户不为空表示修改,需要筛选出用户已经选择过的机构,设置checked为true
        if (!StringUtils.isEmpty(userId)) {// 用户不为空表示修改,需要筛选出用户已经选择过的机构,设置checked为true
            Set<String> codeSet = baseOrgUserService.findorgCodeListByUserId(userId);
            orgList.forEach( one -> {
                if(codeSet.contains(one.getCode())){
            orgList.forEach(one -> {
                if (codeSet.contains(one.getCode())) {
                    one.setChecked(true);
                }
            });
        }
        if(!CollectionUtils.isEmpty(orgList)){
            String tree = orgTreeService.makeTree(orgList,false,true);
            result.put("msg",objectMapper.readValue(tree,JSONArray.class));
        }else{
            result.put("msg",orgList);
        if (!CollectionUtils.isEmpty(orgList)) {
            String tree = orgTreeService.makeTree(orgList, false, true);
            result.put("msg", objectMapper.readValue(tree, JSONArray.class));
        } else {
            result.put("msg", orgList);
        }
        result.put("response", ConstantUtils.SUCCESS);
        return result;
@ -668,28 +672,29 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 用户修改密码
     *
     * @param userId
     * @return
     */
    public JSONObject updatePwd(String userId,String pwd,String oldpwd){
    public JSONObject updatePwd(String userId, String pwd, String oldpwd) {
        JSONObject result = new JSONObject();
        UserDO user = userDao.findOne(userId);
        if(null == user){
        if (null == user) {
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","user not exist for id : " + userId);
            result.put("msg", "user not exist for id : " + userId);
            return result;
        }
    
        String orgPwMd5 = MD5.md5Hex(oldpwd + "{" + user.getSalt() + "}");
        if(!orgPwMd5.equals(user.getPassword())){
        if (!orgPwMd5.equals(user.getPassword())) {
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","旧密码不正确!");
            result.put("msg", "旧密码不正确!");
            return result;
        }
        if(StringUtils.isEmpty(pwd)){
        if (StringUtils.isEmpty(pwd)) {
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","新密码不能为空!");
            result.put("msg", "新密码不能为空!");
            return result;
        }
@ -700,68 +705,69 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        user.setPassword(MD5.md5Hex(pwd + "{" + user.getSalt() + "}"));
        userDao.save(user);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", "修改成功");
    
        //设置用户密码过期时间
        saveUserPwlimitDate(userId);
        
        return result;
    }
    
    public boolean saveUserPwlimitDate(String user){
    public boolean saveUserPwlimitDate(String user) {
        String key = "base:authPw:user:" + user;
        com.alibaba.fastjson.JSONObject valueJson = new com.alibaba.fastjson.JSONObject();
        valueJson.put("updateTime",new Date().getTime());
        valueJson.put("isChanged",true);
        redisTemplate.opsForValue().set(key,valueJson.toJSONString());
        valueJson.put("updateTime", new Date().getTime());
        valueJson.put("isChanged", true);
        redisTemplate.opsForValue().set(key, valueJson.toJSONString());
        return true;
    }
    
    /**
     * 用户重置密码
     *
     * @param userId
     * @return
     */
    public JSONObject resetPassword(String userId){
    public JSONObject resetPassword(String userId) {
        JSONObject result = new JSONObject();
        UserDO user = userDao.findOne(userId);
        if(null == user){
        if (null == user) {
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","user not exist for id : " + userId);
            result.put("msg", "user not exist for id : " + userId);
            return result;
        }
//        registerWithIdcard(user);
        String idcard = user.getIdcard();
        String mobile = user.getMobile();
        String password = null;
        
        if(!StringUtils.isEmpty(password)&&idcard.length()>10){
            password = idcard.substring(idcard.length()-6,idcard.length());
        }else if(!StringUtils.isEmpty(mobile)&&mobile.length()>=11){
            password = mobile.substring(mobile.length()-6,mobile.length());
        }
        
        if(StringUtils.isEmpty(password)){
        if (!StringUtils.isEmpty(password) && idcard.length() > 10) {
            password = idcard.substring(idcard.length() - 6, idcard.length());
        } else if (!StringUtils.isEmpty(mobile) && mobile.length() >= 11) {
            password = mobile.substring(mobile.length() - 6, mobile.length());
        }
        if (StringUtils.isEmpty(password)) {
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","idcard or moblie not exist : " + userId);
            result.put("msg", "idcard or moblie not exist : " + userId);
            return result;
        }
        
        user.setSalt(randomString(5));
        user.setEnabled(true);
        user.setLocked(false);
        user.setLoginFailureCount(0);
        if ("iottest".equals(springProfile)||//物联网
             "iotprod".equals(springProfile)||//物联网
             "iotprodIn".equals(springProfile)//物联网
        if ("iottest".equals(springProfile) ||//物联网
                "iotprod".equals(springProfile) ||//物联网
                "iotprodIn".equals(springProfile)//物联网
        ) {
            password = "a"+password+"*";
            password = "a" + password + "*";
        }
        user.setPassword(MD5.md5Hex(password + "{" + user.getSalt() + "}"));
        userDao.save(user);
        saveUserPwlimitDate(userId);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", password);
        return result;
    }
@ -769,11 +775,12 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 判断用户账号是否存在
     *
     * @param code
     * @return
     */
    public Boolean existUsername(String code){
        if(StringUtils.isEmpty(code)) {
    public Boolean existUsername(String code) {
        if (StringUtils.isEmpty(code)) {
            return null;
        }
        return userDao.existsByUsername(code);
@ -782,58 +789,61 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 生效或失效单个用户
     *
     * @param userId
     * @param lock
     * @return
     */
    public JSONObject lockOrUnlocakUser(String userId,boolean lock){
    public JSONObject lockOrUnlocakUser(String userId, boolean lock) {
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(lock)){
            result.put("msg","parameter id or del is null");
            result.put("response",ConstantUtils.FAIL);
        if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(lock)) {
            result.put("msg", "parameter id or del is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        UserDO user = userDao.findOne(userId);
        if( null == user ){
            result.put("msg","user not exist for id:" + userId);
            result.put("response",ConstantUtils.FAIL);
        if (null == user) {
            result.put("msg", "user not exist for id:" + userId);
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        user.setLocked(lock);
        user.setLockedDate(new Date());
        this.save(user);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("response", ConstantUtils.SUCCESS);
        return result;
    }
    /**
     * 生效或失效单个用户
     *
     * @param userId
     * @param lock
     * @return
     */
    public JSONObject enableOrDisable(String userId,boolean lock){
    public JSONObject enableOrDisable(String userId, boolean lock) {
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(lock)){
            result.put("msg","parameter id or del is null");
            result.put("response",ConstantUtils.FAIL);
        if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(lock)) {
            result.put("msg", "parameter id or del is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        UserDO user = userDao.findOne(userId);
        if( null == user ){
            result.put("msg","user not exist for id:" + userId);
            result.put("response",ConstantUtils.FAIL);
        if (null == user) {
            result.put("msg", "user not exist for id:" + userId);
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        user.setEnabled(lock);
        this.save(user);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("response", ConstantUtils.SUCCESS);
        return result;
    }
    /**
     * 用户信息列表
     *
     * @param name
     * @param saasid
     * @param roleId
@ -842,7 +852,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
     * @return
     * @throws Exception
     */
    public JSONObject userInfoList(String name,String saasid,String roleId,int page,int size,String wechatId) throws Exception {
    public JSONObject userInfoList(String name, String saasid, String roleId, int page, int size, String wechatId) throws Exception {
        JSONObject result = new JSONObject();
   /*     int start = 0 == page ? page++ : (page - 1) * size;
        int end = 0 == size ? 15 : page * size;*/
@ -899,7 +909,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
//        result.put("msg", JavaBeanUtils.getInstance().mapListJson(list));
        String finalSql="SELECT\n" +
        String finalSql = "SELECT\n" +
                "\t\t\tusr . ID AS \"id\",\n" +
                "\t\t\tusr . NAME AS \"realName\",\n" +
                "\t\t\tusr .username AS \"username\",\n" +
@ -918,32 +928,32 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                "\t\tbase_role ROLE\n" +
                "\tWHERE\n" +
                "\t\tusr .saas_id = saas. ID\n" +
                "\tAND usr .role_id = ROLE . ID\n" ;
                if(!realName.equals(null) && !realName.equals("")){
                    finalSql = finalSql + " and usr . NAME LIKE '%"+realName+"%'";
                }
                if(!saasidValue.equals(null) && !saasidValue.equals("")){
                    finalSql = finalSql + " and saas. id = '"+saasidValue+"'";
                }
                if(!roleIdValue.equals(null) && !roleIdValue.equals("")){
                    finalSql = finalSql + " and usr .role_id = '"+roleIdValue+"'";
                }
                finalSql = finalSql + " ORDER BY usr .create_time DESC";
        Logger.getAnonymousLogger().info("finalSql="+finalSql);
                "\tAND usr .role_id = ROLE . ID\n";
        if (!realName.equals(null) && !realName.equals("")) {
            finalSql = finalSql + " and usr . NAME LIKE '%" + realName + "%'";
        }
        if (!saasidValue.equals(null) && !saasidValue.equals("")) {
            finalSql = finalSql + " and saas. id = '" + saasidValue + "'";
        }
        if (!roleIdValue.equals(null) && !roleIdValue.equals("")) {
            finalSql = finalSql + " and usr .role_id = '" + roleIdValue + "'";
        }
        finalSql = finalSql + " ORDER BY usr .create_time DESC";
        Logger.getAnonymousLogger().info("finalSql=" + finalSql);
        String sql = finalSql
                .replace("{realName}","%" + realName + "%")
                .replace("{saasid}",saasidValue)
                .replace("{roleId}",roleIdValue);
                .replace("{realName}", "%" + realName + "%")
                .replace("{saasid}", saasidValue)
                .replace("{roleId}", roleIdValue);
        List<Map<String, Object>> list=null;
        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
        List<Map<String, Object>> list = null;
        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)) {
            if (flag){
                sql+=" LIMIT  " + (page - 1) * size + "," + size + "";
                Logger.getAnonymousLogger().info("sql="+sql);
            if (flag) {
                sql += " LIMIT  " + (page - 1) * size + "," + size + "";
                Logger.getAnonymousLogger().info("sql=" + sql);
                list = jdbcTemplate.queryForList(sql);
            }else {
                String oracleSql="SELECT\n" +
            } else {
                String oracleSql = "SELECT\n" +
                        "\t*\n" +
                        "FROM\n" +
                        "\t(\n" +
@ -952,21 +962,21 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                        "\t\tFROM\n" +
                        "\t\t\t(";
                oracleSql+=sql;
                oracleSql += sql;
                oracleSql+="\t\t\t) A\n" +
                oracleSql += "\t\t\t) A\n" +
                        "\t\tWHERE\n" +
                        "  ROWNUM <="+page*size +
                        "  ROWNUM <=" + page * size +
                        "\t) \n" +
                        "WHERE\n" +
                        "\tROWNUM >= "+(page-1)*size;
                Logger.getAnonymousLogger().info("oracleSql="+oracleSql);
                        "\tROWNUM >= " + (page - 1) * size;
                Logger.getAnonymousLogger().info("oracleSql=" + oracleSql);
                list = jdbcTemplate.queryForList(oracleSql);
            }
        }else {
            sql+=" LIMIT  " + (page - 1) * size + "," + size + "";
            Logger.getAnonymousLogger().info("sql="+sql);
        } else {
            sql += " LIMIT  " + (page - 1) * size + "," + size + "";
            Logger.getAnonymousLogger().info("sql=" + sql);
            list = jdbcTemplate.queryForList(sql);
        }
@ -980,22 +990,22 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                "WHERE " +
                "  usr.saas_id = saas.id " +
                "  AND " +
                "  usr.role_id = role.id " ;
                if(!realName.equals(null) && !realName.equals("")){
                    countSql = countSql + " and usr . NAME LIKE '%"+realName+"%'";
                }
                if(!saasidValue.equals(null) && !saasidValue.equals("")){
                    countSql = countSql + " and saas. id = '"+saasidValue+"'";
                }
                if(!roleIdValue.equals(null) && !roleIdValue.equals("")){
                    countSql = countSql + " and usr .role_id = '"+roleIdValue+"'";
                }
        Logger.getAnonymousLogger().info("countSql="+countSql);
                "  usr.role_id = role.id ";
        if (!realName.equals(null) && !realName.equals("")) {
            countSql = countSql + " and usr . NAME LIKE '%" + realName + "%'";
        }
        if (!saasidValue.equals(null) && !saasidValue.equals("")) {
            countSql = countSql + " and saas. id = '" + saasidValue + "'";
        }
        if (!roleIdValue.equals(null) && !roleIdValue.equals("")) {
            countSql = countSql + " and usr .role_id = '" + roleIdValue + "'";
        }
        Logger.getAnonymousLogger().info("countSql=" + countSql);
        String finalCountSql = countSql
                .replace("{realName}", "%" + realName + "%")
                .replace("{saasid}",  saasidValue )
                .replace("{roleId}",  roleIdValue );
        Logger.getAnonymousLogger().info("finalCountSql="+finalCountSql);
                .replace("{saasid}", saasidValue)
                .replace("{roleId}", roleIdValue);
        Logger.getAnonymousLogger().info("finalCountSql=" + finalCountSql);
        Integer count = jdbcTemplate.queryForObject(finalCountSql, Integer.class);
        result.put("count", count);
        result.put("msg", JavaBeanUtils.getInstance().mapListJson(list));

+ 1 - 0
svr/svr-cloud-care/src/main/resources/bootstrap.yml

@ -5,6 +5,7 @@ spring:
    config:
      failFast: true
      username: jw
#      password: jkzl #云照护正式环境git密码
      password: Zjxl2023*
---

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/async/AsynService.java

@ -44,7 +44,7 @@ public class AsynService {
    @Autowired
    private ImUtil imUtill;
    //基卫服务地址
    @Value("${sign.check_upload}")
//    @Value("${sign.check_upload}")
    private String jwUrl;
    @Autowired
    private HttpClientUtil httpClientUtil;

+ 8 - 3
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/controller/ConsultController.java

@ -1,6 +1,7 @@
package com.yihu.jw.hospital.module.consult.controller;
import com.alibaba.fastjson.JSON;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.service.BaseDoctorInfoService;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
@ -102,10 +103,10 @@ public class ConsultController extends EnvelopRestEndpoint {
    @Autowired
    WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Value("${doctorAssistant.api}")
    //    @Value("${doctorAssistant.api}")
    private String doctorAssistant;
    @Value("${doctorAssistant.target_url}")
    //    @Value("${doctorAssistant.target_url}")
    private String targetUrl;
@ -1199,12 +1200,16 @@ public class ConsultController extends EnvelopRestEndpoint {
            @RequestParam String loginUser,
            @RequestParam int page, @RequestParam int pagesize) {
        try {
            System.out.println("查询聊天日志");
            System.out.println("参数==>consult:" + consult + "  loginUser:" + loginUser);
            ConsultTeamDo consultModel = consultTeamService.findByCode(consult);
            System.out.println("ConsultTeamDo==>" + JSON.toJSONString(consultModel));
            if (consultModel == null) {
                return error(-1, "咨询记录不存在!");
            }
            System.out.println("调用im查询");
            com.alibaba.fastjson.JSONObject messageObj = imUtill.getTopicMessage(consultModel.getConsult(), consultModel.getStartMsgId(), consultModel.getEndMsgId(), page, pagesize, loginUser);
            System.out.println("查询完成");
            //过滤续签
//            consultTeamService.removeRenewPerson(messageObj, getRepUID());
            return write(200, "查询成功", "list", messageObj);

+ 2 - 2
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/controller/DoctorConsultController.java

@ -39,9 +39,9 @@ import org.springframework.web.bind.annotation.RestController;
@Api(description = "三师咨询")
public class DoctorConsultController extends EnvelopRestEndpoint {
    @Value("${doctorAssistant.api}")
//    @Value("${doctorAssistant.api}")
    private String doctorAssistant;
    @Value("${doctorAssistant.target_url}")
//    @Value("${doctorAssistant.target_url}")
    private String targetUrl;
    @Autowired
    private ConsultTeamService consultTeamService;

+ 8 - 4
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/consult/service/ConsultTeamService.java

@ -1,5 +1,6 @@
package com.yihu.jw.hospital.module.consult.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.service.BaseDoctorInfoService;
import com.yihu.jw.entity.base.im.ConsultDo;
@ -232,7 +233,7 @@ public class ConsultTeamService extends ConsultService {
         * 创建议题
         */
        JSONObject imResponseJson = imUtill.createTopics(sessionId, consult.getId(), content, participants, messages, ImUtil.SESSION_TYPE_ONDOOR_NURSING);
        System.out.println("创建议题成功了!!!!!!!!!!!!!!!!");
        if (imResponseJson == null || imResponseJson.getString("status").equals("-1")) {
            String failMsg = "发起服务咨询时:IM" + imResponseJson.getString("message");
            throw new Exception(failMsg);
@ -240,9 +241,12 @@ public class ConsultTeamService extends ConsultService {
        if (imResponseJson != null && imResponseJson.get("start_msg_id") != null) {
            consultTeam.setStartMsgId(imResponseJson.get("start_msg_id").toString());
        }
        System.out.println("准备保存consultTeam和consult");
        consultTeamDao.save(consultTeam);
        consultDao.save(consult);
        System.out.println("保存的consultTeam==>"+ JSON.toJSONString(consultTeam));
        System.out.println("保存的consult==>"+ JSON.toJSONString(consult));
        System.out.println("保存consultTeam和consult成功");
        result.put(ResponseContant.resultFlag, ResponseContant.success);
        result.put(ResponseContant.resultMsg, consultTeam);
        return result;
@ -3347,9 +3351,9 @@ public class ConsultTeamService extends ConsultService {
            return null;
        }
        //这是id
//        ConsultDo consult = consultDao.queryByIdAndType(code, type);
        ConsultDo consult = consultDao.queryByIdAndType(code, type);
        ConsultDo consult = consultDao.findByRelationCode(code);
//        ConsultDo consult = consultDao.findByRelationCode(code);
        if (null == consult) {
            result.put("data", "");

+ 14 - 0
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/controller/DoorOrderController.java

@ -115,6 +115,19 @@ public class DoorOrderController extends EnvelopRestEndpoint {
        }
    }
    /**
     * 根据签约id或者订单id获取服务项机构
     */
    @GetMapping(value = "getOgrById")
    @ApiOperation(value = "服务人员列表(医生列表)")
    public Envelop getOgrById(
            @ApiParam(name = "signId", value = "签约id") @RequestParam(value = "signId", required = false) String signId,
            @ApiParam(name = "orderId", value = "订单id") @RequestParam(value = "orderId", required = false) String orderId) {
        List<Map<String, Object>> list = wlyyDoorServiceOrderService.getOgrById(signId,orderId);
        return success("查询成功", list);
    }
    /**
     * 查询所有社区医生的机构
@ -126,6 +139,7 @@ public class DoorOrderController extends EnvelopRestEndpoint {
        return success("查询成功", list);
    }
    @GetMapping(value = "queryDoctorList")
    @ApiOperation(value = "服务人员列表(医生列表)")
    public Envelop queryDoctorList(

+ 9 - 4
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/controller/WlyyDoorServiceOrderController.java

@ -207,10 +207,15 @@ public class WlyyDoorServiceOrderController extends EnvelopRestEndpoint {
//        }else {
//            return failed("获取二维码失败,请确认工单",-1);
//        }
        if (wlyyDoorServiceOrderService.twoDimensionalCode(id, null) != null) {
            return success("获取二维码成功", 200, wlyyDoorServiceOrderService.twoDimensionalCode(id, null));
        } else {
            return failed("获取二维码失败,请确认工单", -1);
        try {
            if (wlyyDoorServiceOrderService.twoDimensionalCode(id, null) != null) {
                return success("获取二维码成功", 200, wlyyDoorServiceOrderService.twoDimensionalCode(id, null));
            } else {
                return failed("获取二维码失败,请确认工单", -1);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed(e.getMessage());
        }
    }

+ 84 - 47
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/DoorOrderService.java

@ -1,5 +1,6 @@
package com.yihu.jw.hospital.module.door.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -66,9 +67,9 @@ public class DoorOrderService {
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Value("${sign.check_upload}")
    //    @Value("${sign.check_upload}")
    private String jwUrl;
    @Value("${server.server_url}")
    //    @Value("${server.server_url}")
    private String wxServerUrl;
    //图片服务地址
    @Value("${fastDFS.fastdfs_file_url}")
@ -146,22 +147,45 @@ public class DoorOrderService {
    /**
     * 服务项查询
     *
     * @param signId 签约id
     * @param type doorService 上门服务
     * @param type   doorService 上门服务
     */
    public PageEnvelop getServiceItem(String signId, String name, String type, Integer page, Integer size){
        String sql = "SELECT si.* ";
        String countSql = "select count(si.id) ";
        String filter = " from base_service_package_sign_record r,base_service_package_item i,base_service_package_sub_item si,base_service_package_item_relational ir " +
                "WHERE r.id = '"+signId+"' and i.service_package_id=r.service_package_id and i.`code`='"+type+"' and si.status='1' " +
                " and i.id = ir.item_id and ir.sub_item_id= si.id ";
        if(StringUtils.isNotBlank(name)){
            filter += " and si.name like '%"+name+"%' ";
        }
        String oderBy = " order by si.sort limit "+(page-1)*size+","+size;
        List<ServicePackageSubItemDO> list = jdbcTemplate.query(sql+filter+oderBy,new BeanPropertyRowMapper<>(ServicePackageSubItemDO.class));
        long count = jdbcTemplate.queryForObject(countSql+filter,Long.class);
        return PageEnvelop.getSuccessListWithPage("",list,page,size,count);
    public PageEnvelop getServiceItem(String signId, String name, String type, Integer page, Integer size) {
//        String sql = "SELECT si.* ";
//        String countSql = "select count(si.id) ";
//        String filter = " from base_service_package_sign_record r," +
//                "base_service_package_item i,base_service_package_sub_item si,base_service_package_item_relational ir " +
//                "WHERE r.id = '"+signId+"' and i.service_package_id=r.service_package_id and i.`code`='"+type+"' and si.status='1' " +
//                " and i.id = ir.item_id and ir.sub_item_id= si.id ";
//        if(StringUtils.isNotBlank(name)){
//            filter += " and si.name like '%"+name+"%' ";
//        }
//        String oderBy = " order by si.sort limit "+(page-1)*size+","+size;
        String sql = "SELECT e.* ";
        String countSql = "select count(e.id) ";
        String filter =
                "FROM\n" +
                        "	base_service_package_sign_record a \n" +
                        "	INNER JOIN base_service_package_item b ON a.service_package_id = b.service_package_id\n" +
                        "	INNER JOIN base_service_package_item c ON c.id=b.service_package_item_id\n" +
                        "	INNER JOIN base_service_package_item_relational d ON d.item_id=c.id \n" +
                        "	INNER JOIN base_service_package_sub_item e ON e.id=d.sub_item_id\n" +
                        "WHERE 1=1\n" +
                        "	AND b.`code` = '" + type + "' \n" +
                        "	AND e.`status` = '1' \n" +
                        "	AND a.id = '" + signId + "' ";
        if (StringUtils.isNotBlank(name)) {
            filter += " and e.name like '%" + name + "%' ";
        }
        String oderBy = " order by e.sort limit " + (page - 1) * size + "," + size;
        sql = sql + filter + oderBy;
        countSql = countSql + filter;
        List<ServicePackageSubItemDO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ServicePackageSubItemDO.class));
        long count = jdbcTemplate.queryForObject(countSql, Long.class);
        return PageEnvelop.getSuccessListWithPage("", list, page, size, count);
    }
    public Map<String, String> getNumGroupByStatusTeam(String doctor, Integer type) {
@ -388,7 +412,8 @@ public class DoorOrderService {
     * @return
     */
    public List<Map<String, Object>> getDoorFeeDetailGroupByStatus(String orderId) {
        String sql = "SELECT d.id, d.status,d.name,d.code,sum(d.number) num,fee,sum(d.number)*fee sum from wlyy_door_fee_detail d where order_id=? and type=1 GROUP BY status,code";
        String sql = "SELECT d.id, d.status,d.name,d.code,sum(d.number) num,fee,sum(d.number)*fee sum " +
                " from wlyy_door_fee_detail d where order_id=? and type=1 GROUP BY status,code";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, orderId);
        return list;
    }
@ -400,7 +425,8 @@ public class DoorOrderService {
     * @return
     */
    public List<Map<String, Object>> getDoorServiceDoctor(String orderId) {
        String sql = "SELECT dd.id as id,CONCAT(d.`name`,' (',dd.doctor_job_name,')') as name, dd.doctor from wlyy_door_doctor dd join wlyy_doctor d on d.`code` = dd.doctor WHERE order_id=?";
        String sql = "SELECT dd.id as id,CONCAT(d.`name`,' (',dd.doctor_job_name,')') as name, " +
                "dd.doctor from wlyy_door_doctor dd join base_doctor d on d.`id` = dd.doctor WHERE order_id=?";
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql, orderId);
        return mapList;
    }
@ -455,9 +481,10 @@ public class DoorOrderService {
        if (null != doorServiceDoctors && doorServiceDoctors.size() > 0) {
            doorServiceOrder.setDoctors(doorServiceDoctors);
        }
        System.out.println("准备获取咨询==>参数:" + id);
        //获取咨询
        ConsultDo consult = consultDao.queryByRelationCode(id);
        System.out.println("consult==>" + JSON.toJSONString(consult));
        if (null != consult) {
            doorServiceOrder.setSessionId(doorServiceOrder.getPatient() + "_" + consult.getId() + "_" + doorServiceOrder.getNumber() + "_" + consult.getType());
        }
@ -469,7 +496,7 @@ public class DoorOrderService {
        }
        doorConclusion.setServiceCount(count);
        doorServiceOrder.setDoorConclusion(doorConclusion);
        System.out.println("获取上门前后开方详情");
        //获取上门前后开方详情
        List<WlyyDoorPrescriptionDO> doorBeforePrescriptionDOList = doorPrescriptionDao.findByOrderIdAndIsAfterDoor(id, 1);
        List<WlyyDoorPrescriptionDO> doorAfterPrescriptionDOList = doorPrescriptionDao.findByOrderIdAndIsAfterDoor(id, 2);
@ -549,32 +576,37 @@ public class DoorOrderService {
     * @throws Exception
     */
    public WlyyDoorConclusionDO updateDoorConclusion(String model, Integer examPapeStatus) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        WlyyDoorConclusionDO doorConclusion = objectMapper.readValue(model, WlyyDoorConclusionDO.class);
        WlyyDoorServiceOrderDO one = doorServiceOrderDao.findOne(doorConclusion.getOrderId());
        BaseDoctorDO doctorVO = doctorDao.findById(one.getDoctor());
        if (doorConclusion != null && StringUtils.isNotEmpty(doorConclusion.getId())) {
            doorConclusion.setUpdateTime(new Date());
            doorConclusion.setUpdateUser(one.getDoctor());
            doorConclusion.setUpdateUserName(null != doctorVO ? doctorVO.getName() : null);
        } else {
            doorConclusion.setCreateTime(new Date());
            doorConclusion.setUpdateTime(new Date());
            doorConclusion.setCreateUser(one.getDoctor());
            doorConclusion.setCreateUserName(null != doctorVO ? doctorVO.getName() : null);
        }
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
            WlyyDoorConclusionDO doorConclusion = objectMapper.readValue(model, WlyyDoorConclusionDO.class);
            WlyyDoorServiceOrderDO one = doorServiceOrderDao.findOne(doorConclusion.getOrderId());
            BaseDoctorDO doctorVO = doctorDao.findById(one.getDoctor());
            if (doorConclusion != null && StringUtils.isNotEmpty(doorConclusion.getId())) {
                doorConclusion.setUpdateTime(new Date());
                doorConclusion.setUpdateUser(one.getDoctor());
                doorConclusion.setUpdateUserName(null != doctorVO ? doctorVO.getName() : null);
            } else {
                doorConclusion.setCreateTime(new Date());
                doorConclusion.setUpdateTime(new Date());
                doorConclusion.setCreateUser(one.getDoctor());
                doorConclusion.setCreateUserName(null != doctorVO ? doctorVO.getName() : null);
            }
        //服务时间 为空的 默认使用医生签到时间 1.7.0.5修改
        if (null == doorConclusion.getServiceTime() || StringUtils.isBlank(doorConclusion.getServiceTime().toString())) {
            doorConclusion.setServiceTime(one.getDoctorSignTime());
            //服务时间 为空的 默认使用医生签到时间 1.7.0.5修改
            if (null == doorConclusion.getServiceTime() || StringUtils.isBlank(doorConclusion.getServiceTime().toString())) {
                doorConclusion.setServiceTime(one.getDoctorSignTime());
            }
            doorConclusionDao.save(doorConclusion);
            // 设置是否需要上传补录报告
            one.setExamPaperStatus(examPapeStatus);
            one.setConclusionStatus(2);
            doorServiceOrderDao.save(one);
            return doorConclusion;
        } catch (IOException e) {
            e.printStackTrace();
        }
        doorConclusionDao.save(doorConclusion);
        // 设置是否需要上传补录报告
        one.setExamPaperStatus(examPapeStatus);
        one.setConclusionStatus(2);
        doorServiceOrderDao.save(one);
        return doorConclusion;
        return null;
    }
    public WlyyDoorServiceOrderDO acceptOrder1(String orderId, String jobCode, String jobCodeName, int hospitalLevel) throws Exception {
@ -617,7 +649,7 @@ public class DoorOrderService {
            //成功创建服务工单后,居民所在机构调度员向居民发起一条通知服务消息
            // 发送IM消息通知患者医生已接单
            String noticeContent = "我已接受您的服务工单预约," + doorServiceOrder.getDoctorName() + "医生正在为您服务!";
            String noticeContent = "已接受您的服务工单预约," + doorServiceOrder.getDoctorName() + "医生正在为您服务!";
            wlyyDoorServiceOrderService.qucikSendIM(doorServiceOrder.getId(), doorServiceOrder.getDoctor(), "智能助手", "1", noticeContent);
            // 发送居民上门服务简要信息
            JSONObject orderInfoContent = wlyyDoorServiceOrderService.queryOrderCardInfo(doorServiceOrder);
@ -930,7 +962,9 @@ public class DoorOrderService {
                                       StringBuffer status, String createTimeStart, String createTimeEnd, String serverDoctorName,
                                       String doctorCode, Integer examPaperStatus, Integer page, Integer pageSize, Integer type, String name, String serverType) throws Exception {
        StringBuilder sqlList = new StringBuilder(
                "select DISTINCT o.id as orderId,o.status,h.org_name AS hospitalName,  h.org_code AS hospital," +
                "select DISTINCT o.id as orderId,o.status," +
//                        "h.org_name AS hospitalName, " +//这个会重复
                        " h.org_code AS hospital," +
                        "o.is_trans_other_org,o.transed_org_code ,o.patient_name," +
                        " o.patient_phone,o.remark,o.serve_desc,dc.service_time,o.patient as patientCode ," +
                        "o.exam_paper_status as examPaperStatus,o.number as serverCode,o.total_fee, " +
@ -987,7 +1021,9 @@ public class DoorOrderService {
        }
        String sql01 = sqlList.append(sql).append(" order by o.create_time desc LIMIT " + (page - 1) * pageSize + "," + pageSize).toString();
        String sql02 = sqlCount.append(sql).toString();
        System.out.println("getDoorOrderList----sql01==>" + sql01);
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql01);
        System.out.println("工单的数量list==>" + list.size());
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql02);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
@ -1728,7 +1764,8 @@ public class DoorOrderService {
     * @throws Exception
     */
    public String serverPackagePriceByOrderId(String orderId) throws Exception {
        String sql = "SELECT d.code itemCode,sum(d.number) number,fee from wlyy_door_fee_detail d where order_id=? and d.status in(1,2) and type=1 GROUP BY code";
        String sql = "SELECT d.code itemCode,sum(d.number) number,fee " +
                "from wlyy_door_fee_detail d where order_id=? and d.status in(1,2) and type=1 GROUP BY code";
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql, orderId);
        return objectMapper.writeValueAsString(mapList);
    }

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/WlyyDoorPrescriptionService.java

@ -61,7 +61,7 @@ public class WlyyDoorPrescriptionService {
    private BaseDoctorDao doctorDao;
    @Autowired
    private WlyyDoorPrescriptionDrugDao doorPrescriptionDrugDao;
    @Value("${server.server_url}")
//    @Value("${server.server_url}")
    private String server_url;
    @Autowired
    private JdbcTemplate jdbcTemplate;

+ 149 - 111
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/door/service/WlyyDoorServiceOrderService.java

@ -1,5 +1,6 @@
package com.yihu.jw.hospital.module.door.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.fastdfs.FastDFSUtil;
@ -11,7 +12,7 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.door.*;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.hospital.HospitalDao;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.hospital.module.consult.service.ConsultTeamService;
@ -25,6 +26,7 @@ import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.restmodel.qvo.ParamQvo;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.QrcodeUtil;
@ -55,7 +57,6 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
@ -160,12 +161,20 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    @Autowired
    private FastDFSUtil fastDFSUtil;
    @Value("${neiwang.enable}")
    @Autowired
    FileUploadService fileUploadService;
    //    @Value("${neiwang.enable}")
    private Boolean isneiwang;  //如果不是内网项目要转到到内网wlyy在上传
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
    @Value("${neiwang.wlyy}")
    //    @Value("${neiwang.wlyy}")
    private String neiwangWlyy;  //内网的项目地址
    @Value("${wlyy.url}")
    private String wlyyUrl;
    @Autowired
    private WlyyDoorOrderItemDao doorOrderItemDao;
    @Autowired
@ -655,7 +664,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    /**
     * 创建上门服务工单
     */
    @Transactional(rollbackFor = Exception.class)
//    @Transactional(rollbackFor = Exception.class)
    public JSONObject create(String jsonData) throws Exception {
        logger.info("创建上门服务jsonData参数:" + jsonData);
@ -753,50 +762,50 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        boolean flag = true;
        JSONObject result = new JSONObject();
        //创建订单信息
        BasePatientDO pateint = patientDao.findById(orderDO.getPatient());
        //查询是否存在订单信息
        BusinessOrderDO businessOrderDO = businessOrderDao.findByOrderId(orderDO.getId());
        if (businessOrderDO == null) {
            businessOrderDO = new BusinessOrderDO();
            businessOrderDO.setPatient(pateint.getId());
            //支付账号
            businessOrderDO.setYkOrderId(pateint.getMobile());
            businessOrderDO.setPatientName(pateint.getName());
            businessOrderDO.setOrderType(1);
            businessOrderDO.setOrderCategory(type);
            Date date = new Date();
            Long lastPayTime = date.getTime() + 1000 * 60 * 30;//订单截至支付日期
            businessOrderDO.setDescription("上门服务");
            businessOrderDO.setRelationCode(orderDO.getId());//订单id
            businessOrderDO.setRelationName("上门服务");
            businessOrderDO.setCreateTime(date);
            businessOrderDO.setUpdateTime(date);
            businessOrderDO.setStatus(0);
            businessOrderDO.setOrderNo(orderDO.getNumber());
            businessOrderDO.setUploadStatus(0);
            businessOrderDO.setPayType(1);
            businessOrderDO.setPayPrice(Double.valueOf(orderDO.getTotalFee().doubleValue()));
            businessOrderDO.setLastPayTime(lastPayTime);
        } else {
            /**
             * 暂时没用,线下付款的
             * 1、是否付款完成
             * 2、判断付款时间是否超过时长了--还需要定时任务监听订单修改状态,把未付款改成已取消
             */
//            if (businessOrderDO.getStatus() != 1) {
//                long nowTime = System.currentTimeMillis();
//                Long lastPayTime = businessOrderDO.getLastPayTime();
//                if (lastPayTime > nowTime) {
//                    //超时了 修改工单状态成已取消
//                    orderDO.setStatus(-1);//-已取消
//                    wlyyDoorServiceOrderDao.save(orderDO);//更新上门工单
//                    businessOrderDO.setStatus(2);//已取消
//                    businessOrderDao.save(businessOrderDO);//更新业务表
//                    flag = false;//不用创建咨询内容
//                }
//            }
        }
//        //创建订单信息
//        BasePatientDO pateint = patientDao.findById(orderDO.getPatient());
//        //查询是否存在订单信息
//        BusinessOrderDO businessOrderDO = businessOrderDao.findByOrderId(orderDO.getId());
//        if (businessOrderDO == null) {
//            businessOrderDO = new BusinessOrderDO();
//            businessOrderDO.setPatient(pateint.getId());
//            //支付账号
//            businessOrderDO.setYkOrderId(pateint.getMobile());
//            businessOrderDO.setPatientName(pateint.getName());
//            businessOrderDO.setOrderType(1);
//            businessOrderDO.setOrderCategory(type);
//            Date date = new Date();
//            Long lastPayTime = date.getTime() + 1000 * 60 * 30;//订单截至支付日期
//            businessOrderDO.setDescription("上门服务");
//            businessOrderDO.setRelationCode(orderDO.getId());//订单id
//            businessOrderDO.setRelationName("上门服务");
//            businessOrderDO.setCreateTime(date);
//            businessOrderDO.setUpdateTime(date);
//            businessOrderDO.setStatus(0);
//            businessOrderDO.setOrderNo(orderDO.getNumber());
//            businessOrderDO.setUploadStatus(0);
//            businessOrderDO.setPayType(1);
//            businessOrderDO.setPayPrice(Double.valueOf(orderDO.getTotalFee().doubleValue()));
//            businessOrderDO.setLastPayTime(lastPayTime);
//        } else {
//            /**
//             * 暂时没用,线下付款的
//             * 1、是否付款完成
//             * 2、判断付款时间是否超过时长了--还需要定时任务监听订单修改状态,把未付款改成已取消
//             */
////            if (businessOrderDO.getStatus() != 1) {
////                long nowTime = System.currentTimeMillis();
////                Long lastPayTime = businessOrderDO.getLastPayTime();
////                if (lastPayTime > nowTime) {
////                    //超时了 修改工单状态成已取消
////                    orderDO.setStatus(-1);//-已取消
////                    wlyyDoorServiceOrderDao.save(orderDO);//更新上门工单
////                    businessOrderDO.setStatus(2);//已取消
////                    businessOrderDao.save(businessOrderDO);//更新业务表
////                    flag = false;//不用创建咨询内容
////                }
////            }
//        }
        /**
         *  1、费用0时无需支付
@ -816,7 +825,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
//        }
        //保存业务表
        businessOrderDao.save(businessOrderDO);
//        businessOrderDao.save(businessOrderDO);
        /**
         * 目前是线下付款的
@ -829,6 +838,13 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
            //创建咨询
            JSONObject successOrNot = consultTeamService.addDoorServiceConsult(orderDO.getId());
            ConsultTeamDo consultTeam = (ConsultTeamDo) successOrNot.get(ResponseContant.resultMsg);
            System.out.println("===调度员的信息开始======");
            for (Map<String, Object> map : dispatcherList) {
                System.out.println("调度员=>" + JSON.toJSONString(map));
            }
            System.out.println("===调度员的信息结束======");
            //判断其是否有分配执行人。如果有不用走调度平台
            if (StringUtils.isNotBlank(orderDO.getDoctor())) {
                orderDO.setStatus(2);//待接单
@ -871,9 +887,9 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
            JSONObject orderInfoContent = this.queryOrderCardInfo(orderDO);
            orderInfoContent.put("re_msg_type", 0);//居民预约
            System.out.println("准备发送预约卡片信息");
            int flagCount = qucikSendIM(orderDO.getId(), "system", "智能助手", "2101", orderInfoContent.toJSONString());
            System.out.println("flagCount==>" + flagCount);
            //模拟一,重试3次
//            int tryCount = 3;
@ -1274,7 +1290,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    /**
     * 生成二維碼
     */
    public String twoDimensionalCode(String id, String token) {
    public UploadVO twoDimensionalCode(String id, String token) throws Exception {
        JSONObject orderJson = new JSONObject();
        List<WlyyDoorServiceOrderDO> orderList = this.findByField("id", id);
        if (orderList.size() > 0) {
@ -1284,36 +1300,8 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
            //生成二维码图片
            String contentJsonStr = orderDO.getNumber();
            InputStream ipt = QrcodeUtil.createQrcode(contentJsonStr, 300, "png");
            //内网先注释
//            if (isneiwang) {
//                // 圖片列表
//                List<String> tempPaths = new ArrayList<String>();
//                try {
//                    ObjectNode imgNode = fastDFSUtil.upload(ipt, "png", "plan_service_qrcode" + System.currentTimeMillis());
//                    JSONObject json = JSONObject.parseObject(imgNode.toString());
//                    tempPaths.add(json.getString("fid"));
//                    String urls = "";
//                    for (String image : tempPaths) {
//                        if (urls.length() == 0) {
//                            urls = image;
//                        } else {
//                            urls += "," + image;
//                        }
//                    }
//                    fileUrl = fastdfs_file_url + urls;
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            } else {
            try {
                fileUrl = fastdfs_file_url + PrescriptionQRCodetoNeiWang(ipt);
            } catch (Exception e) {
                e.printStackTrace();
            }
//            }
            param.put("number", orderDO.getNumber());
            param.put("imageUrl", fileUrl);
            return fileUrl;
            UploadVO uploadVO = PrescriptionQRCodetoNeiWang(ipt);
            return uploadVO;
        } else {
            return null;
        }
@ -1323,24 +1311,32 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
     * 长处方生成取药码,生成取药二维码
     * 如果是外网那是发送到内网的服务器
     */
    public String PrescriptionQRCodetoNeiWang(InputStream ipt) throws FileNotFoundException {
        String filename = "QRCode_" + System.currentTimeMillis();
    public UploadVO PrescriptionQRCodetoNeiWang(InputStream ipt) throws Exception {
        String filename = "QRCode_" + System.currentTimeMillis() + ".jpg";
        String fileUrls = "";
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String returnStr = request(request, ipt, filename);
        logger.info("returnStr :" + returnStr);
        logger.info("fileName :" + filename);
        logger.info("result :" + returnStr.toString());
        if (returnStr != null) {
            //1.3.7去掉前缀
            fileUrls += returnStr + ",";
        }
        return fileUrls.substring(0, fileUrls.length() - 1);
        UploadVO uploadVO = fileUploadService.uploadStream(ipt, filename, fastdfs_file_url);
//        System.out.println(uploadVO.getFullUri());
//        String returnStr = request(request, ipt, filename);
//        logger.info("returnStr :" + returnStr);
//        logger.info("fileName :" + filename);
//        logger.info("result :" + returnStr.toString());
//        if (returnStr != null) {
//            //1.3.7去掉前缀
//            fileUrls += returnStr + ",";
//        }
        return uploadVO;
    }
    public String request(HttpServletRequest request, InputStream in, String fileName) {
        String url = neiwangWlyy + "/wlyy/upload/commonUpload";//uri请求路径
        //上传地址
        String url = wlyyUrl + "/upload/chat";
//        String url = neiwangWlyy + "/wlyy/upload/commonUpload";//uri请求路径
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        String result = "";
@ -1395,8 +1391,8 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        String sql = "SELECT " +
                "  d.photo AS doctorPhoto, " +
                "  d.`name` AS doctorName, " +
                "  d.`job_name` AS doctorJobName, " +
                "  d.hospital_name AS hospitalName, " +
                "  d.`job_title_name` AS doctorJobName, " +
                "  d.visit_hospital_name AS hospitalName, " +
                "  d.mobile AS doctorPhone, " +
                "  o.id, " +
                "  o.number, " +
@ -1407,11 +1403,12 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
                "  o.`pay_way` AS payWay, o.type," +
                "  ifnull(de.order_id,concat(rand(),'_notExist')) AS feeOrderId, " +
                "  a.mobile AS hospitalPhone, " +
                "  count(de.number) as itemCount " +
                "  count(de.number) as itemCount ," +
                "  o.sign_id 'signId' , o.package_id 'packageId' " +
                " FROM " +
                "  ( wlyy_door_service_order o " +
                " LEFT JOIN wlyy_doctor d ON o.doctor = d.`code`) " +
                " LEFT JOIN wlyy_door_fee_detail de on o.id = de.order_id " +
                " LEFT JOIN base_doctor d ON o.doctor = d.`id`) " +
                " LEFT JOIN wlyy_door_fee_detail de on o.id = de.order_id  and de.type='1' " +
                " LEFT JOIN base_org a on o.hospital = a.code " +
                " WHERE " +
                "  (o.patient = '{patient}') " +
@ -1429,7 +1426,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
                "   count(DISTINCT o.id)  " +
                " FROM  " +
                "  ( wlyy_door_service_order o " +
                " LEFT JOIN wlyy_doctor d ON o.doctor = d.`code`) " +
                " LEFT JOIN base_doctor d ON o.doctor = d.`id`) " +
                " LEFT JOIN wlyy_door_fee_detail de on o.id = de.order_id " +
                " LEFT JOIN base_org a on o.hospital = a.code " +
                " WHERE  " +
@ -1519,10 +1516,9 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    @Transactional(rollbackFor = Exception.class)
    public int updateOrderInfo(String orderId) {
        String sql = "UPDATE `wlyy_door_service_order` SET order_info =2 WHERE id = ?";
        Object[] params = new Object[]{orderId};
        int a = jdbcTemplate.update(sql, params);
        return a;
        String sql = "UPDATE `wlyy_door_service_order` SET order_info =2 WHERE id = '" + orderId + "'";
        int i = jdbcTemplate.update(sql);
        return i;
    }
@ -2023,7 +2019,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
                "  o.serve_lat as lat, " +
                "  o.`status` as status, " +
                "  o.`dispatcher_name` as dispatcherName, " +
                "  concat( o.patient,'_' ,c.`code`, '_',o.`number`,'_11' ) as sessionId, " +
                "  concat( o.patient,'_' ,c.`id`, '_',o.`number`,'_11' ) as sessionId, " +
                "   t1.`type` as patientType " +
                " FROM " +
                " ( wlyy_door_service_order o " +
@ -2651,9 +2647,22 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    public int sendMsg(String orderId, String sendId, String sendName, String contentType, String content) throws Exception {
        System.out.println("发送消息的方法【sendMsg】");
        int result = -1;
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        System.out.println("查询ConsultDo==>参数:" + orderId);
        String sql = "SELECT * FROM wlyy_consult WHERE relation_code='" + orderId + "'";
        ConsultDo consult = null;
        List<ConsultDo> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ConsultDo.class));
        if (list != null && list.size() > 0) {
            consult = list.get(0);
            System.out.println("ConsultDo的list数量==>" + list.size());
        } else {
            throw new Exception("ConsultDo为空,参数RelationCode:" + orderId);
        }
//        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        System.out.println("方法:【sendMsg】 内容:consult==>" + JSON.toJSONString(consult));
        if (null == consult) {
            System.out.println("当前工单未关联咨询,工单id:" + orderId);
            return result;
@ -2662,6 +2671,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
            String response = null;
            if (StringUtils.isBlank(sendId)) {
                WlyyDoorServiceOrderDO wlyyDoorServiceOrder = wlyyDoorServiceOrderDao.findOne(orderId);
                System.out.println("方法:【wlyyDoorServiceOrder】 内容:consult==>" + JSON.toJSONString(consult));
                String sender = "system";
                if (StringUtils.isNoneBlank(wlyyDoorServiceOrder.getDispatcher())) {
                    sender = wlyyDoorServiceOrder.getDispatcher();
@ -2670,6 +2680,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
            } else {
                response = imUtill.sendTopicIM(sendId, sendName, consult.getId(), contentType, content, null);
            }
            System.out.println("sendTopicIM结果==>" + response);
            JSONObject resObj = JSONObject.parseObject(response);
            if (resObj.getIntValue("status") == -1) {
                String msg = "上门服务工单消息发送失败:" + resObj.getString("message");
@ -3077,9 +3088,10 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        String sql = "SELECT * from base_doctor doc WHERE doctor_level=1 and id not in ( " +
                "SELECT doctor from wlyy_door_doctor_status " +
                ")";
        if (org.apache.commons.lang.StringUtils.isNotBlank(hospital)) {
            sql += "and EXISTS (select id from base_doctor_hospital dh where doc.id = dh.doctor_code and dh.org_code='" + hospital + "' and dh.del=1 ) ";
        }
        //机构就不要了
//        if (org.apache.commons.lang.StringUtils.isNotBlank(hospital)) {
//            sql += "and EXISTS (select id from base_doctor_hospital dh where doc.id = dh.doctor_code and dh.org_code='" + hospital + "' and dh.del=1 ) ";
//        }
        List<BaseDoctorDO> doctorDOs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseDoctorDO.class));
        List<WlyyDoorDoctorStatusDO> doctorList = new ArrayList<>(doctorDOs.size());
@ -3109,4 +3121,30 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        jdbcTemplate.execute(sql);
    }
    public List<Map<String, Object>> getOgrById(String signId, String orderId) {
        String sql = "";
        if (StringUtils.isNotBlank(signId)) {
            sql = "SELECT\n" +
                    "	b.* \n" +
                    "FROM\n" +
                    "	base_service_package_sign_record a\n" +
                    "	INNER JOIN base_service_package_item b ON a.service_package_id = b.service_package_id\n" +
                    "	AND a.id='" + signId + "'";
            List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
            return list;
        }
        if (StringUtils.isNotBlank(orderId)) {
            sql = "SELECT\n" +
                    "	DISTINCT b.* \n" +
                    "FROM\n" +
                    "	base_service_package_sign_record a\n" +
                    "	INNER JOIN wlyy_door_service_order b ON a.service_package_id=b.package_id\n" +
                    "	INNER JOIN base_service_package_item c ON b.package_id = c.service_package_id\n" +
                    "	AND b.id='" + orderId + "'\n";
            List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
            return list;
        }
        return null;
    }
}

+ 2 - 2
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/followup/service/FollowUpService.java

@ -111,10 +111,10 @@ public class FollowUpService {
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Value("${doctorAssistant.api}")
//    @Value("${doctorAssistant.api}")
    private String doctorAssistant;
    @Value("${doctorAssistant.target_url}")
//    @Value("${doctorAssistant.target_url}")
    private String targetUrl;
//
//    @Value("${es.type.FollowUpContent}")

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/jw/service/JwArchivesService.java

@ -27,7 +27,7 @@ public class JwArchivesService {
    private SystemDictService systemDictService;
    @Autowired
    private com.yihu.jw.util.http.HttpClientUtil HttpClientUtil;
    @Value("${sign.check_upload}")
//    @Value("${sign.check_upload}")
    private String jwUrl;
    @Value("${testPattern.sign}")
    private String isClose;

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/jw/service/JwSmjkService.java

@ -32,7 +32,7 @@ import java.util.Map;
public class JwSmjkService {
    //基卫服务地址
    @Value("${sign.check_upload}")
//    @Value("${sign.check_upload}")
    private String jwUrl;
    @Value("${demo.flag}")

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/rehabilitation/service/RehabilitationInfoService.java

@ -71,7 +71,7 @@ public class RehabilitationInfoService  {
    
 
    //基卫服务地址
    @Value("${sign.check_upload}")
//    @Value("${sign.check_upload}")
    private String jwUrl;
    @Autowired

+ 1 - 1
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/rehabilitation/service/ZsRehabilitationInfoService.java

@ -27,7 +27,7 @@ import java.util.*;
public class ZsRehabilitationInfoService {
    //基卫服务地址
    @Value("${sign.check_upload}")
//    @Value("${sign.check_upload}")
    private String jwUrl;
    @Autowired
    private HttpClientUtil httpClientUtil;

+ 883 - 0
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/upload/controller/FileUploadController.java

@ -0,0 +1,883 @@
package com.yihu.jw.hospital.module.upload.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.jw.hospital.utils.CommonUtil;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
@Controller
@RequestMapping(value = "/upload", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "文件上传")
public class FileUploadController extends EnvelopRestEndpoint {
    private Logger logger = LoggerFactory.getLogger(FileUploadController.class);
    @ApiParam
    FastDFSUtil fastDFSUtil;
    @Autowired
    private CommonUtil CommonUtil;
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
//    @Value("${neiwang.enable}")
    private Boolean isneiwang = false;  //如果不是内网项目要转到到内网wlyy在上传
    @Autowired
    private ObjectMapper objectMapper;
//    @Autowired
//    private CustomerService customerService;
    @RequestMapping(value = "commonUpload", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation("公共的文件上传")
    public String commonUpload(HttpServletRequest request) {
        try {
            String paths = request.getParameter("filePaths");
            String fileUrls = "";
            if (StringUtils.isBlank(paths)) {
                //为空是文件上传
                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                // 文件保存的临时路径
                FastDFSUtil fastDFSUtil = new FastDFSUtil();
                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
                String fileName = null;
                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                    // 上传文件
                    MultipartFile mf = entity.getValue();
                    fileName = mf.getOriginalFilename();
                    InputStream in = mf.getInputStream();
                    ObjectNode result = fastDFSUtil.upload(in, fileName.substring(fileName.lastIndexOf(".") + 1), "");
                    in.close();
                    if (result != null) {
                        fileUrls += (StringUtils.isEmpty(fileUrls) ? "" : ",")
                                + result.get("groupName").toString().replaceAll("\"", "") + "/"
                                + result.get("remoteFileName").toString().replaceAll("\"", "");
                    }
                }
            } else {
                String[] pathArr = paths.split(",");
                for (String path : pathArr) {
                    //传路径自己去路径上传
                    File file = new File(path);
                    String fileName = null;
                    if (file.exists()) {
                        fileName = file.getName();
                        InputStream in = new FileInputStream(file);
                        ObjectNode result = fastDFSUtil.upload(in, fileName.substring(fileName.lastIndexOf(".") + 1), "");
                        in.close();
                        if (result != null) {
                            fileUrls += (StringUtils.isEmpty(fileUrls) ? "" : ",")
                                    + result.get("groupName").toString().replaceAll("\"", "") + "/"
                                    + result.get("remoteFileName").toString().replaceAll("\"", "");
                        }
                    }
                }
            }
            return fileUrls;
        } catch (Exception e) {
            return e.getMessage();
        }
    }
//    /**
//     * 患者头像上传
//     *
//     * @return
//     * @throws IOException
//     * @throws IllegalStateException
//     */
//    @RequestMapping(value = "patientPhoto", method = RequestMethod.POST/* , headers = "Accept=image/png" */)
//    @ResponseBody
//    public String patientPhoto(HttpServletRequest request, HttpServletResponse response, String photo) {
//        if (isneiwang) {
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                String fileName = null;
//                String firstPhoto = null;
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    fileName = mf.getOriginalFilename();
//                    String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                    // 重命名文件
//                    firstPhoto = photo.substring(0, photo.lastIndexOf(".")) + "_small." + fileExt;
//                    File uploadFile = new File(SystemConf.getInstance().getTempPath() + File.separator + firstPhoto);
//                    // 拷贝文件流到指定文件路径
//                    FileCopyUtils.copy(mf.getBytes(), uploadFile);
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", String.join(",", firstPhoto));
//                logger.info("图片上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//    /**
//     * 图片上传
//     *
//     * @return
//     * @throws IOException
//     * @throws IllegalStateException
//     * 备注:图片先保存到本地服务器,后续保存图片到fastDFS
//     */
//    @RequestMapping(value = "image", method = RequestMethod.POST  /*,headers = "Accept=image/png"*/ )
//    @ResponseBody
//    public String image(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            // 圖片列表
//            List<File> images = new ArrayList<File>();
//            List<String> tempPaths = new ArrayList<String>();
//            // 文件保存的临时路径
//            String tempPath = SystemConf.getInstance().getTempPath() + File.separator;
//            // 拼接年月日路径
//            String datePath = DateUtil.getStringDate("yyyy") + File.separator + DateUtil.getStringDate("MM") + File.separator + DateUtil.getStringDate("dd") + File.separator;
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                // 创建文件夹
//                File file = new File(tempPath + datePath);
//                if (!file.exists()) {
//                    file.mkdirs();
//                }
//                String fileName = null;
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    fileName = mf.getOriginalFilename();
//                    String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                    // 重命名文件
//                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
//                    String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
//                    File uploadFile = new File(tempPath + datePath + newFileName);
//                    // 拷贝文件流到指定文件路径
//                    FileCopyUtils.copy(mf.getBytes(), uploadFile);
//                    // 生成缩略图
//                    ImageCompress.compress(uploadFile.getAbsolutePath(), uploadFile.getAbsolutePath() + "_small", 300, 300);
//                    // 添加到上传成功数组中
//                    images.add(uploadFile);
//                    tempPaths.add(datePath + newFileName);
//                }
//                String urls = "";
//                for (String image : tempPaths) {
//                    if (urls.length() == 0) {
//                        urls = image;
//                    } else {
//                        urls += "," + image;
//                    }
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", urls);
//                json.put("tempPath", tempPath);
//                logger.info("图片上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                try {
//                    // 清除垃圾图片
//                    for (File file : images) {
//                        FileUtils.forceDelete(file);
//                    }
//                } catch (Exception e2) {
//                    error(e2);
//                }
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//    /**
//     * 聊天附件上传
//     *
//     * @return
//     * @throws IOException
//     * @throws IllegalStateException
//     */
//    @RequestMapping(value = "chat", method = RequestMethod.POST)
//    @ResponseBody
//    public String chatFile(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                String fastUrl = fastdfs_file_url;
//                String type = request.getParameter("type");
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                String fileName = null;
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    fileName = mf.getOriginalFilename();
//
//                    if ("3".equals(type)) {
//                        String tempPath = CommonUtil.saveVoiceToDisk(mf.getInputStream(), fileName);
//                        String map3Path = tempPath.substring(0, tempPath.lastIndexOf("."));
//                        CommonUtil.changeToMp3(tempPath, map3Path);
//                        File tempFile = new File(tempPath);
//                        File mp3File = new File(map3Path);
//                        ObjectNode objectNode = fastDFSUtil.upload(new FileInputStream(mp3File), "mp3", "");
//                        //1.3.7 去掉前缀,返回相对路径
////                    tempPaths.add(fastUrl + objectNode.get("groupName").toString().replaceAll("\"","")
////                            + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"",""));
//                        tempPaths.add(objectNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        if (tempFile != null) {
//                            tempFile.delete();
//                        }
//                        if (mp3File != null) {
//                            mp3File.delete();
//                        }
//                    } else if ("4".equals(type)) {
//                        String tempPath = CommonUtil.saveVoiceToDisk(mf.getInputStream(), fileName);
//                        String pngPath = tempPath.substring(0, tempPath.lastIndexOf(".")) + ".png";
//                        File tempFile = new File(tempPath);
//                        File pngFile = new File(pngPath);
//                        long times = CommonUtil.getVideoTimeAndImg(tempPath, pngPath);
//                        if (times < 1000) {
//                            JSONObject json = new JSONObject();
//                            json.put("status", -1);
//                            json.put("success", true);
//                            json.put("msg", "视频录制时间太短!");
//                            json.put("times", times);
//                            return json.toString();
//                        }
//                        ObjectNode imgNode = fastDFSUtil.upload(new FileInputStream(pngPath), "png", "");
//                        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                        ObjectNode videoNode = fastDFSUtil.upload(new FileInputStream(tempPath), fileExt, "");
//
//                        tempPaths.add(imgNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + imgNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        tempPaths.add(videoNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + videoNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        tempPaths.add(times + "");
//                        if (tempFile != null) {
//                            tempFile.delete();
//                        }
//                        if (pngFile != null) {
//                            pngFile.delete();
//                        }
//                    } else {
//                        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                        ObjectNode objectNode = fastDFSUtil.upload(mf.getInputStream(), fileExt, "");
//                        tempPaths.add(objectNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                    }
//                }
//                String urls = String.join(",", tempPaths);
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("success", true);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", urls);
//                logger.info("附件上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
    /**
     * 文件上传指定上传路径
     *
     * @return
     * @throws IOException
     * @throws IllegalStateException
     */
//    @RequestMapping(value = "chatByStorage", method = RequestMethod.POST)
//    @ResponseBody
//    public String chatByStorage(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                String fastUrl = fastdfs_file_url;
//                String type = request.getParameter("type");
//                Integer storePath = Integer.valueOf(request.getParameter("storePath"));
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                String fileName = null;
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    fileName = mf.getOriginalFilename();
//
//                    if ("3".equals(type)) {
//                        String tempPath = CommonUtil.saveVoiceToDisk(mf.getInputStream(), fileName);
//                        String map3Path = tempPath.substring(0, tempPath.lastIndexOf("."));
//                        CommonUtil.changeToMp3(tempPath, map3Path);
//                        File tempFile = new File(tempPath);
//                        File mp3File = new File(map3Path);
//                        ObjectNode objectNode = fastDFSUtil.uploadByStorage(new FileInputStream(mp3File), "mp3", "",storePath);
//                        //1.3.7 去掉前缀,返回相对路径
////                    tempPaths.add(fastUrl + objectNode.get("groupName").toString().replaceAll("\"","")
////                            + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"",""));
//                        tempPaths.add(objectNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        if (tempFile != null) {
//                            tempFile.delete();
//                        }
//                        if (mp3File != null) {
//                            mp3File.delete();
//                        }
//                    } else if ("4".equals(type)) {
//                        String tempPath = CommonUtil.saveVoiceToDisk(mf.getInputStream(), fileName);
//                        String pngPath = tempPath.substring(0, tempPath.lastIndexOf(".")) + ".png";
//                        File tempFile = new File(tempPath);
//                        File pngFile = new File(pngPath);
//                        long times = CommonUtil.getVideoTimeAndImg(tempPath, pngPath);
//                        if (times < 1000) {
//                            JSONObject json = new JSONObject();
//                            json.put("status", -1);
//                            json.put("success", true);
//                            json.put("msg", "视频录制时间太短!");
//                            json.put("times", times);
//                            return json.toString();
//                        }
//                        ObjectNode imgNode = fastDFSUtil.uploadByStorage(new FileInputStream(pngPath), "png", "",storePath);
//                        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                        ObjectNode videoNode = fastDFSUtil.uploadByStorage(new FileInputStream(tempPath), fileExt, "",storePath);
//
//                        tempPaths.add(imgNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + imgNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        tempPaths.add(videoNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + videoNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                        tempPaths.add(times + "");
//                        if (tempFile != null) {
//                            tempFile.delete();
//                        }
//                        if (pngFile != null) {
//                            pngFile.delete();
//                        }
//                    } else {
//                        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                        ObjectNode objectNode = fastDFSUtil.uploadByStorage(mf.getInputStream(), fileExt, "",storePath);
//                        tempPaths.add(objectNode.get("groupName").toString().replaceAll("\"", "")
//                                + "/" + objectNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                    }
//                }
//                String urls = String.join(",", tempPaths);
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("success", true);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", urls);
//                logger.info("附件上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWangByStorage(request, response);
//        }
//    }
    /**
     * 语音上传
     *
     * @param request
     * @param response
     * @return
     */
//    @RequestMapping(value = "voice", method = RequestMethod.POST)
//    @ResponseBody
//    public String voice(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            // 圖片列表
//            List<File> voices = new ArrayList<File>();
//            List<String> tempPaths = new ArrayList<String>();
//            // 文件保存的临时路径
//            String tempPath = SystemConf.getInstance().getTempPath() + File.separator;
//            // 拼接年月日路径
//            String datePath = DateUtil.getStringDate("yyyy") + File.separator + DateUtil.getStringDate("MM") + File.separator + DateUtil.getStringDate("dd") + File.separator;
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                // 创建文件夹
//                File file = new File(tempPath + datePath);
//                if (!file.exists()) {
//                    file.mkdirs();
//                }
//                String fileName = null;
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    fileName = mf.getOriginalFilename();
//                    String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                    // 重命名文件
//                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
//                    String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
//                    File uploadFile = new File(tempPath + datePath + newFileName);
//                    // 拷贝文件流到指定文件路径
//                    FileCopyUtils.copy(mf.getBytes(), uploadFile);
//                    // 添加到上传成功数组中
//                    voices.add(uploadFile);
//                    tempPaths.add(datePath + newFileName);
//                }
//                String urls = "";
//                for (String voice : tempPaths) {
//                    if (urls.length() == 0) {
//                        urls = voice;
//                    } else {
//                        urls += "," + voice;
//                    }
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", urls);
//                logger.info("语音上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                try {
//                    // 清除垃圾图片
//                    for (File file : voices) {
//                        FileUtils.forceDelete(file);
//                    }
//                } catch (Exception e2) {
//                    error(e2);
//                }
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
    /**
     * 语音上传
     *
     * @param request
     * @param response
     * @return
     */
//    @RequestMapping(value = "src/main/test", method = RequestMethod.POST)
//    @ResponseBody
//    public String test(HttpServletRequest request, HttpServletResponse response) throws Exception {
//        if (isneiwang) {
//            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//            Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//            List<String> tempPaths = new ArrayList<String>();
//            String fastUrl = fastdfs_file_url;
//            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                MultipartFile mf = entity.getValue();
//                String fileName = mf.getOriginalFilename();
//                String tempPath = CommonUtil.saveVoiceToDisk(mf.getInputStream(), fileName);
//                String pngPath = tempPath.substring(0, tempPath.lastIndexOf(".")) + ".png";
//                File tempFile = new File(tempPath);
//                File pngFile = new File(pngPath);
//                long times = CommonUtil.getVideoTimeAndImg(tempPath, pngPath);
//                ObjectNode imgNode = fastDFSUtil.upload(new FileInputStream(pngPath), "png", "");
//                String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                ObjectNode videoNode = fastDFSUtil.upload(new FileInputStream(tempPath), fileExt, "");
//                tempPaths.add(fastUrl + imgNode.get("groupName").toString().replaceAll("\"", "")
//                        + "/" + imgNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                tempPaths.add(fastUrl + videoNode.get("groupName").toString().replaceAll("\"", "")
//                        + "/" + videoNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                tempPaths.add(times + "");
//                if (tempFile != null) {
//                    tempFile.delete();
//                }
//                if (pngFile != null) {
//                    pngFile.delete();
//                }
//            }
//            String urls = String.join(",", tempPaths);
//            return urls;
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//    @RequestMapping(value = "fastDFSImag", method = RequestMethod.POST)
//    @ApiOperation("编辑文章上传图片")
//    @ResponseBody
//    public String pushArticleList(@ApiParam(name = "file", value = "文件", required = true)
//                                  @RequestParam(value = "file", required = true) MultipartFile file,
//                                  HttpServletRequest request, HttpServletResponse response){
//        if (isneiwang) {
//            // 圖片列表
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    InputStream inputStream  = mf.getInputStream();
//                    String fileName = mf.getOriginalFilename().substring(0,mf.getOriginalFilename().lastIndexOf("."));
//                    ObjectNode imgNode = FastDFSUtil.upload(inputStream,"png",fileName);
//                    com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
//                    tempPaths.add(json.getString("fid"));
//                }
//                String urls = "";
//                for (String image : tempPaths) {
//                    if (urls.length() == 0) {
//                        urls = image;
//                    } else {
//                        urls += "," + image;
//                    }
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                json.put("data", urls);
//                logger.info("图片上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
////            String result  = CommonUtil.toNeiWang(request, response);
////            logger.info("fastDFSImag reslt :" + result);
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
    /**
     * 图片上传
     *
     * @return
     * @throws IOException
     * @throws IllegalStateException
     */
//    @RequestMapping(value = "pcimage", method = RequestMethod.POST  /*,headers = "Accept=image/png"*/ )
//    @ResponseBody
//    public String pcimage(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            // 圖片列表
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    InputStream inputStream  = mf.getInputStream();
//                    String fileName = mf.getOriginalFilename().substring(0,mf.getOriginalFilename().lastIndexOf("."));
//                    ObjectNode imgNode = FastDFSUtil.upload(inputStream,"png",fileName);
//                    com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
//                    tempPaths.add(json.getString("fid"));
//                }
//                String urls = "";
//                for (String image : tempPaths) {
//                    if (urls.length() == 0) {
//                        urls = image;
//                    } else {
//                        urls += "," + image;
//                    }
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                json.put("urls", urls);
//
//                logger.info("图片上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//    @RequestMapping(value = "deleteFile", method = RequestMethod.POST  /*,headers = "Accept=image/png"*/ )
//    @ResponseBody
//    public String deleteFile(@ApiParam(name="storagePath",value="文件的全部路径 如:group1/M00/00/00/wKgRsVjtwpSAXGwkAAAweEAzRjw471.jpg",required = true)
//                             @RequestParam(required = true)String storagePath,HttpServletRequest request, HttpServletResponse response){
//        try {
//            if (isneiwang) {
//
//                fastDFSUtil.delete(storagePath);
//            }else{
//                CommonUtil.deleteFile(storagePath,request,response);
//            }
//            JSONObject json = new JSONObject();
//            json.put("status", 200);
//            json.put("msg", "删除成功");
//            return json.toString();
//        }catch (Exception e){
//            return errorResult(e);
//        }
//    }
//    @RequestMapping(value = "uploadChatFile", method = RequestMethod.POST)
//    @ResponseBody
//    public String uploadChatFile(@RequestBody String jsonString) {
//        InputStream inputStream = null;
//        String fileName = "";
//        try {
//            Map map = objectMapper.readValue(jsonString, Map.class);
//            if (null == map.get("fileByte")) {
//                return error(-1, "上传失败");
//            }
//            String fileByte = String.valueOf(map.get("fileByte"));
//            fileName = null == map.get("fileName") ? fileName : String.valueOf(map.get("fileName"));
//            byte[] imgByte = org.apache.commons.codec.binary.Base64.decodeBase64(fileByte);
//            inputStream = new ByteArrayInputStream(imgByte);
//        } catch (Exception e) {
//            error(e);
//            return error(-1, "上传失败");
//        }
//        if (isneiwang) {
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                String tempPath = CommonUtil.saveVoiceToDisk(inputStream, fileName);
//                String pngPath = tempPath.substring(0, tempPath.lastIndexOf(".")) + ".png";
//                File tempFile = new File(tempPath);
//                File pngFile = new File(pngPath);
//                ObjectNode imgNode = fastDFSUtil.upload(new FileInputStream(pngPath), "png", "");
//                String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//                ObjectNode videoNode = fastDFSUtil.upload(new FileInputStream(tempPath), fileExt, "");
//
//                tempPaths.add(imgNode.get("groupName").toString().replaceAll("\"", "")
//                        + "/" + imgNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                tempPaths.add(videoNode.get("groupName").toString().replaceAll("\"", "")
//                        + "/" + videoNode.get("remoteFileName").toString().replaceAll("\"", ""));
//                if (tempFile != null) {
//                    tempFile.delete();
//                }
//                if (pngFile != null) {
//                    pngFile.delete();
//                }
//                String urls = String.join(",", tempPaths);
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("success", true);
//                json.put("msg", "上传成功");
//                // 图片标识对象的HTTP链接
//                json.put("urls", urls);
//                logger.info("附件上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            request.setAttribute("type", "4");
//            return CommonUtil.toNeiWang(request, inputStream, fileName);
//        }
//    }
//    @RequestMapping(value = "/uploadWxMedia", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
//    @ResponseBody
//    @ApiOperation("多张上传图片")
//    public String uploadWxMedia(@ApiParam(name = "mediaIds", value = "微信媒体id标识", defaultValue = "wL1vfE9g1fiRCl5xd-Xotl1XycWQ9mwigDLUv-S0Kmde-pXNrlySKbf5RM5SwwFl")
//                                @RequestParam(value = "mediaIds", required = true) String mediaIds) {
//        try {
//            String url = "";
//            FastDFSUtil fastDFSUtil = new FastDFSConfig().fastDFSUtil();
//            for(String mediaId:mediaIds.split(",")){
//                InputStream wxImg = getInputStream(mediaId);
//                ObjectNode result = fastDFSUtil.upload(wxImg, "jpg", "");
//                wxImg.close();
//                String serverUrl = fastdfs_file_url;
//                if (result != null) {
//                    url += ","+serverUrl
//                            + result.get("groupName").toString().replaceAll("\"", "") + "/"
//                            + result.get("remoteFileName").toString().replaceAll("\"", "");
//                } else {
//                    return write(-1, "图片上传失败!");
//                }
//            }
//            if(StringUtils.isNotBlank(url)){
//                url = url.substring(1,url.length());
//            }
//            return write(200, "图片上传成功!", "url", url);
//        } catch (Exception e) {
//            return invalidUserException(e, -1, "图片上传失败!");
//        }
//    }
//
//
//
//    @RequestMapping(value = "fastDFSVoice", method = RequestMethod.POST)
//    @ApiOperation("上传音频")
//    @ResponseBody
//    public String fastDFSVoice(@ApiParam(name = "file", value = "文件", required = true)
//                               @RequestParam(value = "file", required = true) MultipartFile file,
//                               HttpServletRequest request, HttpServletResponse response){
//        if (isneiwang) {
//            // 音频列表
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    InputStream inputStream  = mf.getInputStream();
//                    String fileName = mf.getOriginalFilename().substring(0,mf.getOriginalFilename().lastIndexOf("."));
//                    ObjectNode imgNode = FastDFSUtil.upload(inputStream,"mp3",fileName);
//                    com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
//                    tempPaths.add(json.getString("fid"));
//                }
//                String urls = "";
//                for (String  voice: tempPaths) {
//                    if (urls.length() == 0) {
//                        urls = voice;
//                    } else {
//                        urls += "," + voice;
//                    }
//                }
//                JSONObject json = new JSONObject();
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                json.put("data", urls);
//                logger.info("音频上传:" + json.toString());
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//
//
//    @RequestMapping(value = "ftpVoiceUpload", method = RequestMethod.POST)
//    @ApiOperation("上传音频")
//    @ResponseBody
//    public String ftpVoiceUpload(@ApiParam(name = "bytes", value = "文件流", required = true)
//                                 @RequestParam(value = "bytes", required = true)String bytes,
//                                 @ApiParam(name = "name", value = "文件流", required = true)
//                                 @RequestParam(value = "name", required = true) String name){
//        try {
//            //根据文件名判断是否已经上传,已上传返回true,否则返回false
//            JSONObject json = new JSONObject();
//            if(!customerService.findByFileName(name)){
//                byte[] byteres = Base64Utils.decode(bytes);
//                InputStream inputStream = new ByteArrayInputStream(byteres);
//                String fileName = name.substring(0, name.lastIndexOf("."));
//                ObjectNode imgNode = FastDFSUtil.upload(inputStream, "mp3", fileName);
//                com.alibaba.fastjson.JSONObject json1 = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
//                json.put("data", json1.getString("fid"));
//                json.put("status", 200);
//                json.put("msg", "上传成功");
//                logger.info(name + "音频上传:" + json.toString());
//                //保存录音路径
//                customerService.saveManageCallRecordVideoDo(name,json1.getString("fid"));
//            }else {
//                json.put("status", 200);
//                json.put("data", "");
//                json.put("msg", "音频已上传过");
//                logger.info(name + "音频已上传过:" + json.toString());
//            }
//            return json.toString();
//        } catch (Exception e) {
//            logger.error(name + "音频上传失败:" + e.getMessage());
//            return errorResult(e);
//        }
//    }
//
//    @RequestMapping(value = "fastDFSVoiceByRequest", method = RequestMethod.POST)
//    @ApiOperation("上传音频")
//    @ResponseBody
//    public String fastDFSVoiceTest(HttpServletRequest request, HttpServletResponse response) {
//        if (isneiwang) {
//            JSONObject json = new JSONObject();
//            List<String> tempPaths = new ArrayList<String>();
//            try {
//                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//                    // 上传文件
//                    MultipartFile mf = entity.getValue();
//                    InputStream inputStream = mf.getInputStream();
//                    String fileName = mf.getOriginalFilename().substring(0, mf.getOriginalFilename().lastIndexOf("."));
//                    //判断是否上传过
//                    if (!customerService.findByFileName(fileName)) {
//                        ObjectNode imgNode = FastDFSUtil.upload(inputStream, "mp3", fileName);
//                        com.alibaba.fastjson.JSONObject json1 = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
//                        tempPaths.add(json1.getString("fid"));
//                        json.put("data", json1.getString("fid"));
//                        json.put("status", 200);
//                        json.put("msg", "上传成功");
//                        logger.info(fileName + "音频上传:" + json.toString());
//                        //保存录音路径
//                        customerService.saveManageCallRecordVideoDo(fileName, json1.getString("fid"));
//                    } else {
//                        json.put("status", 200);
//                        json.put("data", "");
//                        json.put("msg", fileName + "音频已上传过");
//                        logger.info(fileName + "音频已上传过:" + json.toString());
//                    }
//                }
//                return json.toString();
//            } catch (Exception e) {
//                return errorResult(e);
//            }
//        } else {
//            return CommonUtil.toNeiWang(request, response);
//        }
//    }
//
//
//
//    @Autowired
//    private ExcelUtilService excelUtilService;
//
//    @PostMapping("/abcabc")
//    @ApiOperation("ExcelUtils处理")
//    @ResponseBody
//    public String importUser(@RequestParam("file")MultipartFile file,
//                             @RequestParam(value = "type", required = true)String type) {
//        try {
//            excelUtilService.excelHpvOrCyto(file,type);
//           return success("成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            return  errorResult(e);
//        }
//    }
//
}

+ 4 - 4
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/task/PushMsgTask.java

@ -37,13 +37,13 @@ public class PushMsgTask {
    @Autowired
    private HttpUtil httpUtil;
    @Value("${server.server_url}")
//    @Value("${server.server_url}")
    private String server_url;
    @Value("${pushMes.method}")
//    @Value("${pushMes.method}")
    private String putMesMethod;
    @Value("${pushMes.redis_prescription_title}")
//    @Value("${pushMes.redis_prescription_title}")
    private String redisQueue;
    //    @Value("${putMesType.wechat}")
 //    @Value("${putMesType.wechat}")
    private String putMesType;
    //模板id

+ 2 - 2
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/utils/DoctorAssistantUtil.java

@ -17,9 +17,9 @@ import java.util.List;
@Component
public class DoctorAssistantUtil {
    @Value("${doctorAssistant.api}")
//    @Value("${doctorAssistant.api}")
    private String doctorAssistant;
    @Value("${doctorAssistant.target_url}")
//    @Value("${doctorAssistant.target_url}")
    private String targetUrl;
    @Autowired
    private HttpClientUtil httpClientUtil;

+ 20 - 20
svr/svr-visit-behind/src/main/resources/application.yml

@ -301,26 +301,26 @@ cloudCare:
# 20231012新增的
server:
  server_url: https://ehr.yihu.com/wlyy/
  # 服务器图片改存FastDFS地址
  server_img_url: http://172.26.0.110:8888/
#医生助手服务器地址及模板跳转链接(医生未读消息统计页)
doctorAssistant:
  api: https://ehr.yihu.com/wlyy/
  target_url: home/html/unreadMessageStatistic.html
sign:
  check_upload_sign: http://172.19.103.88:8011/wlyy_sign
  check_upload: http://172.26.0.118:8085/wlyy_service
pushMes:
  # 1为推送redis,0为推送消息队列
  method: 0
  # redis队列名称
  redis_prescription_title: redisMessage
##如果是外网项目就是flase 内网是true
neiwang:
  enable: true
  wlyy: http://172.26.0.110:22122/
#server:
#  server_url: https://ehr.yihu.com/wlyy/
#  # 服务器图片改存FastDFS地址
#  server_img_url: http://172.26.0.110:8888/
##医生助手服务器地址及模板跳转链接(医生未读消息统计页)
#doctorAssistant:
#  api: https://ehr.yihu.com/wlyy/
#  target_url: home/html/unreadMessageStatistic.html
#sign:
#  check_upload_sign: http://172.19.103.88:8011/wlyy_sign0
#  check_upload: http://172.26.0.118:8085/wlyy_service
#pushMes:
#  # 1为推送redis,0为推送消息队列
#  method: 0
#  # redis队列名称
#  redis_prescription_title: redisMessage
###如果是外网项目就是flase 内网是true
#neiwang:
#  enable: true
#  wlyy: http://172.26.0.110:22122/
basedb:
  name: base