Bläddra i källkod

Merge branch 'develop-wxl' of https://e.coding.net/chuanghaikeji/smarCampus/iHotel_student_houtai

# Conflicts:
#	src/main/java/com/template/model/pojo/HouseOrder.java
wanxl 1 år sedan
förälder
incheckning
2c2b7be3a7
27 ändrade filer med 427 tillägg och 60 borttagningar
  1. 17 0
      README.md
  2. 1 1
      src/main/java/com/template/api/ClassScheduleAPI.java
  3. 5 2
      src/main/java/com/template/api/HouseOrderAPI.java
  4. 1 1
      src/main/java/com/template/component/WeiXiaoComponent.java
  5. 96 12
      src/main/java/com/template/controller/ApplicationProcedureTemporaryController.java
  6. 2 2
      src/main/java/com/template/controller/ClassScheduleController.java
  7. 4 0
      src/main/java/com/template/controller/HouseNumberStateController.java
  8. 83 20
      src/main/java/com/template/controller/HouseOrderController.java
  9. 1 1
      src/main/java/com/template/mapper/ClassScheduleMapper.java
  10. 3 0
      src/main/java/com/template/model/dto/ApplicationProcedureTemporaryDto.java
  11. 2 1
      src/main/java/com/template/model/dto/EstablishOrderDto.java
  12. 6 1
      src/main/java/com/template/model/mqtt/MqttPushClient.java
  13. 2 0
      src/main/java/com/template/model/pojo/ApplicationProcedureTemporary.java
  14. 3 0
      src/main/java/com/template/model/pojo/HouseOrder.java
  15. 3 0
      src/main/java/com/template/model/vo/ApplicationProcedureTemporaryVo.java
  16. 15 0
      src/main/java/com/template/model/vo/HouseOrderPageListVo.java
  17. 4 0
      src/main/java/com/template/model/vo/HouseStateManagementVo.java
  18. 6 0
      src/main/java/com/template/model/vo/QueryExportVo.java
  19. 7 0
      src/main/java/com/template/model/vo/RemainFreeVo.java
  20. 1 1
      src/main/java/com/template/services/ClassScheduleService.java
  21. 2 2
      src/main/java/com/template/services/HouseOrderService.java
  22. 4 3
      src/main/java/com/template/services/impl/ClassScheduleServiceImpl.java
  23. 133 0
      src/main/resources/application-test.yml
  24. 1 1
      src/main/resources/application.yml
  25. 12 6
      src/main/resources/mapper/template/ApplicationProcedureTemporaryMapper.xml
  26. 3 0
      src/main/resources/mapper/template/ClassScheduleMapper.xml
  27. 10 6
      src/main/resources/mapper/template/HouseOrderMapper.xml

+ 17 - 0
README.md

@@ -1 +1,18 @@
 #Back-endDevelopmentFramework
+
+测试环境
+172.16.20.80 
+启动端口:8091
+部署路径
+    /usr/local/testproject/ihotel_dev/
+数据库 
+    172.16.20.80 ihotel_dev
+    root   Chuanghai_test
+后端代理 testingServer/ihotel
+访问:https://chtech.ncjti.edu.cn/testingServer/ihotel
+前端代理 testingServer/iHotelStudentManage
+前端代理 testingServer/iHotelH5
+访问:https://chtech.ncjti.edu.cn/testingServer/iHotelStudentManage
+     https://chtech.ncjti.edu.cn/testingServer/iHotelH5
+
+ 

+ 1 - 1
src/main/java/com/template/api/ClassScheduleAPI.java

