package com.jysoft.property.service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.jysoft.property.entity.GreenPropertyEntity; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.bizc.BaseServiceImpl; import com.sgcc.uap.persistence.IHibernateDao; @Service public class PropertyService { @Autowired private IHibernateDao iHibernateDao; @Autowired private BaseServiceImpl baseService; /** * 通过用户id获取服务记录 * * @param entity * 数据 * @return 响应数据 */ public RestResult getPropertyByUserId(GreenPropertyEntity entity) { StringBuilder sql = new StringBuilder(); ArrayList paramList = new ArrayList(); sql.append( "SELECT * FROM (SELECT ROWNUM num, A.* FROM (SELECT gp.ID, gp.PROPERTY_ID, gdi.DATA_VALUE, gp.APPLICANT_TIME, gp.OFFICE, gp.DEMAND, gp.FEEDBACK, gp.APPROVAL_ID, gp.STATE, gp.USER_ID, gp.USER_NAME, gp.PHONE, gp.ORG_ID, gp.ORG_NAME, gp.APPROVAL_NAME, gp.\"NUMBER\" FROM GREEN_PROPERTY gp LEFT JOIN GREEN_DICTIONARY_INFO gdi ON gdi.DATA_CODE = gp.PROPERTY_ID AND gdi.DATA_TYPE='propertyType' AND gdi.IS_DELETED ='N' WHERE"); if ("1".equals(entity.getType())) { sql.append(" 1=1"); } else { sql.append(" gp.USER_ID =? "); paramList.add(entity.getUserId()); } if (entity.getState() != null && !"".equals(entity.getState())) { sql.append("AND STATE = ? "); paramList.add(entity.getState()); } sql.append(" ORDER BY gp.APPLICANT_TIME DESC ) A WHERE ROWNUM<=?) WHERE num > ?"); System.err.println(sql.toString()); try { int pageSize = entity.getPageSize(); int pageNum = entity.getPageNum(); int page = (pageNum - 1) * pageSize; int limit = pageNum * pageSize; paramList.add(limit); paramList.add(page); List> list = iHibernateDao.queryForListWithSql(sql.toString(), paramList.toArray()); return new RestResult(Constant.SUCCESS, "查询成功", list); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "查询失败"); } } /** * 添加服务记录 * * @param entity * 数据 * @return 响应数据 */ public RestResult addProperty(GreenPropertyEntity entity) { String sql = "INSERT INTO GREEN_PROPERTY (ID, PROPERTY_ID, APPLICANT_TIME, OFFICE, DEMAND, FEEDBACK, " + "APPROVAL_ID, STATE, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME, APPROVAL_NAME,\"NUMBER\") " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; try { String uuid = UUID.randomUUID().toString().replace("-", ""); iHibernateDao.executeSqlUpdate(sql, new Object[] { uuid, entity.getPropertyId(), entity.getApplicantTime(), entity.getOffice(), entity.getDemand(), entity.getFeedback(), entity.getApprovalId(), '0', entity.getUserId(), entity.getUserName(), entity.getPhone(), entity.getOrgId(), entity.getOrgName(), entity.getApprovalName(), entity.getNumber() }); return new RestResult(Constant.SUCCESS, "添加成功"); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "添加失败"); } } /** * 修改服务状态 * * @param entity * 数据 * @return 响应数据 */ public RestResult updateProperty(GreenPropertyEntity entity) { try { List> list = (List>) getProperty(entity).getReturnData(); System.err.println(getProperty(entity).getReturnData().toString()); if (list.size() > 0) { Map map = list.get(0); String approvalId = (String) map.get("APPROVAL_ID"); if (approvalId != null && !("").equals(approvalId)) { if (!approvalId.equals(entity.getUserId())) { return new RestResult(Constant.FAILED, "办理人错误"); } } } String propertySqlString = null; String sql = "UPDATE GREEN_PROPERTY SET APPROVAL_ID =?,APPROVAL_NAME=?, FEEDBACK = ?,STATE = ?"; String state = entity.getState(); if ("0".equals(entity.getState())) { state = "1"; // 服务前照片 propertySqlString = sql + ",SERVICE_FRONT = ? WHERE ID = ? "; } if ("1".equals(entity.getState())) { state = "2"; // 服务后照片 propertySqlString = sql + ",SERVICE_AFTER = ? WHERE ID = ? "; } entity.setState(state); iHibernateDao.executeSqlUpdate(propertySqlString, new Object[] { entity.getUserId(), entity.getUserName(), entity.getFeedback(), entity.getState(),Objects.equals("1", entity.getState()) ? entity.getServiceFront() : entity.getServiceAfter(), entity.getId() }); return new RestResult(Constant.SUCCESS, "成功"); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "失败"); } } /** * 获取服务类型 * * @param entity * 数据 * @return 响应数据 */ public RestResult getPropertyType() { String sql = "SELECT DATA_CODE,DATA_VALUE FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE ='propertyType'"; try { List> list = iHibernateDao.queryForListWithSql(sql); return new RestResult(Constant.SUCCESS, "查询成功", list); } catch (Exception e) { System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "查询失败"); } } /** * 获取服务详情 * * @param entity * 数据 * @return 响应数据 */ public RestResult getProperty(GreenPropertyEntity entity) { String sql = "SELECT gp.PROPERTY_ID,gp.SERVICE_FRONT,gp.SERVICE_AFTER,gp.EVALUATE_NUM,gp.EVALUATE_CONTENT, gdi.DATA_VALUE, gp.APPLICANT_TIME, gp.OFFICE, gp.DEMAND, gp.FEEDBACK, gp.APPROVAL_ID, gp.STATE, gp.USER_ID, gp.USER_NAME, gp.PHONE, gp.ORG_ID, gp.ORG_NAME, gp.APPROVAL_NAME, gp.\"NUMBER\" FROM GREEN_PROPERTY gp LEFT JOIN GREEN_DICTIONARY_INFO gdi ON gdi.DATA_CODE = gp.PROPERTY_ID AND gdi.DATA_TYPE='propertyType' AND gdi.IS_DELETED ='N' WHERE gp.ID=?"; try { System.err.println("服务ID:" + entity.getId()); ArrayList paramList = new ArrayList(); paramList.add(entity.getId()); List> list = iHibernateDao.queryForListWithSql(sql.toString(), paramList.toArray()); if(CollectionUtils.isNotEmpty(list)){ Map mapData = list.get(0); if(mapData.get("SERVICE_FRONT") != null){ // 服务前照片 String imageBase64 = baseService.getImageBase64(String.valueOf(mapData.get("SERVICE_FRONT"))); list.get(0).put("SERVICE_FRONT", imageBase64); System.err.println("服务前照片:" + imageBase64); } if(mapData.get("SERVICE_AFTER") != null){ // 服务后照片 String imageBase64 = baseService.getImageBase64(String.valueOf(mapData.get("SERVICE_AFTER"))); list.get(0).put("SERVICE_AFTER", imageBase64); System.err.println("服务后照片:" + imageBase64); } } return new RestResult(Constant.SUCCESS, "查询成功", list); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "查询失败"); } } /** * @MethodName: addServiceEvaluate * @Description: 服务评价 * @author cwchen * @param entity * @return RestResult * @date 2024-05-16 10:20:02 */ @Transactional(rollbackFor = Exception.class) public RestResult addServiceEvaluate(GreenPropertyEntity entity) { try { String addServiceEvaluateSql = "UPDATE GREEN_PROPERTY SET EVALUATE_NUM = '"+entity.getEvaluateNum()+"' , EVALUATE_CONTENT = '"+entity.getEvaluateContent()+"' WHERE ID = '"+entity.getId()+"'"; System.err.println("服务评价:" + addServiceEvaluateSql); iHibernateDao.executeSqlUpdate(addServiceEvaluateSql); return new RestResult(Constant.SUCCESS, "评价成功"); } catch (Exception e) { e.printStackTrace(); // 手动回滚异常 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return new RestResult(Constant.FAILED, "评价失败"); } } }