ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -172,6 +172,15 @@ contractService.updateById(contract); return R.ok(); } @Log(title = "合同管理-确认结算", businessType = BusinessType.UPDATE) @ApiOperation(value = "确认结算") @PostMapping(value = "/confirmSettlement") public R<Boolean> confirmSettlement(String id) { TContract contract = contractService.getById(id); contract.setStatus("8"); contractService.updateById(contract); return R.ok(); } @ApiOperation(value = "终止合同剩余未缴费账单列表") @PostMapping(value = "/contractBillList") public R<PageInfo<BillVO>> contractBillList(@RequestBody TContractBillQuery query) { ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TFaultRepairMessageController.java
@@ -1,9 +1,26 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.R; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.TFaultRepairMessageDTO; import com.ruoyi.system.model.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.TFaultAreaDicVO; import com.ruoyi.system.vo.TItemTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.stream.Collectors; /** * <p> @@ -13,9 +30,94 @@ * @author xiaochen * @since 2025-01-17 */ @Api(tags = "报修管理") @RestController @RequestMapping("/t-fault-repair-message") public class TFaultRepairMessageController { private final TFaultRepairMessageService tFaultRepairMessageService; private final TItemService itemService; private final TItemTypeService itemTypeService; private final TFaultAreaDicService faultAreaDicService; private final TFaultDescribeDicService faultDescribeDicService; private final TokenService tokenService; private final TContractService contractService; private final THouseService houseService; @Autowired public TFaultRepairMessageController(TFaultRepairMessageService tFaultRepairMessageService, TItemService itemService, TItemTypeService itemTypeService, TFaultAreaDicService faultAreaDicService, TFaultDescribeDicService faultDescribeDicService, TokenService tokenService, TContractService contractService, THouseService houseService) { this.tFaultRepairMessageService = tFaultRepairMessageService; this.itemService = itemService; this.itemTypeService = itemTypeService; this.faultAreaDicService = faultAreaDicService; this.faultDescribeDicService = faultDescribeDicService; this.tokenService = tokenService; this.contractService = contractService; this.houseService = houseService; } /** * 获取维修物品二级结构 */ @ApiOperation(value = "获取维修物品二级结构") @PostMapping(value = "/getItemList") public R<List<TItemTypeVO>> getItemList() { List<TItemTypeVO> itemTypes = itemTypeService.getItemList(); List<TItem> items = itemService.list(); itemTypes.forEach(itemType -> { itemType.setItemList(items.stream().filter(item -> itemType.getId().equals(item.getTypeId())).collect(Collectors.toList())); }); return R.ok(itemTypes); } /** * 获取故障区域列表 */ @ApiOperation(value = "获取故障区域二级结构") @PostMapping(value = "/getAreaDicList") public R<List<TFaultAreaDicVO>> getAreaDicList() { List<TFaultAreaDicVO> faultAreaDicVOS = faultAreaDicService.getAreaDicList(); List<TFaultDescribeDic> faultDescribeDicList = faultDescribeDicService.list(); faultAreaDicVOS.forEach(areaDicVO -> { areaDicVO.setFaultDescribeDicList(faultDescribeDicList.stream().filter(item -> areaDicVO.getId().equals(item.getFaultId())).collect(Collectors.toList())); }); return R.ok(faultAreaDicVOS); } /** * 通过当前租户查询合同房源信息 */ @ApiOperation(value = "通过当前租户查询合同房源信息") @PostMapping(value = "/getConcatByTenantId") public R<List<TContract>> getConcatByTenantId() { // Long userId = tokenService.getLoginUser().getUserId(); String tenantId = "1881967035070177281"; // 查询合同信息 List<TContract> list = contractService.list(Wrappers.lambdaQuery(TContract.class) .eq(TContract::getTenantId, tenantId) .eq(TContract::getStatus, 4)); if(CollectionUtils.isEmpty(list)){ return R.ok(list); } List<String> houseIds = list.stream().map(TContract::getHouseId).collect(Collectors.toList()); List<THouse> houseList = houseService.list(Wrappers.lambdaQuery(THouse.class) .in(THouse::getId, houseIds)); list.forEach(item -> { item.setHouseName(houseList.stream().filter(house -> house.getId().equals(item.getHouseId())).findFirst().orElse(new THouse()).getHouseName()); }); return R.ok(list); } /** * 添加报修信息 */ @ApiOperation(value = "添加报修信息") @PostMapping(value = "/addFault") public R<String> addFault(@RequestBody TFaultRepairMessageDTO dto) { tFaultRepairMessageService.save(dto); return R.ok(); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TInformationController.java
@@ -2,19 +2,16 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.system.model.TInformation; import com.ruoyi.system.query.TInformationQuery; import com.ruoyi.system.service.TInformationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; /** * <p> @@ -30,9 +27,11 @@ public class TInformationController { private final TInformationService informationService; private final RedisCache redisCache; @Autowired public TInformationController(TInformationService informationService) { public TInformationController(TInformationService informationService, RedisCache redisCache) { this.informationService = informationService; this.redisCache = redisCache; } /** @@ -44,5 +43,16 @@ return R.ok(informationService.pageList(query)); } /** * 获取资讯管理详情 */ @ApiOperation(value = "获取资讯管理详情") @GetMapping(value = "/getDetailById") public R<TInformation> getDetailById(@RequestParam String id) { // 处理查看次数 redisCache.increment(Constants.INFORMATION_VIEW + id); return R.ok(informationService.getById(id)); } } ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -128,6 +128,10 @@ * LDAPS 远程方法调用 */ public static final String LOOKUP_LDAPS = "ldaps:"; /** * LDAPS 远程方法调用 */ public static final String INFORMATION_VIEW = "information_view:"; /** * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全) ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
@@ -330,4 +330,14 @@ Long result = (Long) redisTemplate.execute(UNLOCK_SCRIPT, Collections.singletonList(lockKeyWithPrefix), requestId); return result != null && result == 1L; } /** * 自增 * @param key 要加一的键 */ public int increment(String key) { // +1 操作 return redisTemplate.opsForValue().increment(key).intValue(); } } ruoyi-system/src/main/java/com/ruoyi/system/dto/TFaultRepairMessageDTO.java
New file @@ -0,0 +1,10 @@ package com.ruoyi.system.dto; import com.ruoyi.system.model.TFaultRepairMessage; import io.swagger.annotations.ApiModel; import lombok.Data; @Data @ApiModel(value = "报修dto") public class TFaultRepairMessageDTO extends TFaultRepairMessage { } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFaultAreaDicMapper.java
@@ -4,6 +4,7 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TFaultAreaDic; import com.ruoyi.system.query.TFaultAreaDicQuery; import com.ruoyi.system.vo.TFaultAreaDicVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,4 +29,9 @@ */ List<TFaultAreaDic> pageList(@Param("query")TFaultAreaDicQuery query, @Param("pageInfo")PageInfo<TFaultAreaDic> pageInfo); /** * 查询列表 * @return */ List<TFaultAreaDicVO> getAreaDicList(); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TItemTypeMapper.java
@@ -4,6 +4,7 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TItemType; import com.ruoyi.system.query.TItemTypeQuery; import com.ruoyi.system.vo.TItemTypeVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,4 +26,8 @@ * @return */ List<TItemType> pageList(@Param("query") TItemTypeQuery query, @Param("pageInfo")PageInfo<TItemType> pageInfo); List<TItemTypeVO> getItemList(); } ruoyi-system/src/main/java/com/ruoyi/system/model/TContract.java
@@ -133,6 +133,16 @@ @TableField("remark") private String remark; /** * 1 待提交 * 2 待审批 * 3 未签订 * 4 已签订 * 5 已驳回 * 6 已终止 * 7 待结算 * 8 已结算 */ @ApiModelProperty(value = "状态 待提交 待审批 未签订 已签订....") @TableField("status") private String status; @@ -151,5 +161,8 @@ @ApiModelProperty(value = "合计年租金") @TableField("total_year") private BigDecimal totalYear; @ApiModelProperty(value = "房屋名称") @TableField(exist = false) private String houseName; } ruoyi-system/src/main/java/com/ruoyi/system/model/TFaultRepairMessage.java
@@ -34,13 +34,17 @@ private String id; @ApiModelProperty(value = "用户id") @TableField("app_user_id") private String appUserId; @TableField("tenant_id") private String tenantId; @ApiModelProperty(value = "物品id") @TableField("item_id") private String itemId; @ApiModelProperty(value = "合同id") @TableField("contract_id") private String contractId; @ApiModelProperty(value = "故障区域") @TableField("fault_area_name") private String faultAreaName; ruoyi-system/src/main/java/com/ruoyi/system/model/TInformation.java
@@ -67,4 +67,8 @@ @TableField("attachment_name") private String attachmentName; @ApiModelProperty(value = "查看次数") @TableField(exist = false) private Integer viewCount; } ruoyi-system/src/main/java/com/ruoyi/system/service/TFaultAreaDicService.java
@@ -4,6 +4,9 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TFaultAreaDic; import com.ruoyi.system.query.TFaultAreaDicQuery; import com.ruoyi.system.vo.TFaultAreaDicVO; import java.util.List; /** * <p> @@ -28,4 +31,7 @@ * @return */ boolean isExit(TFaultAreaDic dto); List<TFaultAreaDicVO> getAreaDicList(); } ruoyi-system/src/main/java/com/ruoyi/system/service/TItemTypeService.java
@@ -4,6 +4,9 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TItemType; import com.ruoyi.system.query.TItemTypeQuery; import com.ruoyi.system.vo.TItemTypeVO; import java.util.List; /** * <p> @@ -28,4 +31,6 @@ * @return */ PageInfo<TItemType> pageList(TItemTypeQuery query); List<TItemTypeVO> getItemList(); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFaultAreaDicServiceImpl.java
@@ -11,6 +11,7 @@ import com.ruoyi.system.query.TFaultAreaDicQuery; import com.ruoyi.system.service.TFaultAreaDicService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.TFaultAreaDicVO; import com.ruoyi.system.vo.TenantVO; import org.springframework.stereotype.Service; @@ -45,4 +46,9 @@ return this.count(Wrappers.lambdaQuery(TFaultAreaDic.class).eq(TFaultAreaDic::getFaultAreaName, dto.getFaultAreaName())) > 0; } } @Override public List<TFaultAreaDicVO> getAreaDicList() { return this.baseMapper.getAreaDicList(); } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInformationServiceImpl.java
@@ -1,12 +1,15 @@ package com.ruoyi.system.service.impl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.system.mapper.TInformationMapper; import com.ruoyi.system.model.TInformation; import com.ruoyi.system.query.TInformationQuery; import com.ruoyi.system.service.TInformationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.HouseVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -22,10 +25,16 @@ @Service public class TInformationServiceImpl extends ServiceImpl<TInformationMapper, TInformation> implements TInformationService { @Autowired private RedisCache redisCache; @Override public PageInfo<TInformation> pageList(TInformationQuery query) { PageInfo<TInformation> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TInformation> list = this.baseMapper.pageList(query,pageInfo); list.forEach(item -> { item.setViewCount(redisCache.getCacheObject(Constants.INFORMATION_VIEW + item.getId())); }); pageInfo.setRecords(list); return pageInfo; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TItemTypeServiceImpl.java
@@ -10,6 +10,7 @@ import com.ruoyi.system.query.TItemTypeQuery; import com.ruoyi.system.service.TItemTypeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.TItemTypeVO; import org.springframework.stereotype.Service; import java.util.List; @@ -43,4 +44,9 @@ pageInfo.setRecords(list); return pageInfo; } @Override public List<TItemTypeVO> getItemList() { return this.baseMapper.getItemList(); } } ruoyi-system/src/main/java/com/ruoyi/system/vo/FaultConcatInfoVO.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.system.vo; import com.ruoyi.system.model.TContract; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data @ApiModel(value = "报修房源信息VO") public class FaultConcatInfoVO extends TContract { @ApiModelProperty(value = "房屋名称") private String houseName; } ruoyi-system/src/main/java/com/ruoyi/system/vo/TFaultAreaDicVO.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.system.vo; import com.ruoyi.system.model.TFaultAreaDic; import com.ruoyi.system.model.TFaultDescribeDic; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "故障区域vo") public class TFaultAreaDicVO extends TFaultAreaDic { @ApiModelProperty(value = "故障描述") private List<TFaultDescribeDic> faultDescribeDicList; } ruoyi-system/src/main/java/com/ruoyi/system/vo/TItemTypeVO.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.system.vo; import com.ruoyi.system.model.TItem; import com.ruoyi.system.model.TItemType; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "物品类型VO") public class TItemTypeVO extends TItemType { @ApiModelProperty(value = "维修物品集合") private List<TItem> itemList; } ruoyi-system/src/main/resources/mapper/system/TFaultAreaDicMapper.xml
@@ -24,5 +24,11 @@ WHERE disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} ORDER BY sort_by,create_time DESC </select> <select id="getAreaDicList" resultType="com.ruoyi.system.vo.TFaultAreaDicVO"> SELECT <include refid="Base_Column_List"></include> FROM t_fault_area_dic WHERE disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} ORDER BY sort_by,create_time DESC </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TFaultRepairMessageMapper.xml
@@ -5,8 +5,9 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TFaultRepairMessage"> <id column="id" property="id" /> <result column="app_user_id" property="appUserId" /> <result column="tenant_id" property="tenantId" /> <result column="item_id" property="itemId" /> <result column="contract_id" property="contractId" /> <result column="fault_area_name" property="faultAreaName" /> <result column="describe_name" property="describeName" /> <result column="describe_detail" property="describeDetail" /> @@ -18,7 +19,7 @@ <result column="leave_message" property="leaveMessage" /> <result column="handle_person" property="handlePerson" /> <result column="handle_time" property="handleTime" /> <result column="reault_describe" property="reaultDescribe" /> <result column="result_describe" property="resultDescribe" /> <result column="repair_picture" property="repairPicture" /> <result column="attachment" property="attachment" /> <result column="status" property="status" /> @@ -31,7 +32,7 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, app_user_id, item_id, fault_area_name, describe_name, describe_detail, fault_pictures, service_address, repair_type, visit_time, contact_number, leave_message, handle_person, handle_time, reault_describe, repair_picture, attachment, status, create_time, update_time, create_by, update_by, disabled id, tenant_id, item_id,contract_id, fault_area_name, describe_name, describe_detail, fault_pictures, service_address, repair_type, visit_time, contact_number, leave_message, handle_person, handle_time, result_describe, repair_picture, attachment, status, create_time, update_time, create_by, update_by, disabled </sql> </mapper> ruoyi-system/src/main/resources/mapper/system/TItemTypeMapper.xml
@@ -25,5 +25,12 @@ where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} ORDER BY sort_by,create_time DESC </select> <select id="getItemList" resultType="com.ruoyi.system.vo.TItemTypeVO"> select <include refid="Base_Column_List"/> from t_item_type where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} ORDER BY sort_by,create_time DESC </select> </mapper>