@@ -14,7 +14,7 @@ public interface ClassScheduleAPI {
 
     @GetMapping("/schedule")
     @ApiOperation(value = "创建课表", notes = "创建课表", httpMethod = "GET")
-    CommonResult schedule(String stateTime,String endTime,String teacherName);
+    CommonResult schedule(String stateTime,String endTime,String teacherName,String jsgh);
 
     @GetMapping("/downloadSchedule")
     @ApiOperation(value = "导出课表", notes = "导出课表", httpMethod = "GET")

+ 5 - 2
src/main/java/com/template/api/HouseOrderAPI.java

@@ -34,7 +34,10 @@ public interface HouseOrderAPI {
 
     @GetMapping("/pageList")
     @ApiOperation(value = "订单管理-订单页面展示", notes = "订单管理-订单页面展示", httpMethod = "GET")
-    CommonResult pageList(int adminId, int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
+    CommonResult pageList(int adminId, int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime,
+                          String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime,
+                          String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime,String houseId,Integer keyType,
+                          Integer giveBack,Integer buildingId,Integer orgId);
 
     @PostMapping("/cancel")
     @ApiOperation(value = "订单管理-订单取消", notes = "订单管理-订单取消", httpMethod = "POST")
@@ -58,7 +61,7 @@ public interface HouseOrderAPI {
 
     @GetMapping("/queryExport")
     @ApiOperation(value = "订单管理-订单导出", notes = "订单管理-订单导出", httpMethod = "GET")
-    void queryExport(HttpServletResponse response, int adminId, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
+    void queryExport(HttpServletResponse response, int adminId, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
 
     @GetMapping("/reportStatistics")
     @ApiOperation(value = "统计报表", notes = "统计报表", httpMethod = "GET")

+ 1 - 1
src/main/java/com/template/component/WeiXiaoComponent.java

@@ -72,7 +72,7 @@ public class WeiXiaoComponent {
             params.put("cards", JSON.toJSONString(cards));
             params.put("title", title);
             params.put("content", content);
-            params.put("sender", "智慧公寓");
+            params.put("sender", "研究生公寓");
             params.put("digest", digest);
 //            if (customs != null && customs.size() == 2) {
 //                params.put("customs", mapper.writeValueAsString(customs));

+ 96 - 12
src/main/java/com/template/controller/ApplicationProcedureTemporaryController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.api.ApplicationProcedureTemporaryControllerAPI;
 import com.template.common.utils.TimeExchange;
+import com.template.component.WeiXiaoComponent;
 import com.template.model.dto.AppletApprovalProcessDto;
 import com.template.model.dto.ApplicationProcedureTemporaryDto;
 import com.template.model.dto.ApprovalProcessDto;
@@ -14,9 +15,11 @@ import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.ApplicationProcedureTemporaryVo;
 import com.template.services.*;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.text.ParseException;
@@ -62,6 +65,9 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
     @Autowired
     OrganizationService organizationService;
 
+    @Autowired
+    WeiXiaoComponent weiXiaoComponent;
+
     @Override
     public CommonResult save(ApplicationProcedureTemporaryDto applicationProcedureDto) {
         if (ObjectUtils.isEmpty(applicationProcedureDto)) {
@@ -115,18 +121,15 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
             }
         }
         List<Admin> admins=adminService.list(new QueryWrapper<>());
-        String orgId=usersService.getById(usersId).getOrganId();
+        Users users=usersService.getById(usersId);
+        String orgId=users.getOrganId();
         if(ObjectUtils.isEmpty(organizationService.getById(orgId))){
             return CommonResult.fail("身份异常,申请提交失败");
         }
-        boolean flag =true;
-        for(Admin admin:admins){
-            if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(orgId) > 0) {
-                flag =false;
-                break;
-            }
-        }
-        if(flag){
+        ArrayList<String> strings = new ArrayList<>();
+        strings=this.getCardNumbers(strings,admins,orgId);
+
+        if(strings.isEmpty()){
             return CommonResult.fail("您暂无审批人,请联系管理员添加");
         }
         ApplicationProcedureTemporary applicationProcedure = new ApplicationProcedureTemporary();
@@ -145,6 +148,9 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
         boolean save = applicationProcedureTemporaryService.save(applicationProcedure);
 
         if (save) {
+            String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                    +"。原因:"+applicationProcedure.getReasonApplication()+"。";
+            weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
             return CommonResult.ok();
         }
 
@@ -258,6 +264,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
+        Users users=usersService.getById(applicationProcedure.getUsersId());
 
 //      当只需要审核一次
         if ("1".equals(approverType)) {
@@ -274,6 +281,11 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //            审批备注
                 applicationProcedure.setExamineAndApproveRemark(remark);
                 applicationProcedureTemporaryService.updateById(applicationProcedure);
+                ArrayList<String> strings = new ArrayList<>();
+                strings.add(users.getCardNumber());
+                String content ="您的审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                        +"。请进入小程序点击预定。";
+                weiXiaoComponent.sendNotice(strings,"您的审核已通过", "审批通知",content,null);
                 return CommonResult.ok();
             }
             return CommonResult.fail("权限不足");
@@ -298,6 +310,11 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //            审批备注
             applicationProcedure.setExamineAndApproveRemark(remark);
             applicationProcedureTemporaryService.updateById(applicationProcedure);
+            ArrayList<String> strings = new ArrayList<>();
+            strings.add(users.getCardNumber());
+            String content ="您的审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                    +"。请进入小程序点击预定。";
+            weiXiaoComponent.sendNotice(strings,"您的审核已通过", "审批通知",content,null);
             return CommonResult.ok();
         }
 
@@ -310,9 +327,21 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
         applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
 //            审批备注
         applicationProcedure.setSecondaryExamineAndApproveRemark(remark);
+        ArrayList<String> strings = new ArrayList<>();
+        List<Admin> admins=adminService.list(new QueryWrapper<Admin>().eq("admin_menu_id",parentId));
+        for(Admin admin:admins){
+            if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(users.getOrganId()) > 0) {
+                Users adminUser=usersService.getById(admin.getUsersId());
+                strings.add(adminUser.getCardNumber());
+            }
+        }
+        if(strings.isEmpty()){
+            return CommonResult.fail("该流程没有上级审核人员,请联系管理员添加该部门上级审核角色");
+        }
         boolean update = applicationProcedureTemporaryService.updateById(applicationProcedure);
-        System.out.println("update = " + update);
-
+        String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                +"。原因:"+applicationProcedure.getReasonApplication()+"。次级审核备注:"+remark;
+        weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
 
         return CommonResult.ok();
     }
@@ -364,6 +393,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
+        Users users=usersService.getById(applicationProcedure.getUsersId());
 
 //      当只需要审核一次
         if ("1".equals(approverType)) {
@@ -381,6 +411,11 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //            审批备注
                 applicationProcedure.setExamineAndApproveRemark(remark);
                 applicationProcedureTemporaryService.updateById(applicationProcedure);
+                ArrayList<String> strings = new ArrayList<>();
+                strings.add(users.getCardNumber());
+                String content ="您的审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                        +"。请进入小程序点击预定。";
+                weiXiaoComponent.sendNotice(strings,"您的审核已通过", "审批通知",content,null);
                 return CommonResult.ok();
             }
             return CommonResult.fail("权限不足");
@@ -404,6 +439,11 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //            审批备注
             applicationProcedure.setExamineAndApproveRemark(remark);
             applicationProcedureTemporaryService.updateById(applicationProcedure);
+            ArrayList<String> strings = new ArrayList<>();
+            strings.add(users.getCardNumber());
+            String content ="您的审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                    +"。请进入小程序点击预定。";
+            weiXiaoComponent.sendNotice(strings,"您的审核已通过", "审批通知",content,null);
             return CommonResult.ok();
         }
 
@@ -416,8 +456,21 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
         applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
 //            审批备注
         applicationProcedure.setSecondaryExamineAndApproveRemark(remark);
+        ArrayList<String> strings = new ArrayList<>();
+        List<Admin> admins=adminService.list(new QueryWrapper<Admin>().eq("admin_menu_id",parentId));
+        for(Admin admin:admins){
+            if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(users.getOrganId()) > 0) {
+                Users adminUser=usersService.getById(admin.getUsersId());
+                strings.add(adminUser.getCardNumber());
+            }
+        }
+        if(strings.isEmpty()){
+            return CommonResult.fail("该流程没有上级审核人员,请联系管理员添加该部门上级审核角色");
+        }
         applicationProcedureTemporaryService.updateById(applicationProcedure);
-
+        String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
+                +"。原因:"+applicationProcedure.getReasonApplication()+"。次级审核备注:"+remark;
+        weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
 
         return CommonResult.ok();
     }
@@ -502,5 +555,36 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
         }
     }
 
