hz-zhhq-app-service/greenH5modul/.svn/pristine/1f/1fa0c515fa65e040a74fc2da737...

1210 lines
57 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nationalelectric.greenH5;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectric.greenH5.DTO.GreenHouseDto;
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
import com.nationalelectric.greenH5.po.GreenRentHouseApply;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.utils.DateTime;
import com.nationalelectric.greenH5.utils.DateTimeHelper;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import com.sgcc.uap.utils.StringUtils;
import com.sun.org.apache.xpath.internal.FoundIndex;
import com.aostarit.mobile.client.message.api.client.MsgQueryClient;
import com.aostarit.mobile.client.message.api.client.MsgRequestClient;
import com.aostarit.mobile.client.message.api.client.MsgSendClient;
import com.aostarit.mobile.client.message.api.config.WxMsgConfig;
import com.aostarit.mobile.client.message.api.entity.SendMsgParams;
import com.aostarit.mobile.client.message.api.entity.WxSendMsgResult;
/**
* 租房管理
*
* @author 96048
*
*/
@Controller
@RequestMapping("/greenHouse")
public class GreenHouseController extends GreenBaseController {
@Autowired
IHibernateDao hibernateDao;
@Autowired
private BaseServiceImpl baseService;
/**
* 房屋申请列表:个人查看
*
* @param rentHouseApply
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/page", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult page(@RequestBody GreenRentHouseApply rentHouseApply) {
try {
String userId = rentHouseApply.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
int limit = ((rentHouseApply.getPageNum() > 0 ? rentHouseApply.getPageNum() : 1) - 1)
* rentHouseApply.getPageSize();
int pageSize = rentHouseApply.getPageSize() * rentHouseApply.getPageNum();
String sql = "select * from (select rn.*,rownum from ( "
+ " SELECT gha.ID as \"id\", gha.USER_ID as \"userId\", gha.USER_NAME as \"userName\", gha.GENDER as \"gender\", "
+ " gha.MARRIAGE_STATE as \"marriageState\", gha.PHONE as \"phone\", gha.ORG_ID as \"orgId\", gha.ORG_NAME as \"orgName\", "
+ " gha.POSITION as \"position\", gha.USER_TYPE as \"userType\", gha.HOUSE_TYPE as \"houseType\", gha.APPLY_CAUSE as \"applyCause\","
+ " to_char(gha.APPLY_TIME,'YYYY-MM-DD HH24:MI:SS') as \"applyTime\", gha.EXAMINE_STATE as \"examineState\", "
+ " gha.EXAMINE_BATCH as \"examineBatch\" ,"
+ " gha.CONTRACT_START_TIME as \"contractStartTime\" , gha.CONTRACT_END_TIME as \"contractEndTime\" ,gha.PHOTO AS \"photo\","
+ " gha.CONTRACT_STATE AS \"contractState\",gha.CONTRACT_PHOTO AS \"contractPhoto\","
+ " ghs.HOUSE_NAME AS \"houseName\",ghs.RESPONSIBLE AS \"pesponsible\",ghs.RESPONSIBLE_PHONE AS \"pesponsiblePhone\",gha.IS_UPLOAD AS \"isUpload\" "
+ " FROM GREEN_HOUSE_APPLY gha LEFT JOIN GREEN_HOUSE_SELECTED ghs ON ghs.APPLY_ID = gha.ID "
+ " where gha.DEL_FLAG = 0 AND gha.USER_ID = ? ORDER BY gha.APPLY_TIME DESC "
+ ") rn ) where rownum>? and rownum<=?";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql,
new Object[] { userId, limit, pageSize });
for (Map<String, Object> map : list) {
String photoStr = String.valueOf(map.get("photo"));
String contractPhotoStr = String.valueOf(map.get("contractPhoto"));
List<String> photoResult = Arrays.asList(photoStr.split(","));
List<String> contractPhotoResult = Arrays.asList(contractPhotoStr.split(","));
String photoUrl = "";
String contractPhotoUrl = "";
for (String string : photoResult) {
photoUrl += baseService.getImageBase64(string) + ",";
}
photoUrl = photoUrl.substring(0, photoUrl.lastIndexOf(","));
map.put("photo", photoUrl);
for (String string : contractPhotoResult) {
contractPhotoUrl += baseService.getImageBase64(string) + ",";
}
contractPhotoUrl = contractPhotoUrl.substring(0, contractPhotoUrl.lastIndexOf(","));
map.put("contractPhoto", contractPhotoUrl);
}
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* 房屋申请列表:审核人员查看
*
* @param rentHouseApply
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/examinePage", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult examinePage(@RequestBody GreenRentHouseApply rentHouseApply) {
try {
ArrayList<Object> paramList = new ArrayList<Object>();
String userId = rentHouseApply.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
int limit = ((rentHouseApply.getPageNum() > 0 ? rentHouseApply.getPageNum() : 1) - 1)
* rentHouseApply.getPageSize();
int pageSize = rentHouseApply.getPageSize() * rentHouseApply.getPageNum();
String examineState = rentHouseApply.getExamineState();
String examineBatch = rentHouseApply.getExamineBatch();
if (StringUtils.isBlank(examineState)) {
return new RestResult(Constant.FAILED, "审核状态不能为空");
}
if (StringUtils.isBlank(examineBatch)) {
return new RestResult(Constant.FAILED, "审核批次不能为空");
}
if ("0".equals(examineState)) {
String sql = "select count(*) from GREEN_DICTIONARY_INFO where data_type = 'houseExamineSwitch' and data_code = ? and data_value = 1 ";
int count = hibernateDao.queryForIntWithSql(sql, new Object[] { examineBatch });
if (count == 0) {
return new RestResult(Constant.SUCCESS, "操作成功", new ArrayList<Map<String, String>>());
}
}
String sql = "select * from (select rn.*,rownum from ( "
+ " SELECT A.ID as \"id\", A.USER_ID as \"userId\", A.USER_NAME as \"userName\", A.GENDER as \"gender\", "
+ " A.MARRIAGE_STATE as \"marriageState\", A.PHONE as \"phone\", A.ORG_ID as \"orgId\", A.ORG_NAME as \"orgName\", "
+ " A.POSITION as \"position\", A.USER_TYPE as \"userType\", A.HOUSE_TYPE as \"houseType\", A.APPLY_CAUSE as \"applyCause\","
+ " to_char(A.APPLY_TIME,'YYYY-MM-DD HH24:MI:SS') as \"applyTime\", A.EXAMINE_STATE as \"examineState\", A.EXAMINE_BATCH as \"examineBatch\",A.IS_UPLOAD AS \"isUpload\" "
+ " FROM GREEN_HOUSE_APPLY A ";
if (!"4".equals(examineBatch)) {
sql += " LEFT JOIN (select ID,APPLY_ID,USER_ID,USER_NAME,EXAMINE_STATE,to_char(EXAMINE_TIME,'yyyy-mm-dd hh24:mi:ss') AS \"EXAMINE_TIME\",to_char(UPD_TIME,'yyyy-mm-dd hh24:mi:ss') AS \"UPD_TIME\",DEL_FLAG,EXAMINE_OPINION,EXAMINE_BATCH,BATCH_DESCRIPTION from GREEN_HOUSE_APPLY_EXAMINE where EXAMINE_BATCH= ? and DEL_FLAG=0) E ON A.ID = E.APPLY_ID ";
paramList.add(examineBatch);
}
;
sql += " WHERE A.DEL_FLAG = 0 ";
// 当查询审核批次为1时只查询当前用户部门以及子部门的数据
if ("1".equals(examineBatch)) {
sql += "AND A.ORG_ID IN (SELECT id FROM GREEN_DEPARTMENT START WITH ID = ? CONNECT BY PRIOR ID = PARENT_ID) ";
paramList.add(rentHouseApply.getOrgId());
}
if ("3".equals(examineBatch)) {
if ("1".equals(examineState)) {// 已审批
sql += " AND A.EXAMINE_STATE !=0 AND A.EXAMINE_BATCH = ? ";
paramList.add(examineBatch);
} else if ("0".equals(examineState)) {// 待审批
sql += " AND A.EXAMINE_STATE = 0 AND A.EXAMINE_BATCH = ? ";
paramList.add(examineBatch);
}
} else {
if ("1".equals(examineState)) {// 已审批
sql += "and e.ID is not NULL ";
} else if ("0".equals(examineState)) {// 未审批
sql += "AND A.EXAMINE_STATE = 0 AND A.EXAMINE_BATCH = ? ";
paramList.add(examineBatch);
}
}
sql += " ORDER BY A.APPLY_TIME DESC " + " ) rn )where rownum>? and rownum<=? ";
paramList.add(limit);
paramList.add(pageSize);
System.err.println(sql);
List<GreenRentHouseApply> list = hibernateDao.queryForListWithSql(sql, paramList.toArray());
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* 房屋申请列表详情
*
* @param rentHouseApply
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/detail", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult detail(@RequestBody GreenRentHouseApply rentHouseApply) {
try {
String userId = rentHouseApply.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String sql = "SELECT ghs.HOUSE_ID AS \"houseId\",gha.ID as \"id\", gha.USER_ID as \"userId\", gha.USER_NAME as \"userName\", gha.GENDER as \"gender\", "
+ " gha.MARRIAGE_STATE as \"marriageState\", gha.PHONE as \"phone\", gha.ORG_ID as \"orgId\", gha.ORG_NAME as \"orgName\", "
+ " gha.POSITION as \"position\", gha.USER_TYPE as \"userType\", gha.HOUSE_TYPE as \"houseType\", gha.APPLY_CAUSE as \"applyCause\","
+ " to_char(gha.APPLY_TIME,'YYYY-MM-DD HH24:MI:SS') as \"applyTime\", gha.EXAMINE_STATE as \"examineState\", gha.EXAMINE_BATCH as \"examineBatch\" ,gha.CONTRACT_START_TIME as \"contractStartTime\" , gha.CONTRACT_END_TIME as \"contractEndTime\" ,gha.PHOTO AS \"photo\",gha.CONTRACT_STATE AS \"contractState\",gha.CONTRACT_PHOTO AS \"contractPhoto\","
+ " ghs.HOUSE_NAME AS \"houseName\",ghs.RESPONSIBLE AS \"pesponsible\",ghs.RESPONSIBLE_PHONE AS \"pesponsiblePhone\",gha.ROOM_INSPECTION AS \"roomInspection\",gha.IS_UPLOAD \"isUpload\", "
+ " gha.CHECK_IN_PHOTO AS \"checkInPhoto\",gha.WATER_VALUE AS \"waterValue\",gha.POWER_VALUE AS \"powerValue\","
+ " gha.GAS_VALUE AS \"gasValue\",gha.DEVICE_LIST AS \"deviceList\",ghs.RENT AS \"rent\", "
+ " gha.CHECK_OUT_DATE AS \"checkOutDate\",gha.CHECK_OUT_PHOTO AS \"checkOutPhoto\", "
+ " gha.PROPERTY_PHOTO AS \"propertyPhoto\",gha.WATER_VALUE_NOW AS \"waterValueNow\", "
+ " gha.POWER_VALUE_NOW AS \"powerValueNow\",gha.GAS_VALUE_NOW AS \"gasValueNow\", "
+ " gha.WATER_SETTLE_PHOTO AS \"waterSettlePhoto\",gha.POWER_SETTLE_PHOTO AS \"powerSettlePhoto\","
+ " gha.GAS_SETTLE_PHOTO AS \"gasSettlePhoto\",gha.CHECK_DEVICE_LIST AS \"checkDeviceList\", "
+ " gha.DEPOSIT_BACK AS \"depositBack\",gha.IS_DEDUCTION AS \"isDeduction\", "
+ " gha.DEDUCTION_REASON AS \"deductionReason\" " + " FROM GREEN_HOUSE_APPLY gha"
+ " LEFT JOIN GREEN_HOUSE_SELECTED ghs ON ghs.APPLY_ID = gha.ID"
+ " WHERE gha.DEL_FLAG = 0 AND gha.ID = ? ";
System.err.println(sql);
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql,
new Object[] { rentHouseApply.getId() });
for (Map<String, Object> map : list) {
map.put("photo", handlePhoto(map.get("photo")));
map.put("contractPhoto", handlePhoto(map.get("contractPhoto")));
map.put("roomInspection", handlePhoto(map.get("roomInspection")));
map.put("checkOutPhoto", handlePhoto(map.get("checkOutPhoto")));
map.put("checkInPhoto", handlePhoto(map.get("checkInPhoto")));
map.put("propertyPhoto", handlePhoto(map.get("propertyPhoto")));
map.put("waterSettlePhoto", handlePhoto(map.get("waterSettlePhoto")));
map.put("powerSettlePhoto", handlePhoto(map.get("powerSettlePhoto")));
map.put("gasSettlePhoto", handlePhoto(map.get("gasSettlePhoto")));
String applyUserId = String.valueOf(map.get("userId"));
String getUserInfoSql = "SELECT REAL_NAME FROM GREEN_USER_INFO WHERE ID = '" + applyUserId
+ "' AND IS_DELETED = 'N' AND USERTYPE = '0'";
List<Map<String, Object>> userList = hibernateDao.queryForListWithSql(getUserInfoSql);
if (CollectionUtils.isNotEmpty(userList)) {
map.put("applyUserName", userList.get(0).get("REAL_NAME"));
}
// 查询附属设施
String ancillaryFacilitieSql = "SELECT gaf.ID AS \"id\","
+ "gaf.ASSETSID AS \"assetsid\","
+ "gaf.NAME AS \"name\",gaf.BRAND AS \"brand\","
+ "gaf.MODEL AS \"model\",gaf.NUM AS \"num\" "
+ " FROM GREEN_HOUSE_SELECTED ghs"
+ " INNER JOIN GREEN_HOUSE gh ON ghs.HOUSE_ID = gh.UUID"
+ " INNER JOIN GREEN_ANCILLARY_FACILIITIES gaf ON gh.ASSETS_ID = gaf.ASSETSID"
+ " WHERE ghs.APPLY_ID = ?";
List<Map<String, String>> ancillaryFacilitieList = hibernateDao.queryForListWithSql(ancillaryFacilitieSql,
new Object[] { rentHouseApply.getId() });
map.put("ancillaryFacilitieList", ancillaryFacilitieList);
}
// 获取审核详情
if (list.size() > 0) {
String sqls = "SELECT EXAMINE_STATE as \"examineState\", to_char(EXAMINE_TIME,'YYYY-MM-DD HH24:MI:SS') as \"examineTime\","
+ " EXAMINE_OPINION as \"examineOpinion\",EXAMINE_BATCH as \"examineBatch\",BATCH_DESCRIPTION as \"batchDescription\" "
+ " FROM GREEN_HOUSE_APPLY_EXAMINE WHERE DEL_FLAG = 0 AND apply_id = ? order by EXAMINE_BATCH asc ";
List<Map<String, String>> lists = hibernateDao.queryForListWithSql(sqls,
new Object[] { rentHouseApply.getId() });
if (lists.size() > 0) {
list.get(0).put("detail", lists.toArray());
}
}
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* @MethodName: handlePhoto
* @Description: 处理照片
* @author cwchen
* @param value
* @return String
* @date 2024-05-22 03:28:10
*/
public String handlePhoto(Object value) {
if (value != null) {
String data = String.valueOf(value);
List<String> dataResult = Arrays.asList(data.split(","));
String dataUrl = "";
for (String str : dataResult) {
dataUrl += baseService.getImageBase64(str) + ",";
}
dataUrl = dataUrl.substring(0, dataUrl.lastIndexOf(","));
return dataUrl;
} else {
return "";
}
}
/**
* 新增租房申请
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/apply", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult apply(@RequestBody GreenRentHouseApply rentHouseApply) {
try {
String userId = rentHouseApply.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 查询当前用户是否已存在申请记录 - 内部申请
if (Objects.equals("1", rentHouseApply.getUserType())) {
String existsSql = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE EXAMINE_BATCH = '1' AND EXAMINE_STATE = '0' AND DEL_FLAG = '0' AND USER_ID = ? AND USER_TYPE = '1'";
int count = hibernateDao.queryForIntWithSql(existsSql, new Object[] { userId });
if (count > 0) {
return new RestResult(Constant.FAILED, "您有申请待审核,请勿重复提交");
}
String existsSql2 = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE ((EXAMINE_BATCH IN ('2','3') AND EXAMINE_STATE = '0') OR (EXAMINE_BATCH = '3' AND EXAMINE_STATE = '1')) AND DEL_FLAG = '0' AND USER_ID = ? AND USER_TYPE = '1'";
int count2 = hibernateDao.queryForIntWithSql(existsSql2, new Object[] { userId });
if (count2 > 0) {
return new RestResult(Constant.FAILED, "您有申请审核中,请勿重复提交");
}
String existsSql3 = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE EXAMINE_BATCH = '3' AND EXAMINE_STATE = '7' AND DEL_FLAG = '0' AND USER_ID = ? AND USER_TYPE = '1'";
int count3 = hibernateDao.queryForIntWithSql(existsSql3, new Object[] { userId });
if (count3 > 0) {
return new RestResult(Constant.FAILED, "您申请的房源已入住,无法申请");
}
String existsSql4 = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE EXAMINE_BATCH = '3' AND EXAMINE_STATE = '4' AND DEL_FLAG = '0' AND USER_ID = ? AND USER_TYPE = '1'";
int count4 = hibernateDao.queryForIntWithSql(existsSql4, new Object[] { userId });
if (count4 > 0) {
return new RestResult(Constant.FAILED, "您申请的房源待退租,无法申请");
}
} else if (Objects.equals("2", rentHouseApply.getUserType())) { // 查询当前申请人是否已存在申请记录
// -
// 外部申请
String userName = rentHouseApply.getUserName();
String phone = rentHouseApply.getPhone();
String existsSql = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE ((EXAMINE_BATCH IN ('2','3') AND EXAMINE_STATE = '0') OR (EXAMINE_BATCH = '3' AND EXAMINE_STATE = '1')) AND DEL_FLAG = '0' AND USER_NAME = ? AND PHONE = ?";
int count = hibernateDao.queryForIntWithSql(existsSql, new Object[] { userName, phone });
if (count > 0) {
return new RestResult(Constant.FAILED, userName + "/" + phone + "申请的房源审核中,请勿重复提交");
}
String existsSql2 = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE EXAMINE_BATCH = '3' AND EXAMINE_STATE = '7' AND DEL_FLAG = '0' AND USER_NAME = ? AND PHONE = ? ";
int count2 = hibernateDao.queryForIntWithSql(existsSql2, new Object[] { userName, phone });
if (count2 > 0) {
return new RestResult(Constant.FAILED, userName + "/" + phone + "申请的房源已入住,无法申请");
}
String existsSql3 = "SELECT COUNT(*) FROM GREEN_HOUSE_APPLY WHERE EXAMINE_BATCH = '3' AND EXAMINE_STATE = '4' AND DEL_FLAG = '0' AND USER_NAME = ? AND PHONE = ? ";
int count3 = hibernateDao.queryForIntWithSql(existsSql3, new Object[] { userName, phone });
if (count3 > 0) {
return new RestResult(Constant.FAILED, userName + "/" + phone + "申请的房源待退租,无法申请");
}
}
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 查询第一审核批次
String batchSql = "SELECT ID,DATA_TYPE,DATA_CODE,DATA_VALUE FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'houseExamineSwitch' AND IS_DELETED = 'N' AND DATA_VALUE = 1 ORDER BY DATA_CODE ASC ";
List<Map<String, String>> list = hibernateDao.queryForListWithSql(batchSql);
String examineBatch = "0";
if (list.size() > 0) {
examineBatch = list.get(0).get("DATA_CODE");
}
String isUpload = null, contractState = null;
if (StringUtils.isNotBlank(rentHouseApply.getHouseId())) {
// 外部人员申请默认已分配房源、待上传合同、房管领导审批
isUpload = "2";
contractState = "0";
examineBatch = "2";
}
String sql = "INSERT INTO GREEN_HOUSE_APPLY (ID,USER_ID,USER_NAME,GENDER,MARRIAGE_STATE,PHONE, "
+ "ORG_ID,ORG_NAME,POSITION,USER_TYPE,HOUSE_TYPE,APPLY_CAUSE,APPLY_TIME,DEL_FLAG,EXAMINE_STATE,EXAMINE_BATCH,ROOM_INSPECTION,IS_UPLOAD,CONTRACT_STATE) "
+ "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,0,0,?,?,?,?) ";
hibernateDao.executeSqlUpdate(sql,
new Object[] { uuid, rentHouseApply.getUserId(), rentHouseApply.getUserName(),
rentHouseApply.getGender(), rentHouseApply.getMarriageState(), rentHouseApply.getPhone(),
rentHouseApply.getOrgId(), rentHouseApply.getOrgName(), rentHouseApply.getPosition(),
rentHouseApply.getUserType(), rentHouseApply.getHouseType(), rentHouseApply.getApplyCause(),
examineBatch, rentHouseApply.getRoomInspection(), isUpload, contractState });
// 外部人员申请房源
if (Objects.equals("2", rentHouseApply.getUserType())) {
// 查询房屋详情数据
String HOUSE_NAME = null, HOUSE_TYPE = null, HOUSE_ADDR = null, ACREAGE = null, MODEL = null,
BUILDING_YEAR = null, DEVICE = null, RESPONSIBLE = null, RESPONSIBLE_PHONE = null, PRICE = null,
RENT_TYPE = null, RENT = null;
String houseDetailSql = "SELECT UUID,HOUSE_NAME,ASSETS_ID,HOUSE_TYPE,"
+ "HOUSE_ADDR,ACREAGE,DEED,MODEL,MAP,BUILDING_YEAR,BUILDING_YEAR,STATUS,RESPONSIBLE,"
+ "RESPONSIBLE_PHONE,PRICE,RENT_TYPE,WATER,WATER_NUM,ELEC,ELEC_NUM,GAS,GAS_NUM,PROPERTY,RENT,"
+ "AMOUNT,AIR"
+ " FROM GREEN_HOUSE WHERE UUID = '" + rentHouseApply.getHouseId()
+ "' AND IS_DELETED = 'N'";
List<Map<String, String>> houseList = hibernateDao.queryForListWithSql(houseDetailSql);
if (CollectionUtils.isNotEmpty(houseList)) {
Map<String, String> houseDetail = houseList.get(0);
HOUSE_NAME = houseDetail.get("HOUSE_NAME");
HOUSE_TYPE = houseDetail.get("HOUSE_TYPE");
HOUSE_ADDR = houseDetail.get("HOUSE_ADDR");
ACREAGE = houseDetail.get("ACREAGE");
MODEL = houseDetail.get("MODEL");
BUILDING_YEAR = houseDetail.get("BUILDING_YEAR");
DEVICE = houseDetail.get("DEVICE");
RESPONSIBLE = houseDetail.get("RESPONSIBLE");
RESPONSIBLE_PHONE = houseDetail.get("RESPONSIBLE_PHONE");
PRICE = houseDetail.get("PRICE");
RENT_TYPE = houseDetail.get("RENT_TYPE");
RENT = houseDetail.get("RENT");
}
String checkHouseId = UUID.randomUUID().toString().replaceAll("-", "");
// 添加选房数据
String addHouseSql = "INSERT INTO GREEN_HOUSE_SELECTED(UUID,HOUSE_ID,HOUSE_NAME,HOUSE_TYPE,HOUSE_ADDR,ACREAGE,MODEL, "
+ "BUILDING_YEAR,DEVICE,RESPONSIBLE,RESPONSIBLE_PHONE,CREATOR,GMT_CREATED,IS_DELETED,PRICE,RENT_TYPE,APPLY_ID,RENT) "
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,'N',?,?,?,?) ";
hibernateDao.executeSqlUpdate(addHouseSql,
new Object[] { checkHouseId, rentHouseApply.getHouseId(), HOUSE_NAME, HOUSE_TYPE, HOUSE_ADDR,
ACREAGE, MODEL, BUILDING_YEAR, DEVICE, RESPONSIBLE, RESPONSIBLE_PHONE, userId, PRICE,
RENT_TYPE, uuid, RENT });
// 更新房屋状态为在租
String updateSql = "UPDATE GREEN_HOUSE SET STATUS = '2' WHERE UUID = '" + rentHouseApply.getHouseId()
+ "' ";
hibernateDao.executeSqlUpdate(updateSql);
}
return new RestResult(Constant.SUCCESS, "操作成功", uuid);
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* 房屋申请审批
*
* @param map
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/examine", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult examine(Map<String, String> map) {
try {
String userId = map.get("userId");
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String applyId = map.get("applyId");
String userName = map.get("userName");
String examineState = map.get("examineState");
String examineOpinion = map.get("examineOpinion");
String examineBatch = map.get("examineBatch");
String houseId = map.get("houseId");
String isUpload = map.get("isUpload");
if (StringUtils.isBlank(examineState)) {
return new RestResult(Constant.FAILED, "审核状态不能为空");
}
if (StringUtils.isBlank(examineBatch)) {
return new RestResult(Constant.FAILED, "审核批次不能为空");
}
// 查询下一审核批次
String batchSql = "SELECT ID,DATA_TYPE,DATA_CODE,DATA_VALUE FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'houseExamineSwitch' "
+ "AND IS_DELETED = 'N' AND DATA_VALUE = 1 AND DATA_CODE > ? ORDER BY DATA_CODE ASC ";
List<Map<String, String>> list = hibernateDao.queryForListWithSql(batchSql, new Object[] { examineBatch });
// 不为空则更改审核批次,否则更改申请单的审核状态
if (list.size() > 0) {
if ("1".equals(examineState)) {
String lastExamineBatch = list.get(0).get("DATA_CODE");
String updateBatchSql = null;
if (org.apache.commons.lang3.StringUtils.isEmpty(isUpload)) {
updateBatchSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_BATCH = ? WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateBatchSql, new Object[] { lastExamineBatch, applyId });
} else {
// 上传合同-结束流程/更新租房申请状态为已租赁
updateBatchSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE = '7' WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateBatchSql, new Object[] { applyId });
String sql = "INSERT INTO GREEN_HOUSE_APPLY_EXAMINE(ID,APPLY_ID,USER_ID,USER_NAME,EXAMINE_STATE,EXAMINE_OPINION,"
+ "EXAMINE_TIME,DEL_FLAG,EXAMINE_BATCH,BATCH_DESCRIPTION) "
+ "VALUES(?,?,?,?,?,?,SYSDATE,0,?,?) ";
hibernateDao.executeSqlUpdate(sql, new Object[] { uuid, applyId, userId, userName, "1",
examineOpinion, "4", "房屋经办人上传合同" });
// 更新房屋状态为在用
String updateHosueStateSql = "UPDATE GREEN_HOUSE SET STATUS = ? WHERE UUID = ? ";
hibernateDao.executeSqlUpdate(updateHosueStateSql, new Object[] { 3, houseId });
return new RestResult(Constant.SUCCESS, "操作成功");
}
} else if ("2".equals(examineState)) {
String updateStateSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE = ? WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateStateSql, new Object[] { examineState, applyId });
}
} else {
String updateStateSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE =? WHERE ID = ? ";
if ("3".equals(examineBatch)) {
if ("1".equals(examineState)) {
hibernateDao.executeSqlUpdate(updateStateSql, new Object[] { examineState, applyId });
} else if ("2".equals(examineState)) {
// 房管领导 审核不通过
String updateHosueStateSql = "DELETE GREEN_HOUSE_SELECTED WHERE APPLY_ID = ? ";
hibernateDao.executeSqlUpdate(updateHosueStateSql, new Object[] { applyId });
// 更新房屋状态为闲置
String updateSql = "UPDATE GREEN_HOUSE SET STATUS = '1' WHERE UUID = '" + houseId + "' ";
hibernateDao.executeSqlUpdate(updateSql);
}
}
hibernateDao.executeSqlUpdate(updateStateSql, new Object[] { examineState, applyId });
}
// 查询当前批次描述
String description = "";
String sqls = "SELECT DATA_CODE as \"id\",DATA_VALUE as \"name\",DESCRIPTION as \"description\" FROM GREEN_DICTIONARY_INFO "
+ "WHERE DATA_TYPE = 'houseExamineSwitch' AND IS_DELETED = 'N' and DATA_CODE = ? ";
List<Map<String, String>> lists = hibernateDao.queryForListWithSql(sqls, new Object[] { examineBatch });
if (lists.size() > 0) {
description = lists.get(0).get("description");
}
// 插入数据
String sql = "INSERT INTO GREEN_HOUSE_APPLY_EXAMINE(ID,APPLY_ID,USER_ID,USER_NAME,EXAMINE_STATE,EXAMINE_OPINION,"
+ "EXAMINE_TIME,DEL_FLAG,EXAMINE_BATCH,BATCH_DESCRIPTION) " + "VALUES(?,?,?,?,?,?,SYSDATE,0,?,?) ";
hibernateDao.executeSqlUpdate(sql, new Object[] { uuid, applyId, userId, userName, examineState,
examineOpinion, examineBatch, description });
return new RestResult(Constant.SUCCESS, "操作成功");
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "操作失败");
}
}
@SuppressWarnings("deprecation")
@RequestMapping(value = "/addSelectedHouse", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult addSelectedHouse(Map<String, Object> map) {
try {
String userId = map.get("userId") == null ? "" : String.valueOf(map.get("userId"));
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String applyId = map.get("applyId") == null ? "" : String.valueOf(map.get("applyId"));
String HOUSE_ID = map.get("HOUSE_ID") == null ? "" : String.valueOf(map.get("HOUSE_ID"));
String HOUSE_NAME = map.get("HOUSE_NAME") == null ? "" : String.valueOf(map.get("HOUSE_NAME"));
String HOUSE_TYPE = map.get("HOUSE_TYPE") == null ? "" : String.valueOf(map.get("HOUSE_TYPE"));
String HOUSE_ADDR = map.get("HOUSE_ADDR") == null ? "" : String.valueOf(map.get("HOUSE_ADDR"));
String ACREAGE = map.get("ACREAGE") == null ? "" : String.valueOf(map.get("ACREAGE"));
String MODEL = map.get("MODEL") == null ? "" : String.valueOf(map.get("MODEL"));
String BUILDING_YEAR = map.get("BUILDING_YEAR") == null ? "" : String.valueOf(map.get("BUILDING_YEAR"));
String DEVICE = map.get("DEVICE") == null ? "" : String.valueOf(map.get("DEVICE"));
String RESPONSIBLE = map.get("RESPONSIBLE") == null ? "" : String.valueOf(map.get("RESPONSIBLE"));
String RESPONSIBLE_PHONE = map.get("RESPONSIBLE_PHONE") == null ? ""
: String.valueOf(map.get("RESPONSIBLE_PHONE"));
String PRICE = map.get("PRICE") == null ? "" : String.valueOf(map.get("PRICE"));
String RENT_TYPE = map.get("RENT_TYPE") == null ? "" : String.valueOf(map.get("RENT_TYPE"));
String contractStartTime = map.get("contractStartTime") == null ? ""
: String.valueOf(map.get("contractStartTime"));
String contractEndTime = map.get("contractEndTime") == null ? ""
: String.valueOf(map.get("contractEndTime"));
String photo = map.get("photo") == null ? "" : String.valueOf(map.get("photo"));
String contractPhoto = map.get("contractPhoto") == null ? "" : String.valueOf(map.get("contractPhoto"));
String sql = "insert into GREEN_HOUSE_SELECTED(UUID,HOUSE_ID,HOUSE_NAME,HOUSE_TYPE,HOUSE_ADDR,ACREAGE,MODEL, "
+ "BUILDING_YEAR,DEVICE,RESPONSIBLE,RESPONSIBLE_PHONE,CREATOR,GMT_CREATED,IS_DELETED,PRICE,RENT_TYPE,APPLY_ID) "
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,'N',?,?,?) ";
hibernateDao.executeSqlUpdate(sql,
new Object[] { uuid, HOUSE_ID, HOUSE_NAME, HOUSE_TYPE, HOUSE_ADDR, ACREAGE, MODEL, BUILDING_YEAR,
DEVICE, RESPONSIBLE, RESPONSIBLE_PHONE, userId, PRICE, RENT_TYPE, applyId });
String sqlContract = "INSERT INTO GREEN_HOUSE_CONTRACT ( ID, HOUSE_ID,HOUSE_TYPE, CONTRACT_START_TIME, CONTRACT_END_TIME, RESPONSIBLE,RESPONSIBLE_PHONE, STATE, APPLY_ID,CREATE_TIME ) VALUES ( ?,?, ?, ?, ?, ?, ?, ? ,?,?)";
String uuidContract = UUID.randomUUID().toString().replaceAll("-", "");
hibernateDao.executeSqlUpdate(sqlContract,
new Object[] { uuidContract, HOUSE_ID, HOUSE_TYPE, contractStartTime, contractEndTime, RESPONSIBLE,
RESPONSIBLE_PHONE, "0", applyId, DateTimeHelper.getNowDate1() });
// 修改租房申请表状态:已选房
String updateStateSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE = ?,CONTRACT_START_TIME=?,CONTRACT_END_TIME=?,PHOTO=?,CONTRACT_STATE=0 ,CONTRACT_PHOTO =? WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateStateSql,
new Object[] { 0, contractStartTime, contractEndTime, photo, contractPhoto, applyId });
/*
* // 修改房屋表状态:在租 String updateHosueStateSql =
* "UPDATE GREEN_HOUSE SET STATUS = ? WHERE UUID = ? ";
* hibernateDao.executeSqlUpdate(updateHosueStateSql, new Object[]
* {2, HOUSE_ID });
*/
return new RestResult(Constant.SUCCESS, "您已成功选房");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* @MethodName: addSelHouse
* @Description: 房管经办人选房
* @author cwchen
* @param map
* @return RestResult
* @date 2024-05-21 03:45:13
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/checkedHouse", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult checkedHouse(Map<String, Object> map) {
try {
String userId = map.get("userId") == null ? "" : String.valueOf(map.get("userId"));
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String applyId = map.get("applyId") == null ? "" : String.valueOf(map.get("applyId"));
String houseId = map.get("houseId") == null ? "" : String.valueOf(map.get("houseId"));
String operType = map.get("operType") == null ? "" : String.valueOf(map.get("operType"));
String contractStartTime = map.get("contractStartTime") == null ? ""
: String.valueOf(map.get("contractStartTime"));
String contractEndTime = map.get("contractEndTime") == null ? ""
: String.valueOf(map.get("contractEndTime"));
String photo = map.get("photo") == null ? "" : String.valueOf(map.get("photo"));
String contractPhoto = map.get("contractPhoto") == null ? "" : String.valueOf(map.get("contractPhoto"));
// 入住照片、水表数值、电表数值、燃气表数值、附属设备清单
String checkInPhoto = map.get("checkInPhoto") == null ? "" : String.valueOf(map.get("checkInPhoto"));
String waterValue = map.get("waterValue") == null ? "" : String.valueOf(map.get("waterValue"));
String powerValue = map.get("powerValue") == null ? "" : String.valueOf(map.get("powerValue"));
String gasValue = map.get("gasValue") == null ? "" : String.valueOf(map.get("gasValue"));
String deviceList = map.get("deviceList") == null ? "" : String.valueOf(map.get("deviceList"));
if (!isValueValidate(waterValue)) {
return new RestResult(Constant.FAILED, "水表数值应为大于等于0 的数,最多保留三位小数");
}
if (!isValueValidate(powerValue)) {
return new RestResult(Constant.FAILED, "电表数值应为大于等于0 的数,最多保留三位小数");
}
if (!isValueValidate(gasValue)) {
return new RestResult(Constant.FAILED, "燃气表数值应为大于等于0 的数,最多保留三位小数");
}
// 查询房屋详情数据
String HOUSE_NAME = null, HOUSE_TYPE = null, HOUSE_ADDR = null, ACREAGE = null, MODEL = null,
BUILDING_YEAR = null, DEVICE = null, RESPONSIBLE = null, RESPONSIBLE_PHONE = null, PRICE = null,
RENT_TYPE = null, RENT = null;
String houseDetailSql = "SELECT UUID,HOUSE_NAME,ASSETS_ID,HOUSE_TYPE,"
+ "HOUSE_ADDR,ACREAGE,DEED,MODEL,MAP,BUILDING_YEAR,BUILDING_YEAR,STATUS,RESPONSIBLE,"
+ "RESPONSIBLE_PHONE,PRICE,RENT_TYPE,WATER,WATER_NUM,ELEC,ELEC_NUM,GAS,GAS_NUM,PROPERTY,RENT,"
+ "AMOUNT,AIR"
+" FROM GREEN_HOUSE WHERE UUID = '" + houseId + "' AND IS_DELETED = 'N'";
List<Map<String, String>> houseList = hibernateDao.queryForListWithSql(houseDetailSql);
if (CollectionUtils.isNotEmpty(houseList)) {
Map<String, String> houseDetail = houseList.get(0);
HOUSE_NAME = houseDetail.get("HOUSE_NAME");
HOUSE_TYPE = houseDetail.get("HOUSE_TYPE");
HOUSE_ADDR = houseDetail.get("HOUSE_ADDR");
ACREAGE = houseDetail.get("ACREAGE");
MODEL = houseDetail.get("MODEL");
BUILDING_YEAR = houseDetail.get("BUILDING_YEAR");
DEVICE = houseDetail.get("DEVICE");
RESPONSIBLE = houseDetail.get("RESPONSIBLE");
RESPONSIBLE_PHONE = houseDetail.get("RESPONSIBLE_PHONE");
PRICE = houseDetail.get("PRICE");
RENT_TYPE = houseDetail.get("RENT_TYPE");
RENT = houseDetail.get("RENT");
}
if (Objects.equals("1", operType)) { // 房管经办人-选房
// 添加选房数据
String sql = "INSERT INTO GREEN_HOUSE_SELECTED(UUID,HOUSE_ID,HOUSE_NAME,HOUSE_TYPE,HOUSE_ADDR,ACREAGE,MODEL, "
+ "BUILDING_YEAR,DEVICE,RESPONSIBLE,RESPONSIBLE_PHONE,CREATOR,GMT_CREATED,IS_DELETED,PRICE,RENT_TYPE,APPLY_ID,RENT) "
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,'N',?,?,?,?) ";
hibernateDao.executeSqlUpdate(sql,
new Object[] { uuid, houseId, HOUSE_NAME, HOUSE_TYPE, HOUSE_ADDR, ACREAGE, MODEL,
BUILDING_YEAR, DEVICE, RESPONSIBLE, RESPONSIBLE_PHONE, userId, PRICE, RENT_TYPE,
applyId, RENT });
// 更新租房申请
String updateUploadSql = "UPDATE GREEN_HOUSE_APPLY SET IS_UPLOAD = '2',CONTRACT_STATE = '0' WHERE ID = '"
+ applyId + "'";
hibernateDao.executeSqlUpdate(updateUploadSql);
// 更新房屋状态为在租
String updateSql = "UPDATE GREEN_HOUSE SET STATUS = '2' WHERE UUID = '" + houseId + "' ";
hibernateDao.executeSqlUpdate(updateSql);
} else if (Objects.equals("2", operType)) { // 房管经办人-上传合同
Integer month = handleMonth(contractStartTime,contractEndTime);
if(month < 1){
return new RestResult(Constant.FAILED, "合同日期至少为一个月");
}
String sqlContract = "INSERT INTO GREEN_HOUSE_CONTRACT ( ID, HOUSE_ID,HOUSE_TYPE, CONTRACT_START_TIME, CONTRACT_END_TIME, RESPONSIBLE,RESPONSIBLE_PHONE, STATE, APPLY_ID,CREATE_TIME,PHOTO,CONTRACT_PHOTO,CHECK_IN_PHOTO,WATER_VALUE,POWER_VALUE,GAS_VALUE,DEVICE_LIST ) VALUES ( ?,?, ?, ?, ?, ?, ?, ? ,?,?,?,?,?,?,?,?,?)";
String uuidContract = UUID.randomUUID().toString().replaceAll("-", "");
hibernateDao.executeSqlUpdate(sqlContract,
new Object[] { uuidContract, houseId, HOUSE_TYPE, contractStartTime, contractEndTime,
RESPONSIBLE, RESPONSIBLE_PHONE, "0", applyId, DateTimeHelper.getNowDate1(), photo,
contractPhoto, checkInPhoto, waterValue, powerValue, gasValue, deviceList });
// 更新租房申请表状态
String updateStateSql = "UPDATE GREEN_HOUSE_APPLY SET IS_UPLOAD = ?,CONTRACT_START_TIME=?,CONTRACT_END_TIME=?,PHOTO=?,CONTRACT_STATE=1 ,CONTRACT_PHOTO =?,CHECK_IN_PHOTO = ?,WATER_VALUE = ?,POWER_VALUE = ?,GAS_VALUE = ?,DEVICE_LIST = ? WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateStateSql, new Object[] { "3", contractStartTime, contractEndTime,
photo, contractPhoto, checkInPhoto, waterValue, powerValue, gasValue, deviceList, applyId });
}
return new RestResult(Constant.SUCCESS, "操作成功");
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "返回异常");
}
}
public static Integer handleMonth(String startTime, String endTime) {
Integer days = DateTimeHelper.getDays(startTime, endTime);
Integer basicMonthDays = 30;
int result = divideAndCeil(days, basicMonthDays);
return result;
}
public static Integer divideAndCeil(Integer numerator, Integer denominator) {
double result = (double) numerator / denominator;
// 如果小数部分大于或等于0.5,则向上取整
if (result - Math.floor(result) >= 0.5) {
return (int) Math.ceil(result);
} else {
return (int) Math.floor(result);
}
}
public static void main(String[] args) {
Integer month = handleMonth("2024-11-01","2024-11-15");
System.err.println(month);
// Boolean checkContractPeriod = checkContractPeriod("2024-11-01","2024-11-30");
}
/**
* 查询用户已选房屋
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/getSelectedHouse", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult getSelectedHouse(Map<String, String> map) {
try {
String userId = map.get("userId");
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String APPLY_ID = map.get("APPLY_ID");
String sql = "SELECT GH.UUID,GH.HOUSE_NAME,GH.ASSETS_ID,GH.HOUSE_TYPE,"
+ "GH.HOUSE_ADDR,GH.ACREAGE,GH.DEED,GH.MODEL,GH.MAP,GH.BUILDING_YEAR,GH.BUILDING_YEAR,GH.STATUS,GH.RESPONSIBLE,"
+ "GH.RESPONSIBLE_PHONE,GH.PRICE,GH.RENT_TYPE,GH.WATER,GH.WATER_NUM,GH.ELEC,GH.ELEC_NUM,GH.GAS,GH.GAS_NUM,GH.PROPERTY,GH.RENT,"
+ "GH.AMOUNT,GH.AIR,H.UUID,H.HOUSE_ID,H.HOUSE_ID,H.HOUSE_ID,H.HOUSE_ADDR,H.ACREAGE,"
+ "H.MODEL,H.MODEL,H.MODEL,H.RESPONSIBLE,H.RESPONSIBLE_PHONE,H.PRICE,H.RENT_TYPE,H.APPLY_ID,H.RENT,"
+ "P.PIC from GREEN_HOUSE_SELECTED H LEFT JOIN ( "
+ "SELECT HOUSE_ID, LISTAGG (to_char(PICTURE), ',') WITHIN GROUP (ORDER BY SORT) AS PIC "
+ "FROM GREEN_HOUSE_PICTURE GROUP BY HOUSE_ID ) P ON H.HOUSE_ID = P.HOUSE_ID "
+ "LEFT JOIN GREEN_HOUSE GH ON GH.UUID = H.HOUSE_ID AND GH.IS_DELETED = 'N' "
+ "WHERE H.IS_DELETED='N' and APPLY_ID = ? " + "order by H.GMT_CREATED DESC ";
System.err.println(sql);
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql, new Object[] { APPLY_ID });
for (Map<String, Object> map1 : list) {
List<Object> pictures = new ArrayList<Object>();
String PICS = String.valueOf(map1.get("PIC"));
if (StringUtils.isNotBlank(PICS) && !"null".equals(PICS)) {
String[] split = PICS.split(",");
for (int i = 0; i < split.length; i++) {
String picture = split[i];
picture = baseService.getImageBase64(picture);
pictures.add(picture);
}
}
map1.put("PICTURE", pictures.toArray());
}
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* 新增退租申请
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/houseCheckOut", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult houseCheckOut(Map<String, String> map) {
try {
String userId = map.get("userId");
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String applyId = map.get("applyId");
String status = map.get("status");
String houseId = map.get("houseId");
if (status == null && "".equals(status)) {
return new RestResult(Constant.FAILED, "返回异常");
}
if ("5".equals(status)) {// 退租验收通过
// 退房时间、入住后照片、物业费结清凭证、当前水表数值、当前电表数值、当前燃气数值、水费结清凭证、电费结清凭证、燃气费结清凭证、附属设备清单是否完好、押金是否退还
// 1 是 2 否、是否抵扣 1 是 2 否、抵扣说明
String checkOutDate = map.get("checkOutDate");
String checkOutPhoto = map.get("checkOutPhoto");
String propertyPhoto = map.get("propertyPhoto");
String waterValueNow = map.get("waterValueNow");
String powerValueNow = map.get("powerValueNow");
String gasValueNow = map.get("gasValueNow");
String waterSettlePhoto = map.get("waterSettlePhoto");
String powerSettlePhoto = map.get("powerSettlePhoto");
String gasSettlePhoto = map.get("gasSettlePhoto");
String checkDeviceList = map.get("checkDeviceList");
String depositBack = map.get("depositBack");
String isDeduction = map.get("isDeduction");
String deductionReason = map.get("deductionReason");
// 验证 水表、电表、燃气表数值是否合法
if (!isValueValidate(waterValueNow)) {
return new RestResult(Constant.FAILED, "水表当前数值应为大于等于0 的数,最多保留三位小数");
}
if (!isValueValidate(powerValueNow)) {
return new RestResult(Constant.FAILED, "电表当前数值应为大于等于0 的数,最多保留三位小数");
}
if (!isValueValidate(gasValueNow)) {
return new RestResult(Constant.FAILED, "燃气表当前数值应为大于等于0 的数,最多保留三位小数");
}
// 获取租房申请详情
String houseApplyDetailSql = "SELECT WATER_VALUE,POWER_VALUE,GAS_VALUE,CONTRACT_START_TIME FROM GREEN_HOUSE_APPLY WHERE ID = '" + applyId + "'";
List<Map<String, String>> houseApplyList = hibernateDao.queryForListWithSql(houseApplyDetailSql);
if (CollectionUtils.isNotEmpty(houseApplyList)) {
Map<String, String> mapData = houseApplyList.get(0);
if (!isValueValidate2(mapData.get("WATER_VALUE"), waterValueNow)) {
return new RestResult(Constant.FAILED, "水表当前数值不小于水表初始数值");
}
if (!isValueValidate2(mapData.get("POWER_VALUE"), powerValueNow)) {
return new RestResult(Constant.FAILED, "电表当前数值不小于电表初始数值");
}
if (!isValueValidate2(mapData.get("GAS_VALUE"), gasValueNow)) {
return new RestResult(Constant.FAILED, "燃气表当前数值不小于燃气表初始数值");
}
if (!isValueValidate3(mapData.get("CONTRACT_START_TIME"), checkOutDate)) {
return new RestResult(Constant.FAILED, "退房日期应在合同开始日期之后");
}
}
// 更新合同状态
String sql = "UPDATE GREEN_HOUSE_CONTRACT SET STATE = '2' WHERE APPLY_ID = ? ";
hibernateDao.executeSqlUpdate(sql, new Object[] { applyId });
// 修改房屋表状态:空置
System.err.println("房屋ID:" + houseId);
String updateHosueStateSql = "UPDATE GREEN_HOUSE SET STATUS = ? WHERE UUID = ? ";
hibernateDao.executeSqlUpdate(updateHosueStateSql, new Object[] { "1", houseId });
// 更新租房退租验收项目
String updateBatchSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE = ?,CHECK_OUT_DATE = ?,CHECK_OUT_PHOTO = ?,"
+ " PROPERTY_PHOTO = ?,WATER_VALUE_NOW = ?,POWER_VALUE_NOW = ?,"
+ " GAS_VALUE_NOW = ?,WATER_SETTLE_PHOTO = ?,POWER_SETTLE_PHOTO = ?,"
+ " GAS_SETTLE_PHOTO = ?,CHECK_DEVICE_LIST = ?,DEPOSIT_BACK = ?,IS_DEDUCTION = ?,DEDUCTION_REASON = ?"
+ " WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateBatchSql,
new Object[] { status, checkOutDate, checkOutPhoto, propertyPhoto, waterValueNow, powerValueNow,
gasValueNow, waterSettlePhoto, powerSettlePhoto, gasSettlePhoto, checkDeviceList,
depositBack, isDeduction, deductionReason, applyId });
} else { // 提交退租申请
String updateBatchSql = "UPDATE GREEN_HOUSE_APPLY SET EXAMINE_STATE = ? WHERE ID = ? ";
hibernateDao.executeSqlUpdate(updateBatchSql, new Object[] { status, applyId });
}
return new RestResult(Constant.SUCCESS, "操作成功", map);
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* 获取字典数据:房屋类型
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/getHouseType", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult getHouseType(Map<String, String> map) {
try {
String dataType = map.get("dataType");
List<Map<String, String>> dictionaryInfo = getDictionaryInfo(dataType);
return new RestResult(Constant.SUCCESS, "操作成功", dictionaryInfo);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* 获取字典数据:房屋类型
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/getHouseTypes", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult getHouseTypes(Map<String, String> map) {
try {
String userId = map.get("userId");
GreenUserInfo info = getUserInfo(userId);
String dataType = map.get("dataType");
String sql = "SELECT DATA_CODE as \"id\",DATA_VALUE as \"name\",DESCRIPTION as \"description\" FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = ?";
if (info.getLeader() != null && !"1".equals(info.getLeader())) {
sql += " AND DATA_CODE NOT IN (1,2)";
}
sql += " AND IS_DELETED = 'N' ";
List<Map<String, String>> list = hibernateDao.queryForListWithSql(sql, new Object[] { dataType });
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* 根据房屋类型获取闲置房屋
*
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/getFreeHouse", method = { RequestMethod.POST })
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult getFreeHouse(Map<String, String> map) {
try {
String userId = map.get("userId");
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
int pageNum = Integer.parseInt(String.valueOf(map.get("pageNum")));
int pageSize = Integer.parseInt(String.valueOf(map.get("pageSize")));
int limit = ((pageNum > 0 ? pageNum : 1) - 1) * pageSize;
pageSize = pageSize * pageNum;
String houseType = map.get("houseType");
String sql = "SELECT * FROM ( SELECT RN.*,ROWNUM rw FROM( "
+ "SELECT H.UUID,H.HOUSE_NAME,H.ASSETS_ID,H.HOUSE_TYPE,"
+ "H.HOUSE_ADDR,H.ACREAGE,H.DEED,H.MODEL,H.MAP,H.BUILDING_YEAR,H.DEVICE,H.STATUS,H.RESPONSIBLE,"
+ "H.RESPONSIBLE_PHONE,H.PRICE,H.RENT_TYPE,H.WATER,H.WATER_NUM,H.ELEC,H.ELEC_NUM,H.GAS,H.GAS_NUM,H.PROPERTY,H.RENT,"
+ "H.AMOUNT,H.AIR, P.PIC from GREEN_HOUSE H LEFT JOIN ( "
+ "SELECT HOUSE_ID, LISTAGG (to_char(PICTURE), ',') WITHIN GROUP (ORDER BY SORT) AS PIC "
+ "FROM GREEN_HOUSE_PICTURE GROUP BY HOUSE_ID ) P ON H.UUID = P.HOUSE_ID WHERE H.IS_DELETED='N' "
+ "AND HOUSE_TYPE = ? AND STATUS = 1 "
+ "order by H.GMT_CREATED DESC )rn ) WHERE rw > ? AND rw <= ? ";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql,
new Object[] { houseType, limit, pageSize });
for (Map<String, Object> map1 : list) {
List<Object> pictures = new ArrayList<Object>();
String PICS = String.valueOf(map1.get("PIC"));
if (StringUtils.isNotBlank(PICS) && !"null".equals(PICS)) {
String[] split = PICS.split(",");
for (int i = 0; i < split.length; i++) {
String picture = split[i];
picture = baseService.getImageBase64(picture);
pictures.add(picture);
}
}
map1.put("PICTURE", pictures.toArray());
}
return new RestResult(Constant.SUCCESS, "操作成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
@SuppressWarnings("deprecation")
@RequestMapping(value = "/test", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public RestResult test(HttpServletRequest request, HttpServletResponse response) {
try {
// 生产
String messageAppId = "0f4824416eca4c7e82753acaf222649e";
String producerId = "d1c6e3b0f94742dc91a13f9a780941d6";
String sm2key = "041C2174BC0227F8F7F9342522AED537C277B3AA6217246D892156B874702041D5180D121845E75DF9D31B05DEA490632C9DD6F2AFBF40540740AAE21D32CAF9A6";
String sm4key = "13276439115248968552415895716389";
String baseUrl = "https://id.sgcc.com.cn:10443/mobile-message";
// 测试
// String messageAppId = "0f4824416eca4c7e82753acaf222649e";
// String producerId = "d1c6e3b0f94742dc91a13f9a780941d6";
// String sm2key =
// "041C2174BC0227F8F7F9342522AED537C277B3AA6217246D892156B874702041D5180D121845E75DF9D31B05DEA490632C9DD6F2AFBF40540740AAE21D32CAF9A6";
// String sm4key = "13276439115248968552415895716389";
// String baseUrl =
// "https://igw.isgcc.net:18443/isgcc_message/server";
WxMsgConfig wxMsgConfig = new WxMsgConfig();
wxMsgConfig.setBaseUrl(baseUrl);
// TODO : 以下三个参数需要进行替换
wxMsgConfig.setProducerId(producerId);
wxMsgConfig.setSm4Key(sm4key);
wxMsgConfig.setSm2PublicKey(sm2key);
// 以下三个Bean 建议在项目中以单例形式存在
MsgRequestClient requestClient = new MsgRequestClient(wxMsgConfig);
// 消息中心查询client
MsgQueryClient msgQueryClient = new MsgQueryClient(requestClient);
// 消息中心发送client
MsgSendClient msgSendClient = new MsgSendClient(requestClient);
// 构建发送消息参数
SendMsgParams wechatMsg = new SendMsgParams();
// TODO : 发送目标用户
wechatMsg.setTouser("sgitg_sunfenglin");
// 发送目标组织
// wechatMsg.setToparty("目标组织");
// 跳转链接地址
wechatMsg.setUrl("zipapp://appid.1001093/index.html");
wechatMsg.setTitle("点击进入应用" + System.currentTimeMillis());
wechatMsg.setType("textcard");
wechatMsg.setContent("对接测试内容" + System.currentTimeMillis());
// wechatMsg.setPicurl("https://www.baidu.com/img/PCjing_5e539553b5304b9f43deb8a0fc918e45.png");
wechatMsg.setDescription("对接测试内容" + System.currentTimeMillis());
// 目标应用appId
wechatMsg.setMessageAppId(messageAppId);
WxSendMsgResult wxSendMsgResult = msgSendClient.sendMsg(wechatMsg);
System.out.println(wxSendMsgResult);
return new RestResult(Constant.SUCCESS, "操作成功");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* @MethodName: getUserTypeByRole
* @Description: 根据角色获取人员类型
* @author cwchen
* @param dto
* @return RestResult
* @date 2024-05-21 11:26:15
*/
@SuppressWarnings("deprecation")
@ResponseBody
@RequestMapping(value = "/getUserTypeByRole", method = { RequestMethod.POST })
public RestResult getUserTypeByRole(GreenHouseDto dto) {
try {
String userTypeValue = "本部人员";
String roleId = dto.getRoleId();
String sql = "SELECT ROLE_NAME FROM GREEN_ROLE WHERE ID = ? AND IS_DELETED = 'N' AND ROLE_TYPE = '1' ";
List<Map<String, String>> list = hibernateDao.queryForListWithSql(sql,
new Object[] { Integer.parseInt(roleId) });
StringBuffer roleSql = new StringBuffer();
roleSql.append("SELECT DATA_CODE AS \"id\",DATA_VALUE AS \"name\",DESCRIPTION AS \"description\" FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'userType' AND IS_DELETED = 'N'");
if (list != null && list.size() > 0) {
String roleName = list.get(0).get("ROLE_NAME");
if (Objects.equals("房管经办人", roleName)) {
// 房管经办人角色
roleSql.append(" ORDER BY DATA_CODE asc");
} else {
// 其他角色
roleSql.append(" AND DATA_VALUE = '"+userTypeValue+"' ORDER BY DATA_CODE asc");
}
}
System.err.println("根据角色获取人员类型:" + roleSql.toString());
List<Map<String, String>> userTypeList = hibernateDao.queryForListWithSql(roleSql.toString());
return new RestResult(Constant.SUCCESS, "操作成功", userTypeList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* @MethodName: getHouseTypeByRole
* @Description: 根据角色查看不同的房源类型
* @author cwchen
* @param map
* @return RestResult
* @date 2024-05-21 01:41:41
*/
@SuppressWarnings("deprecation")
@ResponseBody
@RequestMapping(value = "/getHouseTypeByRole", method = { RequestMethod.POST })
public RestResult getHouseTypeByRole(GreenHouseDto dto) {
try {
String roleId = dto.getRoleId();
String userType = dto.getUserType();
StringBuilder houseTypeSql = new StringBuilder();
if (Objects.equals("1", userType)) {
// 内部人员
houseTypeSql.append("SELECT DATA_CODE AS \"id\",DATA_VALUE AS \"name\",DESCRIPTION AS \"description\" "
+ " FROM GREEN_ROLE_REAL_HOUSE grrh"
+ " INNER JOIN GREEN_DICTIONARY_INFO gdi ON grrh.HOUSE_CODE = gdi.DATA_CODE AND DATA_TYPE = 'houseType' AND IS_DELETED = 'N'"
+ " WHERE grrh.ROLE_ID = " + roleId + " " + " ORDER BY gdi.DATA_CODE ASC ");
} else if (Objects.equals("2", userType)) {
// 外聘人员
houseTypeSql.append(
"SELECT DATA_CODE AS \"id\",DATA_VALUE AS \"name\",DESCRIPTION AS \"description\" FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'houseType' AND IS_DELETED = 'N' ORDER BY DATA_CODE ASC");
}
List<Map<String, String>> houseTypeList = hibernateDao.queryForListWithSql(houseTypeSql.toString());
return new RestResult(Constant.SUCCESS, "操作成功", houseTypeList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "返回异常");
}
}
/**
* @MethodName: isValidate
* @Description: 验证输入的水表数、电表数等是否合法
* @author cwchen
* @param value
* @return boolean
* @date 2024-05-22 02:36:10
*/
public boolean isValueValidate(String value) {
if (StringUtils.isNotBlank(value)) {
Pattern pattern = Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,3})?$");
Matcher matcher = pattern.matcher(value);
return matcher.matches();
} else {
return true;
}
}
/**
* @MethodName: isValueValidate2
* @Description: 比较当前水表数、电表数等是否大于初始值
* @author cwchen
* @param value
* @param value2
* @return boolean
* @date 2024-05-22 02:46:04
*/
public boolean isValueValidate2(String value, String value2) {
if (StringUtils.isNotBlank(value) && StringUtils.isNotBlank(value2)) {
double parseDouble = Double.parseDouble(value);
double parseDouble2 = Double.parseDouble(value2);
if (parseDouble > parseDouble2) {
return false;
}
return true;
} else {
return true;
}
}
/**
* @MethodName: isValueValidate3
* @Description: 验证退房时间 与合同开始时间比较
* @author cwchen
* @param value
* @param value2
* @return boolean
* @date 2024-05-22 03:00:46
*/
public boolean isValueValidate3(String value, String value2) {
if (StringUtils.isNotBlank(value) && StringUtils.isNotBlank(value2)) {
Long timestamp = DateTimeHelper.convertDateStringToTimestamp(value, "yyyy-MM-dd");
Long timestamp2 = DateTimeHelper.convertDateStringToTimestamp(value2, "yyyy-MM-dd");
if (timestamp > timestamp2) {
return false;
}
return true;
} else {
return true;
}
}
}