package cn.ksource.web.facade.rcxj;
|
|
import cn.ksource.beans.CI_DAILY_PATROL;
|
import cn.ksource.beans.FlowRecord;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.JsonUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.service.flow.FlowRecordService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
@SuppressWarnings({"rawtypes"})
|
public class RcxjFacadeImpl implements RcxjFacade{
|
|
@Resource
|
private BaseDao baseDao;
|
@Resource
|
private FlowRecordService flowRecordService;
|
|
|
@Override
|
public PageInfo getRcxjData(PageInfo pageInfo, Map<String, String> params) {
|
Map support = getRcxjSupport(params);
|
String sql = support.get("sql").toString();
|
return baseDao.queryforSplitPageInfo(pageInfo, sql, params);
|
}
|
|
@Override
|
public Integer getRcxjCount(Map<String, String> params) {
|
Map support = getRcxjSupport(params);
|
String sql = "select count(*) from ( " + support.get("sql").toString() + " ) t ";
|
return baseDao.queryForInteger(sql, params);
|
}
|
|
private Map getRcxjSupport(Map<String, String> params){
|
Map<String, Object> support = new HashMap<String, Object>();
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select a.* ");
|
sql.append(" from ci_daily_patrol a ");
|
sql.append(" where 1=1");
|
if(StringUtil.isNotBlank(params.get("userId"))){
|
sql.append(" and a.user_id = :userId ");
|
}
|
if(StringUtil.isNotBlank(params.get("subCusId"))){
|
sql.append(" and a.sub_cus_id = :subCusId ");
|
}
|
if(StringUtil.isNotBlank(params.get("cusId"))){
|
sql.append(" and a.cus_id = :cusId ");
|
}
|
if(StringUtil.isNotBlank(params.get("beginDay"))){
|
sql.append(" and a.patrol_date >= :beginDay ");
|
}
|
if(StringUtil.isNotBlank(params.get("endDay"))){
|
sql.append(" and a.patrol_date <= :endDay ");
|
}
|
if(StringUtil.isNotBlank(params.get("curId"))){
|
sql.append(" and a.cur_id = :curId ");
|
}
|
|
if(StringUtil.isNotBlank(params.get("templateKey"))){
|
sql.append(" and exists ( ");
|
sql.append(" select r.bus_id from ( ");
|
sql.append(" select bus_id from flow_record where deal_id=:dealId and template_key=:templateKey ");
|
sql.append(" group by bus_id ) r where r.bus_id = a.id ) ");
|
}
|
|
if(StringUtil.isNotBlank(params.get("fstate"))){
|
sql.append(" and a.state = :fstate ");
|
}
|
|
if(StringUtil.isNotBlank(params.get("state"))){
|
if(params.get("state").equals("3")){
|
sql.append(" and a.state > :state ");
|
params.put("state", Constants.CI_DAILY_PATROL_STATE_DSH.toString());
|
}else if(params.get("state").equals("cx")){
|
sql.append(" and a.state in (2,3,4) ");
|
}else {
|
sql.append(" and a.state = :state ");
|
}
|
}
|
|
sql.append(" order by a.create_time desc ");
|
support.put("sql", sql.toString());
|
support.put("param", params);
|
return support;
|
}
|
|
@Override
|
public List<Map> getCommonPatrolItem(String cusId, String orderId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("cusId", cusId)
|
.addValue("orderId", orderId);
|
//查询分类
|
StringBuilder sql = new StringBuilder();
|
|
sql.append(" select ID,CATEGORY_NAME from CI_DAILY_PATROL_CUSTOMER_COMMONS_CATEGORY ");
|
sql.append(" where customer_id = :cusId and USING_state=1 order by ordernum asc ");
|
List<Map> categoryList = baseDao.queryForList(sql.toString(),param);
|
//查询数据
|
sql.setLength(0);
|
if(StringUtil.isNotBlank(orderId)){
|
sql.append(" select t.*,r.NOTE,IFNULL(r.RESULT_TYPE,1) RESULT from ( ");
|
}
|
sql.append(" select c.id CATEGORY_ID,i.id ITEM_ID,i.ITEM_NAME,i.NOTE ITEM_NOTE ");
|
sql.append(" from CI_DAILY_PATROL_CUSTOMER_COMMONS_CATEGORY c ");
|
sql.append(" inner join CI_DAILY_PATROL_CUSTOMER_COMMONS_ITEM i on c.id = i.category_id ");
|
sql.append(" where c.using_state=1 and i.using_state=1 and c.customer_id=:cusId ");
|
if(StringUtil.isNotBlank(orderId)){
|
sql.append(" ) t left join (select * from CI_DAILY_PATROL_COMMON_RECORD where PATROL_ID = :orderId ) r on t.item_id = r.item_id ");
|
}
|
List<Map> datalist = baseDao.queryForList(sql.toString(),param);
|
|
//拼装数据
|
List<Map> resList = new ArrayList<Map>();
|
if(categoryList!=null&&categoryList.size()>0){
|
for(Map category : categoryList){
|
Map tempMap = new HashMap();
|
List<Map> tempList = new ArrayList<Map>();
|
String categoryId = category.get("ID").toString();
|
String categoryName = category.get("CATEGORY_NAME").toString();
|
tempMap.put("ID", categoryId);
|
tempMap.put("NAME", categoryName);
|
for(Map data:datalist){
|
if(categoryId.equals(data.get("CATEGORY_ID").toString())){
|
if(data.get("RESULT")==null){
|
data.put("RESULT", 1);
|
}
|
tempList.add(data);
|
}
|
}
|
tempMap.put("dataList", tempList);
|
resList.add(tempMap);
|
}
|
}
|
return resList;
|
}
|
|
@Override
|
public List<Map> getPatrolCiList(Map<String, String> params) {
|
//查询需巡检配置
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select c.lv3_id,c.id,c.ciname,c.searchcode,c.position ");
|
sql.append(" from ci_daily_patrol_ci p ");
|
sql.append(" inner join cmdb_ci_base c on p.ci_id = c.id ");
|
sql.append(" inner join ci_daily_ci_item_re r on r.ci_id = p.ci_id ");
|
sql.append(" where c.state =1 and p.customer_id =:cusId ");
|
if(StringUtil.isNotBlank(params.get("subCusId"))){
|
sql.append(" and p.sub_customer_id =:subCusId ");
|
}
|
if(StringUtil.isNotBlank(params.get("errflag"))){//只查巡检询异常配置
|
sql.append(" and exists ( ");
|
sql.append(" select ci_id from (select ci_id from ci_daily_patrol_record where result<>1 and patrol_id=:orderId group by ci_id ) t where t.ci_id = c.id ");
|
sql.append(" ) ");
|
}
|
sql.append(" group by c.id,c.lv3_id, c.ciname, c.searchcode,c.position ");
|
List<Map> ciList = baseDao.queryForList(sql.toString(),params);
|
|
//查询指标
|
sql.setLength(0);
|
sql.append(" select b.ci_id,b.id,d.item_name,e.result,e.note from ");
|
sql.append(" ci_daily_patrol_ci a inner join ci_daily_ci_item_re b on a.ci_id = b.ci_id ");
|
sql.append(" inner join ci_daily_patrol_customer_item c on b.cus_item_id = c.id ");
|
sql.append(" inner join ci_daily_patrol_item d on c.item_id = d.id ");
|
if(StringUtil.isNotBlank(params.get("errflag"))){//只查巡检询异常配置
|
sql.append(" inner join ci_daily_patrol_record e on e.item_id = b.id and e.patrol_id=:orderId and e.result<>1 ");
|
}else{
|
sql.append(" left join ci_daily_patrol_record e on e.item_id = b.id and e.patrol_id=:orderId ");
|
}
|
sql.append(" where a.customer_id = :cusId ");
|
List<Map> itemList = baseDao.queryForList(sql.toString(),params);
|
|
//组装数据
|
if(ciList!=null&&ciList.size()>0){
|
Map<String, Map> ciSet = new HashMap<String, Map>();
|
for(Map ci:ciList){
|
ciSet.put(ConvertUtil.obj2Str(ci.get("id")), ci);
|
}
|
if(itemList!=null&&itemList.size()>0){
|
for(Map item:itemList){
|
String ci_id = ConvertUtil.obj2Str(item.get("ci_id"));
|
if(ciSet.get(ci_id)!=null){
|
Map ci = ciSet.get(ci_id);
|
if(ci.get("xjxlist")==null){
|
ci.put("xjxlist", new ArrayList<Map>());
|
}
|
((List<Map>)ci.get("xjxlist")).add(item);
|
}
|
}
|
}
|
}
|
return ciList;
|
}
|
|
@Override
|
public CI_DAILY_PATROL savePatrol(CI_DAILY_PATROL report, Map<String, String> params) {
|
String commonJsonListStr =params.get("commonJsonList");
|
String linkOrderId = params.get("linkOrderId");
|
List<Map> itemlist = JsonUtil.json2List(params.get("ciJsonList"));
|
//配置数量
|
/*int nci_num = 0;
|
int aci_num = 0;*/
|
//指标数量
|
int nitem_num = 0;
|
int aitem_num = 0;
|
|
Map<String, String> ciMap = new HashMap<String, String>();
|
Map<String, String> aciMap = new HashMap<String, String>();
|
if(itemlist!=null&&itemlist.size()>0){
|
for(Map item:itemlist){
|
String itemId = ConvertUtil.obj2StrBlank(item.get("itemId"));
|
String c_ci_id = itemId.substring(0, itemId.indexOf("-"));
|
//计算巡检指标数量
|
if(ConvertUtil.obj2StrBlank(item.get("result")).equals("1")){//正常
|
nitem_num ++ ;
|
}else{//异常
|
aitem_num ++ ;
|
aciMap.put(c_ci_id, "1");
|
}
|
ciMap.put(c_ci_id, "1");
|
}
|
}
|
|
report.setNci_num(ciMap.size()-aciMap.size())
|
.setAci_num(aciMap.size())
|
.setNitem_num(nitem_num)
|
.setAitem_num(aitem_num);
|
|
if (StringUtil.isBlank(params.get("orderId"))) {//新增
|
report = report.setCreate_time(DateUtil.getCurrentDate14())
|
.setUser_id(params.get("user_id")).insert();
|
} else {
|
report = report.setId(params.get("orderId")).update();
|
}
|
|
//通用巡检记录
|
saveCommonPatrolRecord(report.getId(),commonJsonListStr);
|
//设备巡检记录
|
saveCiPatrolRecord(report.getId(),params);
|
//保存关联工单
|
saveLinkOrder(report.getId(),linkOrderId);
|
return report;
|
}
|
|
/**
|
* 保存关联工单信息
|
* @param orderId
|
* @param linkOrderIds
|
*/
|
private void saveLinkOrder(String orderId,String linkOrderId){
|
if(!StringUtil.isEmpty(linkOrderId)){
|
String[] linkOrderIds = linkOrderId.split(",");
|
baseDao.execute("delete from ORDER_REF_ORDER where BUSINESS_ID=:orderId", new SqlParameter("orderId",orderId));
|
if(linkOrderIds!=null&&linkOrderIds.length>0){
|
String sql = " insert into ORDER_REF_ORDER (ID,BUSINESS_ID,RELATE_FLOW_ID) " +
|
" values (:id,:orderId,:linkOrderId)";
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for(int i=0;i<linkOrderIds.length;i++){
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", StringUtil.getUUID())
|
.addValue("orderId", orderId)
|
.addValue("linkOrderId", linkOrderIds[i]);
|
paramList.add(param);
|
}
|
baseDao.executeBatch(sql, paramList);
|
}
|
}
|
}
|
|
private void saveCommonPatrolRecord(String orderId, String commonJsonListStr){
|
List<Map> list = JsonUtil.json2List(commonJsonListStr);
|
baseDao.execute("delete from ci_daily_patrol_common_record where patrol_id = :orderId ",
|
new SqlParameter("orderId",orderId));
|
if(list!=null&&list.size()>0){
|
String sql = " insert into CI_DAILY_PATROL_COMMON_RECORD " +
|
"(ID,CATEGORY_ID,CATEGORY_NAME,ITEM_ID,ITEM_NAME,RESULT_TYPE,PATROL_ID,NOTE) " +
|
"values (:id,:categoryId,:categoryName,:itemId,:itemName,:result,:orderId,:note) ";
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for(Map map:list){
|
String id = StringUtil.getUUID();
|
String categoryId = ConvertUtil.obj2StrBlank(map.get("categoryId"));
|
String categoryName = ConvertUtil.obj2StrBlank(map.get("categoryName"));
|
String itemId = ConvertUtil.obj2StrBlank(map.get("itemId"));
|
String itemName = ConvertUtil.obj2StrBlank(map.get("itemName"));
|
String result = ConvertUtil.obj2StrBlank(map.get("result"));
|
String note = ConvertUtil.obj2StrBlank(map.get("note"));
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", id)
|
.addValue("categoryId", categoryId)
|
.addValue("categoryName", categoryName)
|
.addValue("itemId", itemId)
|
.addValue("itemName", itemName)
|
.addValue("result", result)
|
.addValue("note", note)
|
.addValue("orderId", orderId);
|
paramList.add(param);
|
}
|
baseDao.executeBatch(sql, paramList);
|
}
|
}
|
|
private void saveCiPatrolRecord(String orderId, Map<String, String> params){
|
String ciJsonListStr = params.get("ciJsonList");
|
List<Map> list = JsonUtil.json2List(ciJsonListStr);
|
String cisql = "SELECT * FROM CMDB_CI_BASE WHERE CUS_ID =:cus_id";
|
List<Map> ciList = baseDao.queryForList(cisql,params);
|
Map cacheMap = new HashMap();
|
for(Map map:ciList){
|
cacheMap.put(map.get("ID"), map);
|
}
|
baseDao.execute("delete from ci_daily_patrol_record where PATROL_ID = :orderId ",
|
new SqlParameter("orderId",orderId));
|
if(list!=null&&list.size() >0){
|
String sql = " insert into CI_DAILY_PATROL_RECORD " +
|
"(ID,PATROL_ID,CI_ID,SEARCH_CODE,CI_NAME,MEMBER_CODE,POSITION,RESULT,NOTE,ITEM_ID) " +
|
"values (:id,:orderId,:ciId,:searchCode,:ciName,:ciCode,:position,:result,:note,:item_id) ";
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for(Map map:list){
|
String id = StringUtil.getUUID();
|
String[] ciitemIds = ConvertUtil.obj2StrBlank(map.get("itemId")).split("-");
|
Map ciMap = (Map)cacheMap.get(ciitemIds[0]);
|
String ciId = ConvertUtil.obj2StrBlank(ciitemIds[0]);
|
String searchCode = ConvertUtil.obj2StrBlank(ciMap.get("SEARCHCODE"));
|
String ciName = ConvertUtil.obj2StrBlank(ciMap.get("CINAME"));
|
String ciCode = ConvertUtil.obj2StrBlank(ciMap.get("CODE"));
|
String position = ConvertUtil.obj2StrBlank(ciMap.get("POSITION"));
|
String result = ConvertUtil.obj2StrBlank(map.get("result"));
|
String note = ConvertUtil.obj2StrBlank(map.get("note"));
|
String item_id = ConvertUtil.obj2StrBlank(ciitemIds[1]);
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", id)
|
.addValue("ciId", ciId)
|
.addValue("searchCode", searchCode)
|
.addValue("ciName", ciName)
|
.addValue("ciCode", ciCode)
|
.addValue("position", position)
|
.addValue("result", result)
|
.addValue("note", note)
|
.addValue("item_id", item_id)
|
.addValue("orderId", orderId);
|
paramList.add(param);
|
}
|
baseDao.executeBatch(sql, paramList);
|
}
|
}
|
|
@Override
|
public Map getRcxjById(String id) {
|
return baseDao.queryForMap("select A.*,B.DEAL_NAME,B.DEAL_TIME from CI_DAILY_PATROL A LEFT JOIN FLOW_RECORD B ON A.ID = B.BUS_ID where A.ID=:id ORDER BY B.DEAL_TIME DESC",new SqlParameter("id",id));
|
}
|
|
@Override
|
public List getPatrolCiList(String id) {
|
String sql = "select note,search_code,ci_id,ci_name,member_code,position,result from ci_daily_patrol_record where patrol_id = :id";
|
return baseDao.queryForList(sql,new SqlParameter("id",id));
|
}
|
|
@Override
|
public String getMonthWarnDate(Map<String, String> params) {
|
String patrolDate = params.get("patrolDate");
|
if(StringUtil.isBlank(patrolDate)){
|
patrolDate = DateUtil.getCurrentDate6().toString();
|
}
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select concat(',',GROUP_CONCAT(DISTINCT right(PATROL_DATE,2)),',') ");
|
sql.append(" from CI_DAILY_PATROL p ");
|
sql.append(" where ACI_NUM>0 and PATROL_DATE like :patrolDate ");
|
if(StringUtil.isNotBlank(params.get("userId"))){
|
sql.append(" and user_id=:userId ");
|
}
|
if(StringUtil.isNotBlank(params.get("cusId"))){
|
sql.append(" and sub_cus_id=:cusId ");
|
}
|
params.put("patrolDate", patrolDate.substring(0,6)+"%");
|
String warnString= baseDao.queryForString(sql.toString(),params);
|
return warnString;
|
}
|
|
@Override
|
public String getHasReportDate(Map<String, String> params) {
|
String patrolDate = params.get("patrolDate");
|
if(StringUtil.isBlank(patrolDate)){
|
patrolDate = DateUtil.getCurrentDate6().toString();
|
}
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select CONVERT(concat(',',GROUP_CONCAT(DISTINCT right(PATROL_DATE,2)),',') USING utf8) ");
|
sql.append(" from CI_DAILY_PATROL p ");
|
sql.append(" where PATROL_DATE like :patrolDate ");
|
if(StringUtil.isNotBlank(params.get("userId"))){
|
sql.append(" and user_id=:userId ");
|
}
|
if(StringUtil.isNotBlank(params.get("cusId"))){
|
sql.append(" and sub_cus_id=:cusId ");
|
}
|
params.put("patrolDate", patrolDate.substring(0,6)+"%");
|
String hasReportString= baseDao.queryForString(sql.toString(),params);
|
return hasReportString;
|
}
|
|
@Override
|
public List<Map> getCurDateOrders(Map<String, String> params) {
|
String sql = " select id orderId from ci_daily_patrol where patrol_date = :patrolDate ";
|
if(StringUtil.isNotBlank(params.get("userId"))){
|
sql= sql + " and user_id= :userId ";
|
}
|
if(StringUtil.isNotBlank(params.get("cusId"))){
|
sql= sql + " and sub_cus_id= :cusId ";
|
}
|
return baseDao.queryForList(sql,params);
|
}
|
|
@Override
|
public void doToNext(Map<String, String> params, FlowRecord flowRecord) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" update ci_daily_patrol set state=:state ");
|
if (StringUtil.isNotBlank(params.get("cus_id"))) {
|
sql.append(" ,cur_id=:cus_id,cur_name=:cus_id ");
|
}else{
|
sql.append(" ,cur_id='',cur_name='' ");
|
}
|
sql.append(" where id=:id ");
|
baseDao.execute(sql.toString(), params);
|
//记录流程信息
|
flowRecordService.addRecord(flowRecord);
|
}
|
|
@Override
|
public List<Map> getCiItemList(Map<String, String> params) {
|
List<Map> itemList = getPatrolCiList(params);
|
return itemList;
|
}
|
|
@Override
|
public Map getShInfoById(String orderId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("orderId", orderId)
|
.addValue("key", Constants.RCXJ_FLOW_DSH);
|
String sql = " select * from flow_record where template_key = :key and bus_id = :orderId order by deal_time desc limit 1 ";
|
return baseDao.queryForMap(sql,param);
|
}
|
|
@Override
|
public List<Map> getLinkOrderList(String orderId) {
|
String sql = " select r.RELATE_FLOW_ID FLOWID,b.* from ORDER_REF_ORDER r " +
|
" inner join workflow_base b on r.RELATE_FLOW_ID = b.ID " +
|
" where r.BUSINESS_ID = :orderId ";
|
return baseDao.queryForList(sql, new SqlParameter("orderId",orderId));
|
}
|
|
}
|