+//    @GetMapping("/test")
+//    @ApiOperation(value = "小程序-临时人员流程管理展示", notes = "小程序-临时人员流程管理展示", httpMethod = "GET")
+//    CommonResult test(){
+//        ArrayList<String> strings = new ArrayList<>();
+//        strings.add("20240702");
+//        weiXiaoComponent.sendNotice(strings,"公寓办理入住成功", "办理入住成功","content",null);
+//        return null;
+//    };
+
+    //获取下一级审批人员微校卡号集合
+    private ArrayList<String> getCardNumbers(ArrayList<String> strings,List<Admin> admins,String orgId){
+        List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
+        ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
+        String approverType = applicationProcedureSetting.getApproverType();
+        for(Admin admin:admins){
+            if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(orgId) > 0) {
+                if ("1".equals(approverType)) {
+                    Users users=usersService.getById(admin.getUsersId());
+                    strings.add(users.getCardNumber());
+                }else{
+                    AdminMenu byId = adminMenuService.getById(admin.getAdminMenuId());
+                    if(byId.getParentId()!=0){
+                        Users users=usersService.getById(admin.getUsersId());
+                        strings.add(users.getCardNumber());
+                    }
+                }
+            }
+        }
+        return strings;
+    }
+
 }
 

+ 2 - 2
src/main/java/com/template/controller/ClassScheduleController.java

