hz-zhhq-app-service/greenH5modul/.svn/pristine/64/6455769a9f3807ce0a78619ac17...

452 lines
18 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
package com.nationalelectric.greenH5;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
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.ApplyRoleConstant;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectric.greenH5.DTO.GreenConstructDTO;
import com.nationalelectric.greenH5.DTO.GreenMealTicketApplyDTO;
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
import com.nationalelectric.greenH5.bizc.IGreenApplyListBizc;
import com.nationalelectric.greenH5.bizc.IGreenConstructInfoBizc;
import com.nationalelectric.greenH5.bizc.IGreenConstructPersonInfoBizc;
import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc;
import com.nationalelectric.greenH5.po.GreenApplyList;
import com.nationalelectric.greenH5.po.GreenConstructInfo;
import com.nationalelectric.greenH5.po.GreenConstructPersonInfo;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.utils.AesEncryptUtil;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import com.sgcc.uap.service.validator.ServiceValidatorBaseException;
import com.sgcc.uap.service.validator.ServiceValidatorUtil;
/**
* <b>概述</b><br>
* <p>
* <b>功能</b><br>
*
* @author dell
*/
@Controller
@RequestMapping("/greenConstructInfo")
public class GreenConstructInfoController extends GreenBaseController {
/**
* 施工申请service
*/
@Resource
private IGreenConstructInfoBizc greenconstructinfoBizc;
/**
* HibernateDao逻辑构件
*/
@Autowired
IHibernateDao hibernateDao;
/**
* 施工申请人员service
*/
@Resource
private IGreenConstructPersonInfoBizc greenconstructpersoninfoBizc;
/**
* 我的申请列表service
*/
@Resource
private IGreenApplyListBizc greenApplyListBizc;
/**
* 用户controller
*/
@Resource
private GreenUserInfoController greenUserInfoController;
/**
* 保存图片controller
*/
@Resource
private GreenImageInfoController greenImageInfoController;
@Resource
private IGreenOperateLogBizc greenOperateLogBizc;
@Autowired
private BaseServiceImpl baseService;
/**
* 保存施工申请
*
* @param greenConstructDTO
* @return
*/
@RequestMapping(value = "/saveConstructInfo", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
public @ResponseBody RestResult saveConstructInfo(@RequestBody Object requestBody) {
GreenConstructDTO greenConstructDTO = new ObjectMapper().convertValue(requestBody,
new TypeReference<GreenConstructDTO>() {
});
try {
String userId = greenConstructDTO.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 校验
ServiceValidatorUtil.validatorJavaBean(greenConstructDTO);
for (GreenConstructPersonInfo greenConstructPersonInfo : greenConstructDTO.getConstructPersonList()) {
ServiceValidatorUtil.validatorJavaBean(greenConstructPersonInfo);
}
// 开始时间
Date startDate = changeDate(greenConstructDTO.getStartTime());
// 结束时间
Date endDate = changeDate(greenConstructDTO.getEndTime());
// 当前时间
Date nowDate = new Date();
if (startDate == null || endDate == null) {
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT,
* Constant.APPLY, Constant.OPERATE_FAIL, "提交施工申请",
* Constant.LOG_OPERATE, greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, "开始时间、结束时间格式有误,请重新输入!");
}
// 判断开始时间是否小于当前时间
if (nowDate.getTime() > startDate.getTime()) {
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT,
* Constant.APPLY, Constant.OPERATE_FAIL, "提交施工申请",
* Constant.LOG_OPERATE, greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, "开始时间不能小于当前时间,请重新输入!");
}
// 判断结束时间是否小于当前时间
if (nowDate.getTime() > endDate.getTime()) {
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT,
* Constant.APPLY, Constant.OPERATE_FAIL, "提交施工申请",
* Constant.LOG_OPERATE, greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, "结束时间不能小于当前时间,请重新输入!");
}
// 判断开始时间是否大于结束时间
if (startDate.getTime() > endDate.getTime()) {
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT,
* Constant.APPLY, Constant.OPERATE_FAIL, "提交施工申请",
* Constant.LOG_OPERATE, greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, "开始时间不能大于结束时间,请重新输入!");
}
// 获取施工申请信息
GreenConstructInfo greenConstructInfo = new GreenConstructInfo();
// 申请部门名称
greenConstructInfo.setApplyDeptName(greenConstructDTO.getApplyDeptName());
// 项目负责人
greenConstructInfo.setPrincipal(greenConstructDTO.getPrincipal());
// 联系方式
greenConstructInfo.setContactTel(greenConstructDTO.getContactTel());
// 身份证号,要加密处理
String cardno = greenConstructDTO.getIdcardNo();
try {
cardno = AesEncryptUtil.encrypt(cardno);
} catch (Exception e) {
}
greenConstructInfo.setIdcardNo(cardno);
// 业务名称
greenConstructInfo.setBusinessName(greenConstructDTO.getBusinessName());
// 业务内容
greenConstructInfo.setBusinessDetail(greenConstructDTO.getBusinessDetail());
// 施工单位
greenConstructInfo.setConstructCompany(greenConstructDTO.getConstructCompany());
// 开始时间
greenConstructInfo.setStartTime(greenConstructDTO.getStartTime());
// 结束时间
greenConstructInfo.setEndTime(greenConstructDTO.getEndTime());
// 实施方案
// greenConstructInfo.setImplementPlan(greenConstructDTO.getImplementPlan());
String p1 = greenImageInfoController.saveImage(greenConstructDTO.getImplementPlan(), userId);
greenConstructInfo.setImplementPlanData(p1);
baseService.saveImgToIO(p1 + ".jpg", greenConstructDTO.getImplementPlan());
greenConstructInfo.setImplementPlan(p1 + ".jpg");
// 实施发起文件
// greenConstructInfo.setImplementInitiateFile(greenConstructDTO.getImplementInitiateFile());
// greenConstructInfo.setImplementInitiateFile(greenImageInfoController.saveImage(greenConstructDTO.getImplementInitiateFile(),userId));
String p2 = greenImageInfoController.saveImage(greenConstructDTO.getImplementInitiateFile(), userId);
greenConstructInfo.setImplementInitiateFileData(p2);
greenConstructInfo.setImplementInitiateFile(p2 + ".jpg");
baseService.saveImgToIO(p2 + ".jpg", greenConstructDTO.getImplementInitiateFile());
// 用户id
greenConstructInfo.setUserId(greenConstructDTO.getUserId());
// 创建者
greenConstructInfo.setCreator(greenConstructDTO.getUserId().toString());
// 修改者
greenConstructInfo.setModifier(greenConstructDTO.getUserId().toString());
// 创建时间
greenConstructInfo.setGmtCreated(new Date());
// 修改时间
greenConstructInfo.setGmtModified(new Date());
// 删除标记
greenConstructInfo.setIsDeleted("N");
greenConstructInfo.setImgStatus(1);
// 添加访客信息到访客信息表
greenconstructinfoBizc.add(greenConstructInfo);
// 保存施工人员信息
for (GreenConstructPersonInfo greenConstructPersonInfo : greenConstructDTO.getConstructPersonList()) {
// 访客id
greenConstructPersonInfo.setConstructId(greenConstructInfo.getId());
// 创建者
greenConstructPersonInfo.setCreator(greenConstructDTO.getUserId().toString());
// 修改者
greenConstructPersonInfo.setModifier(greenConstructDTO.getUserId().toString());
// 创建时间
greenConstructPersonInfo.setGmtCreated(new Date());
// 修改时间
greenConstructPersonInfo.setGmtModified(new Date());
// 删除标记
greenConstructPersonInfo.setIsDeleted("N");
String cardno_1 = greenConstructPersonInfo.getIdcardNo();
try {
cardno_1 = AesEncryptUtil.encrypt(cardno_1);
} catch (Exception e) {
}
greenConstructPersonInfo.setIdcardNo(cardno_1);
// 执行保存方法
greenconstructpersoninfoBizc.add(greenConstructPersonInfo);
}
// 下面的操作,不在一个事务里,不能这样操作啦
// baseService.saveConstructImage(greenConstructInfo.getId());
// 添加访客信息到申请信息list表
GreenApplyList list = new GreenApplyList();
// 申请人id
list.setUserId(greenConstructDTO.getUserId());
// 申请事项详情ID
list.setDetailId(greenConstructInfo.getId());
// 申请类型
list.setApplyType(Constant.CONSTRUCT_APPLY);
// 申请类型名称
list.setApplyTypeName("施工申请");
// 申请详情1(申请部门)
list.setApplyInfo1(greenConstructDTO.getApplyDeptName());
// 申请详情2(业务名称)
list.setApplyInfo2(greenConstructDTO.getBusinessName());
// 一级审批部门
list.setFirstApproval(ApplyRoleConstant.CONSTRUCT_APPROVE_PROJECT);
// 一级审批状态
// list.setFirstStatus(Constant.APPROVAL_DOING);
// 二级审批部门
list.setSecondApproval(ApplyRoleConstant.CONSTRUCT_APPROVE_DEFEND);
// 二级审批状态
// list.setSecondStatus(Constant.APPROVAL_DOING);
// 三级审批部门
list.setThirdApproval(ApplyRoleConstant.CONSTRUCT_APPROVE_DIRECTOR);
// 三级审批状态
// list.setThirdStatus(Constant.APPROVAL_DOING);
// 四级审批部门
list.setFourthApproval(ApplyRoleConstant.CONSTRUCT_APPROVE_GENERAL);
// 四级审批状态
// list.setFourthStatus(Constant.APPROVAL_DOING);
// 五级审批部门
list.setFifthApproval(ApplyRoleConstant.CONSTRUCT_APPROVE_SECURITY);
// 五级审批状态
// list.setFifthStatus(Constant.APPROVAL_DOING);
// 申请时间
list.setApplyTime(new SimpleDateFormat(DateUtil.Y_M_DH_MI_S).format(new Date()));
// 创建者
list.setCreator(greenConstructDTO.getUserId().toString());
// 修改者
list.setModifier(greenConstructDTO.getUserId().toString());
// 创建时间
list.setGmtCreated(new Date());
// 修改时间
list.setGmtModified(new Date());
// 删除标识
list.setIsDeleted("N");
// 添加申请到申请list表
greenApplyListBizc.add(list);
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT, Constant.APPLY,
* Constant.OPERATE_SUCCESS, "提交施工申请", Constant.LOG_OPERATE,
* greenConstructDTO.getUserId());
*/
// 返回结果
return new RestResult(Constant.SUCCESS, "申请成功");
} catch (ServiceValidatorBaseException e) {
e.printStackTrace();
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT, Constant.APPLY,
* Constant.OPERATE_FAIL, "提交施工申请", Constant.LOG_ERROR,
* greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, e.getMessage());
} catch (Exception e) {
e.printStackTrace();
/*
* greenOperateLogBizc.addLog(Constant.CONSTRUCT, Constant.APPLY,
* Constant.OPERATE_FAIL, "提交施工申请", Constant.LOG_ERROR,
* greenConstructDTO.getUserId());
*/
return new RestResult(Constant.FAILED, "申请失败,请重试");
}
}
/**
* 根据id查询施工申请详情
*
* @param id
* @param applyType
* @return
*/
@SuppressWarnings({ "unchecked" })
public List<Map<String, Object>> getConstructInfo(String id, String applyType, String userId) throws Exception {
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> constructPsersonList = new ArrayList<Map<String, Object>>();
// 根据用户id查询该用户具有的权限
List<Map<String, Object>> queryRoleList = greenUserInfoController.queryRoleById(userId);
if (queryRoleList.size() <= 0) {
throw new MyException("该角色暂无任何权限,请联系管理员!");
}
// 切割查询的权限
String[] userRoleArr = queryRoleList.get(0).get("userRole").toString().split(",");
String userRoleStr = "";
for (String value : userRoleArr) {
userRoleStr = userRoleStr + "'" + value + "',";
}
userRoleStr = "(" + userRoleStr.substring(0, userRoleStr.length() - 1) + ")";
// 查询施工人员信息
String retinueInfoSql = "SELECT * FROM GREEN_CONSTRUCT_PERSON_INFO cpi WHERE cpi.is_deleted = 'N' AND cpi.construct_id = ?";
// 查询施工申请详情
/*
* String applyInfoByIdSql =
* " SELECT ci.*,al.detail_id,al.apply_type,al.apply_type_name,gii1.image_content AS plan_pic,gii2.image_content AS initiate_file_pic,"
* +
* " al.first_approval,al.first_status,al.first_approve_time,di1.data_value AS first_status_value,"
* +
* " al.second_approval,al.second_status,al.second_approve_time,di2.data_value AS second_status_value,"
* +
* " al.third_approval,al.third_status,al.third_approve_time,di3.data_value AS third_status_value,"
* +
* " al.fourth_approval,al.fourth_status,al.fourth_approve_time,di4.data_value AS fourth_status_value,"
* +
* " al.fifth_approval,al.fifth_status,al.fifth_approve_time,di5.data_value AS fifth_status_value,"
* + " IF(al.first_approval IN "
* +userRoleStr+",al.first_status,IF(al.second_approval IN "+userRoleStr
* +",second_status," + " IF(al.third_approval IN "
* +userRoleStr+",al.third_status,IF(al.fourth_approval IN"+userRoleStr+
* ",al.fourth_status," + " IF(al.fifth_approval IN "
* +userRoleStr+",fifth_status,null))))) AS status_code" +
* " FROM GREEN_CONSTRUCT_INFO ci" +
* " INNER JOIN GREEN_APPLY_LIST al ON ci.id = al.detail_id" +
* " INNER JOIN GREEN_DICTIONARY_INFO di1 ON al.first_status = di1.data_code AND di1.data_type = 'approveStatus'"
* +
* " INNER JOIN GREEN_DICTIONARY_INFO di2 ON al.second_status = di2.data_code AND di2.data_type = 'approveStatus'"
* +
* " INNER JOIN GREEN_DICTIONARY_INFO di3 ON al.third_status = di3.data_code AND di3.data_type = 'approveStatus'"
* +
* " INNER JOIN GREEN_DICTIONARY_INFO di4 ON al.fourth_status = di4.data_code AND di4.data_type = 'approveStatus'"
* +
* " INNER JOIN GREEN_DICTIONARY_INFO di5 ON al.fifth_status = di5.data_code AND di5.data_type = 'approveStatus'"
* + " LEFT JOIN GREEN_IMAGE_INFO gii1 ON ci.implement_plan = gii1.id" +
* " LEFT JOIN GREEN_IMAGE_INFO gii2 ON ci.implement_initiate_file = gii2.id"
* + " WHERE ci.id = ? AND al.apply_type = ?";
*/
String applyInfoByIdSql = " SELECT ci.*,al.detail_id,al.apply_type,al.apply_type_name,ci.implement_plan AS plan_pic,ci.implement_initiate_file AS initiate_file_pic,"
+ " al.first_approval,al.first_status,al.first_approve_time,di1.data_value AS first_status_value,"
+ " al.second_approval,al.second_status,al.second_approve_time,di2.data_value AS second_status_value,"
+ " al.third_approval,al.third_status,al.third_approve_time,di3.data_value AS third_status_value,"
+ " al.fourth_approval,al.fourth_status,al.fourth_approve_time,di4.data_value AS fourth_status_value,"
+ " al.fifth_approval,al.fifth_status,al.fifth_approve_time,di5.data_value AS fifth_status_value,"
+ " IF(al.first_approval IN " + userRoleStr + ",al.first_status,IF(al.second_approval IN " + userRoleStr
+ ",second_status," + " IF(al.third_approval IN " + userRoleStr
+ ",al.third_status,IF(al.fourth_approval IN" + userRoleStr + ",al.fourth_status,"
+ " IF(al.fifth_approval IN " + userRoleStr + ",fifth_status,null))))) AS status_code"
+ " FROM GREEN_CONSTRUCT_INFO ci" + " INNER JOIN GREEN_APPLY_LIST al ON ci.id = al.detail_id"
+ " INNER JOIN GREEN_DICTIONARY_INFO di1 ON al.first_status = di1.data_code AND di1.data_type = 'approveStatus'"
+ " INNER JOIN GREEN_DICTIONARY_INFO di2 ON al.second_status = di2.data_code AND di2.data_type = 'approveStatus'"
+ " INNER JOIN GREEN_DICTIONARY_INFO di3 ON al.third_status = di3.data_code AND di3.data_type = 'approveStatus'"
+ " INNER JOIN GREEN_DICTIONARY_INFO di4 ON al.fourth_status = di4.data_code AND di4.data_type = 'approveStatus'"
+ " INNER JOIN GREEN_DICTIONARY_INFO di5 ON al.fifth_status = di5.data_code AND di5.data_type = 'approveStatus'"
+ " WHERE ci.id = ? AND al.apply_type = ?";
// 执行sql
resultList = hibernateDao.queryForListWithSql(applyInfoByIdSql, new Object[] { id, applyType });
// 将实施方案和实施发起文件转成数组
if (resultList.size() > 0) {
Map info = resultList.get(0);
String pic1name = String.valueOf(info.get("plan_pic"));
String pic2name = String.valueOf(info.get("initiate_file_pic"));
String pic1Data = baseService.getImageBase64(pic1name);
String pic2Data = baseService.getImageBase64(pic2name);
info.put("plan_pic", pic1Data);
info.put("initiate_file_pic", pic2Data);
String cardNo = String.valueOf(info.get("IDCard_no"));
try {
cardNo = AesEncryptUtil.desEncrypt(cardNo);
if (cardNo != null) {
cardNo = cardNo.trim();
}
} catch (Exception e) {
}
info.put("IDCard_no", cardNo);
for (Map<String, Object> map : resultList) {
// 查询施工人员信息
constructPsersonList = hibernateDao.queryForListWithSql(retinueInfoSql, new Object[] { map.get("id") });
for (int i = 0; i < constructPsersonList.size(); i++) {
Map m = constructPsersonList.get(i);
String cardNo_1 = String.valueOf(m.get("IDCard_no"));
try {
cardNo_1 = AesEncryptUtil.desEncrypt(cardNo_1);
if (cardNo_1 != null) {
cardNo_1 = cardNo_1.trim();
}
} catch (Exception e) {
}
m.put("IDCard_no", cardNo_1);
}
map.put("constructPserson", constructPsersonList);
}
}
return resultList;
}
/**
* 将字符串转成日期格式
*
* @param dateStr
* @return
*/
public Date changeDate(Object dateStr) {
try {
Date date = null;
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
if (dateStr != null) {
date = sDateFormat.parse(dateStr.toString());
}
return date;
} catch (Exception e) {
return null;
}
}
}