@@ -49,7 +49,7 @@ public class ClassScheduleController implements ClassScheduleAPI {
     ClassScheduleService classScheduleService;
 
     @Override
-    public CommonResult schedule(String stateTime, String endTime, String teacherName) {
+    public CommonResult schedule(String stateTime, String endTime, String teacherName,String jsgh) {
         DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
         if (ObjectUtils.isEmpty(stateTime) && ObjectUtils.isEmpty(endTime)) {
@@ -76,7 +76,7 @@ public class ClassScheduleController implements ClassScheduleAPI {
         for (int i = 0; i <= until; i++) {
             LocalDate localDate = date.plusDays(i);
             ScheduleVo scheduleVo = new ScheduleVo();
-            ClassListVo classListVo = classScheduleService.classList(localDate,teacherName);
+            ClassListVo classListVo = classScheduleService.classList(localDate,teacherName,jsgh);
             scheduleVo.setClassListVo(classListVo);
             String format = localDate.format(dateTimeFormatter2);
             Map<String, String> stringMap = getDjz(format);

+ 4 - 0
src/main/java/com/template/controller/HouseNumberStateController.java

@@ -223,6 +223,10 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
             List<HouseStateVo> ownerClasses = pageVo.stream().filter(e -> e.getHouseId().equals(house.getId() + "")).collect(Collectors.toList());
             if (ownerClasses != null && ownerClasses.size() > 0) {
                 vo.setVos(ownerClasses);
+                long freeCount=ownerClasses.stream().filter(e -> (e.getStatus()!=null?e.getStatus():e.getHouseStatus()+"").equals("1")).count();
+                long useCount = ownerClasses.size()-freeCount;
+                vo.setUseCount(useCount);
+                vo.setFreeCount(freeCount);
             }
             vos.add(vo);
         }

+ 83 - 20
src/main/java/com/template/controller/HouseOrderController.java

@@ -378,6 +378,8 @@ public class HouseOrderController implements HouseOrderAPI {
         houseOrder.setTimeOut(timeOut);
 
         houseOrder.setSource(source);
+        houseOrder.setSourceId(establishOrderDto.getSourceId());
+
 
 //    单价   全日房  价格单价=总价/房间数/天数
 //       钟点房  价格单价=总价/房间数
@@ -664,7 +666,10 @@ public class HouseOrderController implements HouseOrderAPI {
     }
 
     @Override
-    public CommonResult pageList(int adminId, int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime, String houseId, Integer keyType, Integer giveBack, Integer buildingId, Integer orgId) {
+    public CommonResult pageList(int adminId, int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime,
+                                 String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime,
+                                 String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime,
+                                 String houseId, Integer keyType, Integer giveBack, Integer buildingId, Integer orgId) {
 //        PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
 //        if (ObjectUtils.isEmpty(permissionSetting)) {
 //            return CommonResult.fail("非法进入");
@@ -683,7 +688,9 @@ public class HouseOrderController implements HouseOrderAPI {
             size = 10;
         }
 
-        PageUtils<HouseOrderPageListVo> pageList = houseOrderService.pageList(page, size, keyWord, houseType, orderStatus, payPriceStartTime, payPriceEndTime, refundStartTime, refundEndTime, cancelStartTime, cancelEndTime, liveStartTime, liveEndTime, leaveStartTime, leaveEndTime, houseId, keyType, giveBack, buildingId, orgId);
+        PageUtils<HouseOrderPageListVo> pageList = houseOrderService.pageList(page, size, keyWord, houseType, orderStatus, payPriceStartTime,
+                payPriceEndTime, refundStartTime, refundEndTime, cancelStartTime, cancelEndTime,
+                reserveLiveStartTime, reserveLiveEndTime, reserveLeaveStartTime, reserveLeaveEndTime, houseId, keyType, giveBack, buildingId, orgId);
         List<HouseOrderPageListVo> list = pageList.getList();
         for (int i = 0; i < list.size(); i++) {
             HouseOrderPageListVo houseOrderPageListVo = list.get(i);
@@ -709,6 +716,19 @@ public class HouseOrderController implements HouseOrderAPI {
                 choiceBox = "6";
             }
             houseOrderPageListVo.setChoiceBox(choiceBox);
+            String[] arr=(houseOrderPageListVo.getSourceId()==null?"":houseOrderPageListVo.getSourceId()).split(",");
+            ArrayList<String> idList = new ArrayList<String>(Arrays.asList(arr)) ;
+            if(!StringUtils.hasText(houseOrderPageListVo.getSource())){
+                houseOrderPageListVo.setSource("自费");
+            }else if ("1".equals(houseOrderPageListVo.getSource())){
+                houseOrderPageListVo.setSource("课表");
+                List<ClassSchedule> schedules=new ArrayList<>(classScheduleService.listByIds(idList));
+                houseOrderPageListVo.setSchedules(schedules);
+            } else if ("2".equals(houseOrderPageListVo.getSource())){
+                houseOrderPageListVo.setSource("流程");
+                List<ApplicationProcedureTemporary> applicationProcedureTemporaries= new ArrayList<>(applicationProcedureTemporaryService.listByIds(idList));
+                houseOrderPageListVo.setApplicationProcedureTemporaries(applicationProcedureTemporaries);
+            }
         }
         pageList.setList(list);
 
@@ -1571,7 +1591,7 @@ public class HouseOrderController implements HouseOrderAPI {
     }
 
     @Override
-    public void queryExport(HttpServletResponse response, int adminId, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime, String houseId, Integer keyType, Integer giveBack, Integer buildingId, Integer orgId) {
+    public void queryExport(HttpServletResponse response, int adminId, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime, String houseId, Integer keyType, Integer giveBack, Integer buildingId, Integer orgId) {
 //        PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
 //        if (ObjectUtils.isEmpty(permissionSetting)) {
 //            return CommonResult.fail("非法进入");
@@ -1582,7 +1602,7 @@ public class HouseOrderController implements HouseOrderAPI {
 //            return CommonResult.fail("此账号暂无该权限");
 //        }
 
-        List<QueryExportVo> vos = houseOrderService.queryExport(keyWord, houseType, orderStatus, payPriceStartTime, payPriceEndTime, refundStartTime, refundEndTime, cancelStartTime, cancelEndTime, liveStartTime, liveEndTime, leaveStartTime, leaveEndTime, houseId, keyType, giveBack, buildingId, orgId);
+        List<QueryExportVo> vos = houseOrderService.queryExport(keyWord, houseType, orderStatus, payPriceStartTime, payPriceEndTime, refundStartTime, refundEndTime, cancelStartTime, cancelEndTime, reserveLiveStartTime, reserveLiveEndTime, reserveLeaveStartTime, reserveLeaveEndTime, houseId, keyType, giveBack, buildingId, orgId);
 
         //        导出
         Workbook workbook = new XSSFWorkbook();
@@ -1610,6 +1630,8 @@ public class HouseOrderController implements HouseOrderAPI {
         headerRow.createCell(19).setCellValue("支付时间");
         headerRow.createCell(20).setCellValue("退款时间");
         headerRow.createCell(21).setCellValue("取消时间");
+        headerRow.createCell(22).setCellValue("来源");
+        headerRow.createCell(23).setCellValue("来源详情");
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         if (ObjectUtils.isNotEmpty(vos) && vos.size() > 0) {
@@ -1732,6 +1754,31 @@ public class HouseOrderController implements HouseOrderAPI {
                 } else {
                     dataRow1.createCell(21).setCellValue(sdf.format(cancelTime));
                 }
+                String[] arr=(vo.getSourceId()==null?"":vo.getSourceId()).split(",");
+                ArrayList<String> idList = new ArrayList<String>(Arrays.asList(arr)) ;
+                if(!StringUtils.hasText(vo.getSource())){
+                    dataRow1.createCell(22).setCellValue("自费");
+                    dataRow1.createCell(23).setCellValue("");
+                }else if ("1".equals(vo.getSource())){
+                    vo.setSource("课表");
+                    List<ClassSchedule> schedules=new ArrayList<>(classScheduleService.listByIds(idList));
+                    String data = schedules.stream().peek((ClassSchedule u) -> u.setJsxm("姓名:"+u.getJsxm()+ ";工号:" + u.getJsgh() + ";课表日期:" + u.getDateTime() + ";备注:" + u.getRemark()+";")).map(ClassSchedule::getJsxm).collect(Collectors.joining("\r\n"));
+                    dataRow1.createCell(22).setCellValue("课表");
+                    dataRow1.createCell(23).setCellValue(data);
+                } else if ("2".equals(vo.getSource())){
+                    vo.setSource("流程");
+                    List<ApplicationProcedureTemporaryVo> applicationProcedureTemporaries= new ArrayList<>();
+                    for (int j = 0; j <idList.size(); j++) {
+                        if (StringUtils.hasText(idList.get(j))){
+                            applicationProcedureTemporaries.add(applicationProcedureTemporaryService.appletDetail(Integer.valueOf(idList.get(j))));
+                        }
+                    }
+                    String data = applicationProcedureTemporaries.stream().peek((ApplicationProcedureTemporaryVo u) ->
+                            u.setUsersName("申请人姓名:"+u.getUsersName()+ ";申请人部门" + u.getOrgName() + ";房间数量:" + u.getHouseCount()
+                                    + ";开始时间:" + u.getStartTime()+";结束时间"+u.getEndTime()+";审核状态:"+u.getStatus()+"(0:已拒绝,1:待审批,2:处理中,3:已同意);")).map(ApplicationProcedureTemporaryVo::getUsersName).collect(Collectors.joining("\r\n"));
+                    dataRow1.createCell(22).setCellValue("流程");
+                    dataRow1.createCell(23).setCellValue(data);
+                }
             }
         }
         // 将工作簿写入文件
@@ -3662,6 +3709,7 @@ public class HouseOrderController implements HouseOrderAPI {
         long until = state.until(end, ChronoUnit.DAYS);
 
         Integer count = 1;
+        List<Integer> idList =new ArrayList<>();
         if (dayDiff + until > 2) {
             count = 0;
         } else {
@@ -3673,7 +3721,6 @@ public class HouseOrderController implements HouseOrderAPI {
                 wrapperCS.eq(ClassSchedule::getJsgh, users.getCardNumber())
                         .between(ClassSchedule::getDateTime, startS, endS);
                 List<ClassSchedule> scheduleList = classScheduleService.list(wrapperCS);
-
 //            只要有一天是空的就不是免费
                 if (ObjectUtils.isEmpty(scheduleList)) {
                     count = 0;
@@ -3685,11 +3732,14 @@ public class HouseOrderController implements HouseOrderAPI {
                         count = 0;
                         break;
                     }
+                    idList.add(scheduleList.get(0).getId());
                 }
 
             }
         }
         vo.setCount(count);
+        vo.setSourceId(idList.toString());
+        vo.setDays((int) (until-dayDiff));
         if (count > 0) {
             vos.add(vo);
         }
@@ -3700,22 +3750,35 @@ public class HouseOrderController implements HouseOrderAPI {
         if (ObjectUtils.isEmpty(aptList)) {
             vo1.setCount(0);
         } else {
-            ApplicationProcedureTemporary applicationProcedureTemporary = aptList.get(0);
-            String houseCount = applicationProcedureTemporary.getHouseCount();
-            String startTime = applicationProcedureTemporary.getStartTime();
-            String endTime1 = applicationProcedureTemporary.getEndTime();
+            //可申请天数
+            long dayApt=0;
+            List<Integer> aptIdList =new ArrayList<>();
+            for (int i = 0; i <aptList.size() ; i++) {
+                ApplicationProcedureTemporary applicationProcedureTemporary = aptList.get(0);
+                String houseCount = applicationProcedureTemporary.getHouseCount();
+                String startTime = applicationProcedureTemporary.getStartTime();
+                String endTime1 = applicationProcedureTemporary.getEndTime();
 //            计算开始到结束时间有多少订单
-            LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(HouseOrder::getReserveUserId, userId)
-                    .eq(HouseOrder::getSource, 2)
-                    .between(HouseOrder::getReserveLiveTime, startTime, endTime1)
-                    .eq(HouseOrder::getPayPrice, 0)
-                    .in(HouseOrder::getOrderStatus, 1, 2, 3, 4, 8);
-            List<HouseOrder> list = houseOrderService.list(wrapper);
-            Integer count2 = Integer.valueOf(houseCount);
-            count2 = count2 - list.size();
-            vo1.setCount(count2);
-
+                LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(HouseOrder::getReserveUserId, userId)
+                        .eq(HouseOrder::getSource, 2)
+                        .between(HouseOrder::getReserveLiveTime, startTime, endTime1)
+                        .eq(HouseOrder::getPayPrice, 0)
+                        .in(HouseOrder::getOrderStatus, 1, 2, 3, 4, 8);
+                List<HouseOrder> list = houseOrderService.list(wrapper);
+                Integer count2 = Integer.valueOf(houseCount);
+                count2 = count2 - list.size();
+                if(count2==0){
+                    break;
+                }
+                aptIdList.add(applicationProcedureTemporary.getId());
+                LocalDateTime stateTimeApt = LocalDateTime.parse(startTime, dateTimeFormatter1);
+                LocalDateTime endTimeApt = LocalDateTime.parse(endTime1, dateTimeFormatter1);
+                dayApt =dayApt+stateTimeApt.toLocalDate().until(endTimeApt.toLocalDate(), ChronoUnit.DAYS);
+                vo1.setCount(count2);
+            }
+            vo1.setDays((int) dayApt);
+            vo1.setSourceId(aptIdList.toString());
         }
         if (vo1.getCount() > 0) {
             vos.add(vo1);

+ 1 - 1
src/main/java/com/template/mapper/ClassScheduleMapper.java

@@ -21,7 +21,7 @@ import java.time.LocalDate;
 @Component
 public interface ClassScheduleMapper extends BaseMapper<ClassSchedule> {
 
-    String remarks(@Param("localDate") LocalDate localDate,@Param("teacherName") String teacherName);
+    String remarks(@Param("localDate") LocalDate localDate,@Param("teacherName") String teacherName,@Param("jsgh")String jsgh);
 
     @Delete("delete from class_schedule where  remark =#{remark} ")
     int removeByRemark(String remark);

+ 3 - 0
src/main/java/com/template/model/dto/ApplicationProcedureTemporaryDto.java

@@ -27,4 +27,7 @@ public class ApplicationProcedureTemporaryDto {
     @NotBlank(message = "房间数量不能为空")
     @Pattern(regexp = "^([1-9][0-9]*){1,3}$", message = "房间数量需填入不为0的数字")
     private String houseCount;
+
+    @ApiModelProperty(value = "图片附件")
+    private String imageUrl;
 }

+ 2 - 1
src/main/java/com/template/model/dto/EstablishOrderDto.java

@@ -26,6 +26,7 @@ public class EstablishOrderDto {
     private String reserveName;
     //   免费订单来源
     private Integer source;
-
+    //来源id拼接字符串 id,id,id,xxx
+    private String sourceId;
 
 }

+ 6 - 1
src/main/java/com/template/model/mqtt/MqttPushClient.java

@@ -35,7 +35,12 @@ public class MqttPushClient  {
 //        发起连接
         connect(mqttConfiguration);
 //        订阅主题
-        subscribe();
+        if (null != client) {
+            if (client.isConnected()) {
+                subscribe();
+            }
+        }
+
     }
 
 

+ 2 - 0
src/main/java/com/template/model/pojo/ApplicationProcedureTemporary.java

@@ -71,6 +71,8 @@ public class ApplicationProcedureTemporary implements Serializable {
     @ApiModelProperty(value = "次级审批备注")
     private String secondaryExamineAndApproveRemark;
 
+    @ApiModelProperty(value = "图片附件")
+    private String imageUrl;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)

+ 3 - 0
src/main/java/com/template/model/pojo/HouseOrder.java

@@ -136,6 +136,9 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "订单来源:多个用,隔开")
     private String houseOrderSource;
 
+    @ApiModelProperty(value = "免费订单来源id,1.课表,2.流程管理")
+    private String sourceId;
+
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     private String createTime;

+ 3 - 0
src/main/java/com/template/model/vo/ApplicationProcedureTemporaryVo.java

@@ -61,4 +61,7 @@ public class ApplicationProcedureTemporaryVo {
     @ApiModelProperty(value = "次级审批备注")
     private String secondaryExamineAndApproveRemark;
 
+    @ApiModelProperty(value = "图片附件")
+    private String imageUrl;
+
 }

+ 15 - 0
src/main/java/com/template/model/vo/HouseOrderPageListVo.java

@@ -1,10 +1,13 @@
 package com.template.model.vo;
 
+import com.template.model.pojo.ApplicationProcedureTemporary;
+import com.template.model.pojo.ClassSchedule;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class HouseOrderPageListVo {
@@ -76,4 +79,16 @@ public class HouseOrderPageListVo {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "来源")
+    private String source;
+
+    @ApiModelProperty(value = "来源id")
+    private String sourceId;
+
+    @ApiModelProperty(value = "课表列表")
+    private List<ClassSchedule> schedules;
+
+    @ApiModelProperty(value = "流程列表")
+    private List<ApplicationProcedureTemporary> applicationProcedureTemporaries;
+
 }

+ 4 - 0
src/main/java/com/template/model/vo/HouseStateManagementVo.java

@@ -12,6 +12,10 @@ public class HouseStateManagementVo {
     private String name;
     @ApiModelProperty(value = "房间类型(1:全日房,2:钟点房)")
     private Integer roomType;
+    @ApiModelProperty(value = "已占用房间数量")
+    private Long useCount;
+    @ApiModelProperty(value = "空闲房间数量")
+    private Long freeCount;
 
     private List<HouseStateVo> vos;
 

+ 6 - 0
src/main/java/com/template/model/vo/QueryExportVo.java

@@ -65,4 +65,10 @@ public class QueryExportVo {
     private Date refundTime;
     //    取消时间
     private Date cancelTime;
+
+    @ApiModelProperty(value = "来源")
+    private String source;
+
+    @ApiModelProperty(value = "来源id")
+    private String sourceId;
 }

+ 7 - 0
src/main/java/com/template/model/vo/RemainFreeVo.java

@@ -4,7 +4,14 @@ import lombok.Data;
 
 @Data
 public class RemainFreeVo {
+//    免费描述
     private String name;
+//    可定房间数量
     private Integer count;
+//    来源 1 课表 2 流程
     private Integer source;
+    //来源id拼接字符串 id,id,id,xxx
+    private String sourceId;
+    //可订天数
+    private Integer days;
 }

+ 1 - 1
src/main/java/com/template/services/ClassScheduleService.java

@@ -16,7 +16,7 @@ import java.time.LocalDate;
  */
 public interface ClassScheduleService extends IService<ClassSchedule> {
 
-    ClassListVo  classList(LocalDate localDate, String teacherName);
+    ClassListVo  classList(LocalDate localDate, String teacherName,String jsgh);
 
     int removeByRemark(String remark);
 

+ 2 - 2
src/main/java/com/template/services/HouseOrderService.java

@@ -39,9 +39,9 @@ public interface HouseOrderService extends IService<HouseOrder> {
      */
     PriceVo reservePrice(String houseId, String cardNumber, String liveTime, String leaveTime);
 
-    PageUtils<HouseOrderPageListVo> pageList(int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
+    PageUtils<HouseOrderPageListVo> pageList(int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
 
-    List<QueryExportVo> queryExport(String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
+    List<QueryExportVo> queryExport(String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String reserveLiveStartTime, String reserveLiveEndTime, String reserveLeaveStartTime, String reserveLeaveEndTime,String houseId,Integer keyType,Integer giveBack,Integer buildingId,Integer orgId);
 
 
     HouseOrderCheckInShowVo getOrderNumbre(String orderNumber);

+ 4 - 3
src/main/java/com/template/services/impl/ClassScheduleServiceImpl.java

@@ -28,16 +28,17 @@ public class ClassScheduleServiceImpl extends ServiceImpl<ClassScheduleMapper, C
     ClassScheduleMapper classScheduleMapper;
 
     @Override
-    public ClassListVo classList(LocalDate localDate, String teacherName) {
+    public ClassListVo classList(LocalDate localDate, String teacherName,String jsgh) {
         LambdaQueryWrapper<ClassSchedule> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(ClassSchedule::getDateTime, localDate)
-                .like(ObjectUtils.isNotEmpty(teacherName),ClassSchedule::getJsxm,teacherName);
+                .like(ObjectUtils.isNotEmpty(teacherName),ClassSchedule::getJsxm,teacherName)
+                .eq(ClassSchedule::getJsgh,jsgh);
         List<ClassSchedule> list = this.list(wrapper);
 
         ClassListVo classListVo = new ClassListVo();
         classListVo.setList(list);
 
-        String remarks=classScheduleMapper.remarks(localDate,teacherName);
+        String remarks=classScheduleMapper.remarks(localDate,teacherName,jsgh);
 
         classListVo.setRemarks(remarks);
         return classListVo;

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 133 - 0
src/main/resources/application-test.yml


+ 1 - 1
src/main/resources/application.yml

@@ -5,7 +5,7 @@ server:
 
 spring:
   profiles:
-      active: dev
+      active: test
   main:
     allow-circular-references: true
   servlet:

+ 12 - 6
src/main/resources/mapper/template/ApplicationProcedureTemporaryMapper.xml

@@ -22,7 +22,8 @@
         apu.approverName,
         apu.secondaryApproverName,
         apu.houseCount,
-        apu.orgName
+        apu.orgName,
+        apu.imageUrl
         FROM
         (
         SELECT
@@ -45,7 +46,8 @@
         u.user_name as usersName,
         o.id as orgId,
         o.name as orgName,
-        ap.house_count as houseCount
+        ap.house_count as houseCount,
+        ap.image_url as imageUrl
         FROM
         `application_procedure_temporary` ap
         LEFT JOIN admin a on a.id=ap.approver_id
@@ -105,7 +107,8 @@
         apu.approverName,
         apu.secondaryApproverName,
         apu.houseCount,
-        apu.orgName
+        apu.orgName,
+        apu.imageUrl
         FROM
         (
         SELECT
@@ -128,7 +131,8 @@
         u.user_name as userName,
         o.id as orgId,
         o.name as orgName,
-        ap.house_count as houseCount
+        ap.house_count as houseCount,
+        ap.image_url as imageUrl
         FROM
         `application_procedure_temporary` ap
         LEFT JOIN admin a on a.id=ap.approver_id
@@ -273,7 +277,8 @@
             ap.secondary_examine_and_approve_remark as secondaryExamineAndApproveRemark,
             u.user_name as usersName,
             ap.house_count as houseCount,
-            o.name as orgName
+            o.name as orgName,
+            ap.image_url as imageUrl
         FROM
             `application_procedure_temporary` ap
             LEFT JOIN users u on u.id=ap.users_id and u.deleted=0
@@ -313,7 +318,8 @@
         ap.secondary_examine_and_approve_remark as secondaryExamineAndApproveRemark,
         u.user_name as usersName,
         ap.house_count as houseCount,
-        o.name as orgName
+        o.name as orgName,
+        ap.image_url as imageUrl
         FROM
         `application_procedure_temporary` ap
         LEFT JOIN users u on u.id=ap.users_id and u.deleted=0

+ 3 - 0
src/main/resources/mapper/template/ClassScheduleMapper.xml

@@ -14,6 +14,9 @@
             <if test="teacherName != null and teacherName != ''">
                 and cs.jsxm like '%' #{teacherName} '%'
             </if>
+            <if test="jsgh != null and jsgh != ''">
+                and cs.jsgh = #{jsgh}
+            </if>
         </where>
         GROUP BY date_time
     </select>

+ 10 - 6
src/main/resources/mapper/template/HouseOrderMapper.xml

@@ -34,7 +34,9 @@
         ho.key_type as lockStatus,
         ho.key_pass_word as keyPassWord,
         ho.give_back as giveBack,
-        ho.remark
+        ho.remark,
+        ho.source as source,
+        ho.source_id as sourceId
         FROM
         `house_order` ho
         LEFT JOIN house_number hn ON hn.id = ho.house_number_id
@@ -78,13 +80,13 @@
             </if>
 
             <if test="liveStartTime != null and liveStartTime != '' and liveEndTime != null and liveEndTime != ''  ">
-                AND #{liveEndTime} >= ho.live_time
-                AND ho.live_time >= #{liveStartTime}
+                AND #{liveEndTime} >= ho.reserve_live_time
+                AND ho.reserve_live_time >= #{liveStartTime}
             </if>
 
             <if test="leaveStartTime != null and leaveStartTime != '' and leaveEndTime != null and leaveEndTime != ''  ">
-                AND #{leaveEndTime} >= ho.leave_time
-                AND ho.leave_time >= #{leaveStartTime}
+                AND #{leaveEndTime} >= ho.reserve_leave_time
+                AND ho.reserve_leave_time >= #{leaveStartTime}
             </if>
 
             <if test="houseId != null and houseId != ''">
@@ -135,7 +137,9 @@
         ho.order_channel as orderChannelType,
         ho.pay_time as payTime,
         ho.refund_time as refundTime,
-        ho.cancel_time as cancelTime
+        ho.cancel_time as cancelTime,
+        ho.source as source,
+        ho.source_id as sourceId
         FROM
         `house_order` ho
         LEFT JOIN house_number hn ON hn.id = ho.house_number_id