Commit 5ddfd0fc by 焦凯

Merge branch 'develop' of gitlab.beecode.cn:kunlun/xyst_dinas/xyst_dinas_backend into develop

parents 3d463e66 6cb573eb
...@@ -277,4 +277,48 @@ public class DateTimeUtils { ...@@ -277,4 +277,48 @@ public class DateTimeUtils {
return calendar.getTime(); return calendar.getTime();
} }
/**
* 判断1个日期是否小于当前时间所在年
* eg: now = new Date 2021-04-16
* isLtNowYear(2020-12-31) true
* isLtNowYear(2021-01-01) false
* @return Boolean
*/
public static Boolean isLtNowYear(Date date) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(new Date());
return cal1.get(Calendar.YEAR) < cal2.get(Calendar.YEAR);
}
/**
* 判断2个日期是否同年
* eg: isSameYear(2020-12-31,2021-01-01) false
* isSameYear(2020-01-01,2020-12-31) true
* @return Boolean
*/
public static Boolean isSameYear(Date startDate , Date endDate) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(startDate);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(endDate);
return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);
}
/**
* 判断2个日期是否同月
* eg: isSameYear(2020-12-31,2021-01-01) false
* isSameYear(2020-12-31,2020-12-01) true
* isSameYear(2020-12-31,2021-12-01) true
* @return Boolean
*/
public static Boolean isSameMonth(Date startDate , Date endDate) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(startDate);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(endDate);
return cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
}
} }
\ No newline at end of file
...@@ -125,7 +125,11 @@ public class BaseBusinessWarn { ...@@ -125,7 +125,11 @@ public class BaseBusinessWarn {
//2.当前存在执行中的预警记录,则修改预警执行信息 //2.当前存在执行中的预警记录,则修改预警执行信息
Date currentTime = new Date(); Date currentTime = new Date();
warnExeRecord.setRecentlyTime(currentTime); warnExeRecord.setRecentlyTime(currentTime);
if(!isWarning) {//2.1 如果没有处罚预警,则结束该预警记录 if(!isWarning) {//2.1 如果没有触发预警,则结束该预警记录
//如果预警已经结束,则不修改
if((WarnStateEnum.OVER.getValue()+"").equals(warnExeRecord.getWarnState())){
return true;
}
warnExeRecord.setEndTime(currentTime); warnExeRecord.setEndTime(currentTime);
warnExeRecord.setWarnState(WarnStateEnum.OVER.getValue()+""); warnExeRecord.setWarnState(WarnStateEnum.OVER.getValue()+"");
} }
......
...@@ -15,6 +15,8 @@ public class WarnSettingConstant { ...@@ -15,6 +15,8 @@ public class WarnSettingConstant {
/** 最近预警时间 */ /** 最近预警时间 */
public static final String RECENTLY_TIME = "recentlyTime"; public static final String RECENTLY_TIME = "recentlyTime";
public static final String WARN_STATE = "warnState";
/** /**
* 超采预警类型 * 超采预警类型
...@@ -29,7 +31,18 @@ public class WarnSettingConstant { ...@@ -29,7 +31,18 @@ public class WarnSettingConstant {
/** /**
* 许可证船只进入告警区类型 * 许可证船只进入告警区类型
*/ */
public static final String SAND_SHIP_WARN_BILL_TYPE = "采区船只预警"; public static final String SAND_SHIP_WARN_BILL_TYPE = "采区船只报警";
/**
* 许可证船只进入告警区指标-进入告警区
*/
public static final String SAND_SHIP_WARN_TARGET_ENTER_WARNING_AREA = "进入告警区";
/**
* 许可证船只进入告警区指标-非作业时间进入采砂区
*/
public static final String SAND_SHIP_WARN_TARGET_NO_OPERATING_HOURS = "非作业时间进入采砂区";
} }
package com.xyst.dinas.biz.warn.dao; package com.xyst.dinas.biz.warn.dao;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.persistence.Tuple; import javax.persistence.Tuple;
import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.basis.util.JsonUtil;
import com.xyst.dinas.biz.constant.SandMiningAreaConstant;
import com.xyst.dinas.biz.enumeration.WarnStateEnum;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.criterion.*;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateCallback; import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.orm.hibernate5.HibernateOperations; import org.springframework.orm.hibernate5.HibernateOperations;
...@@ -24,179 +28,241 @@ import com.xyst.dinas.biz.warn.WarnExeRecord; ...@@ -24,179 +28,241 @@ import com.xyst.dinas.biz.warn.WarnExeRecord;
import com.xyst.dinas.biz.warn.WarnSetting; import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.WarnSettingConstant; import com.xyst.dinas.biz.warn.WarnSettingConstant;
import com.xyst.dinas.biz.warn.WarnSettingEntity; import com.xyst.dinas.biz.warn.WarnSettingEntity;
import org.springframework.util.CollectionUtils;
@Repository @Repository
public class WarnSettingDao { public class WarnSettingDao {
@Autowired @Autowired
private HibernateOperations template; private HibernateOperations template;
public UUID create(KObject kObject) { public UUID create(KObject kObject) {
return (UUID) template.save(kObject.getType().getName(), kObject); return (UUID) template.save(kObject.getType().getName(), kObject);
} }
public void update(KObject kobject) { public void update(KObject kobject) {
template.update(kobject.getType().getName(), kobject); template.update(kobject.getType().getName(), kobject);
} }
public KObject queryWarnSettingById(UUID id) { public KObject queryWarnSettingById(UUID id) {
return (KObject) template.get(WarnSettingConstant.ENTITY_WARNSETTING, id); return (KObject) template.get(WarnSettingConstant.ENTITY_WARNSETTING, id);
} }
public KObject queryWarningExeById(UUID id) { public KObject queryWarningExeById(UUID id) {
return (KObject) template.get(WarnSettingConstant.ENTITY_WARNINGEXE, id); return (KObject) template.get(WarnSettingConstant.ENTITY_WARNINGEXE, id);
} }
/** /**
* 将一条预警执行记录改为结束状态 * 将一条预警执行记录改为结束状态
* @param warnRecord *
*/ * @param warnRecord
public void endWarnRecordState(KObject warnRecord) { */
if(warnRecord==null) return; public void endWarnRecordState(KObject warnRecord) {
LocalDateTime now = LocalDateTime.now(); if (warnRecord == null) return;
warnRecord.set(WarnSettingConstant.END_TIME, now); LocalDateTime now = LocalDateTime.now();
warnRecord.set(WarnSettingConstant.RECENTLY_TIME, now); warnRecord.set(WarnSettingConstant.END_TIME, now);
update(warnRecord); warnRecord.set(WarnSettingConstant.RECENTLY_TIME, now);
} warnRecord.set(WarnSettingConstant.WARN_STATE, WarnStateEnum.OVER.getValue() + "");
update(warnRecord);
}
public WarnSetting getWarnSetting(UUID warnSettingId) {
KObject warnSetting = queryWarnSettingById(warnSettingId);
return warnSettingToEntity(warnSetting); public WarnSetting getWarnSetting(UUID warnSettingId) {
} KObject warnSetting = queryWarnSettingById(warnSettingId);
return warnSettingToEntity(warnSetting);
public WarnSetting getWarnSetting(String billType, UUID billId, String target) { }
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNSETTING + " where billType =:billType"; public WarnSetting getWarnSetting(String billType, UUID billId, String target) {
return template.execute(session -> { String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNSETTING + " where billType =:billType";
StringBuilder hql = new StringBuilder(QUERY_HQL); return template.execute(session -> {
if(billId!=null) hql.append(" and billId =:billId");
if(target!=null) hql.append(" and target =:target"); StringBuilder hql = new StringBuilder(QUERY_HQL);
if (billId != null) hql.append(" and billId =:billId");
Query<KObject> query = session.createQuery(hql.toString(), KObject.class);//KObject if (target != null) hql.append(" and target =:target");
query.setParameter("billType", billType);
if(billId!=null) query.setParameter("billId", billId); Query<KObject> query = session.createQuery(hql.toString(), KObject.class);//KObject
if(target!=null) query.setParameter("target", target); query.setParameter("billType", billType);
KObject singleResult = query.getSingleResult(); if (billId != null) query.setParameter("billId", billId);
return warnSettingToEntity(singleResult); if (target != null) query.setParameter("target", target);
}); Optional<KObject> kObject = query.uniqueResultOptional();
} return warnSettingToEntity(kObject.orElse(null));
});
private WarnSetting warnSettingToEntity(KObject singleResult) { }
if(singleResult==null) return null;
UUID settingId = singleResult.getUuid("id"); private WarnSetting warnSettingToEntity(KObject singleResult) {
UUID billId = singleResult.getUuid("billId"); if (singleResult == null) return null;
String billType = singleResult.getString("billType"); UUID settingId = singleResult.getUuid("id");
String target = singleResult.getString("target"); UUID billId = singleResult.getUuid("billId");
String max = singleResult.getString("max"); String billType = singleResult.getString("billType");
String min = singleResult.getString("min"); String target = singleResult.getString("target");
String personnel = singleResult.getString("personnel"); String max = singleResult.getString("max");
boolean isOpen = singleResult.getBoolean("isOpen"); String min = singleResult.getString("min");
String memo = singleResult.getString("memo"); String personnel = singleResult.getString("personnel");
boolean isOpen = singleResult.getBoolean("isOpen");
WarnSettingEntity warnSettingEntity = new WarnSettingEntity(); String memo = singleResult.getString("memo");
warnSettingEntity.setBillType(billType);
warnSettingEntity.setBillId(billId); WarnSettingEntity warnSettingEntity = new WarnSettingEntity();
warnSettingEntity.setTarget(target); warnSettingEntity.setBillType(billType);
warnSettingEntity.setSettingId(settingId); warnSettingEntity.setBillId(billId);
warnSettingEntity.setMin(min); warnSettingEntity.setTarget(target);
warnSettingEntity.setMax(max); warnSettingEntity.setSettingId(settingId);
warnSettingEntity.setOpen(isOpen); warnSettingEntity.setMin(min);
warnSettingEntity.setMemo(memo); warnSettingEntity.setMax(max);
warnSettingEntity.setOpen(isOpen);
String[] personnelArray= personnel!=null && !personnel.isEmpty()?personnel.split(","):null; warnSettingEntity.setMemo(memo);
warnSettingEntity.setPersonnel(personnelArray);
return warnSettingEntity; String[] personnelArray = personnel != null && !personnel.isEmpty() ? personnel.split(",") : null;
} warnSettingEntity.setPersonnel(personnelArray);
return warnSettingEntity;
/** }
* 通过预警设置ID查询一条未结束的预警执行记录
* @param warnSettingId /**
* @return * 通过预警设置ID查询一条未结束的预警执行记录
*/ *
public KObject queryWarnExeRecordBySettingId(UUID warnSettingId) { * @param warnSettingId
* @return
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNINGEXE + " where endTime is null and warnSetting.id =:warnSettingId"; */
public KObject queryWarnExeRecordBySettingId(UUID warnSettingId) {
return template.execute(session -> {
String QUERY_HQL = " from " + WarnSettingConstant.ENTITY_WARNINGEXE + " where endTime is null and warnSetting.id =:warnSettingId";
Query<KObject> query = session.createQuery(QUERY_HQL, KObject.class);
query.setParameter("warnSettingId", warnSettingId); return template.execute(session -> {
List<KObject> resultList = query.getResultList();
if (resultList.isEmpty()) return null; Query<KObject> query = session.createQuery(QUERY_HQL, KObject.class);
return resultList.get(0); query.setParameter("warnSettingId", warnSettingId);
}); List<KObject> resultList = query.getResultList();
} if (resultList.isEmpty()) return null;
return resultList.get(0);
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) { });
}
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNINGEXE + " where endTime is null and warnSetting.id =:warnSettingId";
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) {
return template.execute(session -> {
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNINGEXE + " where endTime is null and warnSetting.id =:warnSettingId";
Query<KObject> query = session.createQuery(QUERY_HQL, KObject.class);
query.setParameter("warnSettingId", warnSettingId); return template.execute(session -> {
List<KObject> resultList = query.getResultList();
if (resultList.isEmpty()) return null; Query<KObject> query = session.createQuery(QUERY_HQL, KObject.class);
KObject singleResult = resultList.get(0); query.setParameter("warnSettingId", warnSettingId);
List<KObject> resultList = query.getResultList();
Date startTime = singleResult.getDate("startTime"); if (resultList.isEmpty()) return null;
Date endTime = singleResult.getDate("endTime"); KObject singleResult = resultList.get(0);
Date recentlyTime = singleResult.getDate("recentlyTime");
String max = singleResult.getString("max"); Date startTime = singleResult.getDate("startTime");
String min = singleResult.getString("min"); Date endTime = singleResult.getDate("endTime");
String message = singleResult.getString("message"); Date recentlyTime = singleResult.getDate("recentlyTime");
String memo = singleResult.getString("memo"); String max = singleResult.getString("max");
String target = singleResult.getString("target"); String min = singleResult.getString("min");
UUID billId = singleResult.getUuid("billId"); String message = singleResult.getString("message");
UUID id = singleResult.getUuid("id"); String memo = singleResult.getString("memo");
Long version = singleResult.getLong("version"); String target = singleResult.getString("target");
UUID billId = singleResult.getUuid("billId");
WarnExeRecord warnExeRecord = new WarnExeRecord(); UUID id = singleResult.getUuid("id");
warnExeRecord.setStartTime(startTime); Long version = singleResult.getLong("version");
warnExeRecord.setEndTime(endTime);
warnExeRecord.setRecentlyTime(recentlyTime); WarnExeRecord warnExeRecord = new WarnExeRecord();
warnExeRecord.setWarnSettingId(warnSettingId); warnExeRecord.setStartTime(startTime);
warnExeRecord.setMax(max); warnExeRecord.setEndTime(endTime);
warnExeRecord.setMin(min); warnExeRecord.setRecentlyTime(recentlyTime);
warnExeRecord.setMessage(message); warnExeRecord.setWarnSettingId(warnSettingId);
warnExeRecord.setMemo(memo); warnExeRecord.setMax(max);
warnExeRecord.setTarget(target); warnExeRecord.setMin(min);
warnExeRecord.setBillId(billId); warnExeRecord.setMessage(message);
warnExeRecord.setWarnState("warnState"); warnExeRecord.setMemo(memo);
warnExeRecord.setId(id); warnExeRecord.setTarget(target);
warnExeRecord.setVersion(version); warnExeRecord.setBillId(billId);
warnExeRecord.setWarnState("warnState");
return warnExeRecord; warnExeRecord.setId(id);
}); warnExeRecord.setVersion(version);
}
return warnExeRecord;
private static final String queryWarnSettingStaffSql = "SELECT DISTINCT(GROUP_CONCAT(personnel)) FROM xyst_dinas_warn_setting WHERE HEX(bill_id) =:contractId"; });
}
public List<String> queryWarnSettingStaffByContractId(String contractId) {
return template.execute(new HibernateCallback<List<String>>() { private static final String queryWarnSettingStaffSql = "SELECT DISTINCT(GROUP_CONCAT(personnel)) FROM xyst_dinas_warn_setting WHERE HEX(bill_id) =:contractId";
public List<String> queryWarnSettingStaffByContractId(String contractId) {
return template.execute(new HibernateCallback<List<String>>() {
//List<UUID> uuids = new ArrayList<>(); //List<UUID> uuids = new ArrayList<>();
List<String> personnelIdList = new ArrayList<>(); List<String> personnelIdList = new ArrayList<>();
@Override
public List<String> doInHibernate(Session session) throws HibernateException {
//List<Tuple> uuids1 = session.createSQLQuery(queryStaffSql).addEntity(Tuple.class).setParameter("postId", postId).list();
Query<Tuple> query = session.createNativeQuery(queryWarnSettingStaffSql, Tuple.class);
query.setParameter("contractId", contractId.replaceAll("-", ""));
List<Tuple> result = query.getResultList();
for (Tuple tuple : result) {
String personnelIds = tuple.get(0, String.class);
if (StringUtils.isNotEmpty(personnelIds)) {
personnelIdList = Arrays.asList(personnelIds.split(","));
}
//uuids.add(Convert.toUUID(tuple.get(0)));
}
List<String> collect = personnelIdList.stream().distinct().collect(Collectors.toList());
return collect;
}
});
}
@Override
public List<String> doInHibernate(Session session) throws HibernateException {
//List<Tuple> uuids1 = session.createSQLQuery(queryStaffSql).addEntity(Tuple.class).setParameter("postId", postId).list();
Query<Tuple> query = session.createNativeQuery(queryWarnSettingStaffSql, Tuple.class);
query.setParameter("contractId", contractId.replaceAll("-", ""));
List<Tuple> result = query.getResultList();
for (Tuple tuple : result) {
String personnelIds = tuple.get(0, String.class);
if (StringUtils.isNotEmpty(personnelIds)) {
personnelIdList = Arrays.asList(personnelIds.split(","));
}
//uuids.add(Convert.toUUID(tuple.get(0)));
}
List<String> collect = personnelIdList.stream().distinct().collect(Collectors.toList());
return collect;
}
});
}
public HashMap<String, Object> warnRecodeGroupInfo(List<UUID> regionalCompanyIds, List<String> targets) {
KClass bean = Amino.getStaticMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNINGEXE, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
addFilters(regionalCompanyIds, targets, detachedCriteria);
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
//查询预警类型条数
detachedCriteria.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.count("target"), "targetCount"))
.add(Projections.alias(Projections.groupProperty("target"), "target")));
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<?> byCriteria = template.findByCriteria(detachedCriteria);
for (Object byCriterion : byCriteria) {
if(byCriterion instanceof HashMap){
HashMap<String, Object> byCriterion1 = (HashMap<String, Object>) byCriterion;
stringObjectHashMap.put(byCriterion1.get("target").toString(),byCriterion1.get("targetCount"));
}
}
//查询预警状态条数
DetachedCriteria detachedCriteria1 = DetachedCriteria.forEntityName(bean.getName());
addFilters(regionalCompanyIds, targets, detachedCriteria1);
detachedCriteria1.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.count("warnState"), "warnStateCount"))
.add(Projections.alias(Projections.groupProperty("warnState"), "warnStateValue")));
detachedCriteria1.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<?> byCriteria1 = template.findByCriteria(detachedCriteria1);
for (Object byCriterion : byCriteria1) {
if(byCriterion instanceof HashMap){
HashMap<String, Object> byCriterion1 = (HashMap<String, Object>) byCriterion;
stringObjectHashMap.put(byCriterion1.get("warnStateValue").toString(),byCriterion1.get("warnStateCount"));
}
}
//查询总条数
DetachedCriteria detachedCriteria2 = DetachedCriteria.forEntityName(bean.getName());
addFilters(regionalCompanyIds, targets, detachedCriteria2);
detachedCriteria2.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.rowCount(), "sumCount")));
detachedCriteria2.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<HashMap<String,Object>> byCriteria2 = (List<HashMap<String,Object>>)template.findByCriteria(detachedCriteria2);
stringObjectHashMap.put("sumCount",byCriteria2.get(0).get("sumCount"));
return stringObjectHashMap;
}
private void addFilters(List<UUID> regionalCompanyIds, List<String> targets, DetachedCriteria detachedCriteria) {
if(!CollectionUtils.isEmpty(targets)){
detachedCriteria.add(Restrictions.in("target", targets));
}
if(!CollectionUtils.isEmpty(regionalCompanyIds)) {
Disjunction dis = Restrictions.disjunction();
detachedCriteria.createAlias("warnSetting","warnSetting");
for (UUID regionalCompanyId : regionalCompanyIds) {
dis.add(Restrictions.like("warnSetting.memo", regionalCompanyId.toString(),MatchMode.ANYWHERE));
}
detachedCriteria.add(dis);
}
}
} }
package com.xyst.dinas.biz.warn.service; package com.xyst.dinas.biz.warn.service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
...@@ -19,8 +20,10 @@ public interface IWarningSettingService { ...@@ -19,8 +20,10 @@ public interface IWarningSettingService {
* @return * @return
*/ */
public UUID insertWarnSetting(WarnSetting warnSetting) ; public UUID insertWarnSetting(WarnSetting warnSetting) ;
WarnSetting getWarnSetting(@NonNull UUID warnSettingId); void endWarnStateBySettingId(UUID warnSettingId);
WarnSetting getWarnSetting(@NonNull UUID warnSettingId);
WarnSetting getWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target); WarnSetting getWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target);
/** /**
...@@ -35,6 +38,17 @@ public interface IWarningSettingService { ...@@ -35,6 +38,17 @@ public interface IWarningSettingService {
* @param warnSetting * @param warnSetting
*/ */
void updateWarnSetting(UpdateWarnSetting warnSetting); void updateWarnSetting(UpdateWarnSetting warnSetting);
/**
* 删除预警设置
* @param warnSettingId
*/
void deleteWarnSetting(@NonNull UUID warnSettingId);
/**
* 删除预警设置
*/
void deleteWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target);
/***************************************/ /***************************************/
...@@ -57,6 +71,9 @@ public interface IWarningSettingService { ...@@ -57,6 +71,9 @@ public interface IWarningSettingService {
* @return * @return
*/ */
List<WarnExeRecord> queryWarnExeRecords(UUID warnSettingId); List<WarnExeRecord> queryWarnExeRecords(UUID warnSettingId);
void ignoreWarnExeRecord(UUID id);
HashMap<String, Object> warnRecodeGroupInfo(List<UUID> regionalCompanyIds, List<String> targets);
} }
package com.xyst.dinas.biz.warn.service; package com.xyst.dinas.biz.warn.service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import com.xyst.dinas.biz.enumeration.WarnStateEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -36,6 +38,8 @@ public class WarningSettingServiceImpl implements IWarningSettingService{ ...@@ -36,6 +38,8 @@ public class WarningSettingServiceImpl implements IWarningSettingService{
JsonNode json = JSONObjectUtils.toJson(warnSetting); JsonNode json = JSONObjectUtils.toJson(warnSetting);
KObject object = JSONObjectUtils.toObject(json, type); KObject object = JSONObjectUtils.toObject(json, type);
object.set(BaseConstants.CREATE_TIME, LocalDateTime.now()); object.set(BaseConstants.CREATE_TIME, LocalDateTime.now());
object.set(BaseConstants.DEL,false);
object.set(BaseConstants.DISCARD,false);
return warnSettingDao.create(object); return warnSettingDao.create(object);
} }
...@@ -62,7 +66,8 @@ public class WarningSettingServiceImpl implements IWarningSettingService{ ...@@ -62,7 +66,8 @@ public class WarningSettingServiceImpl implements IWarningSettingService{
* 结束一条预警设置的预警执行记录 * 结束一条预警设置的预警执行记录
* @param warnSettingId * @param warnSettingId
*/ */
public void endWarnStateBySettingId(UUID warnSettingId) { @Override
public void endWarnStateBySettingId(UUID warnSettingId) {
KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId); KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId);
warnSettingDao.endWarnRecordState(warnExeRecord); warnSettingDao.endWarnRecordState(warnExeRecord);
...@@ -88,7 +93,19 @@ public class WarningSettingServiceImpl implements IWarningSettingService{ ...@@ -88,7 +93,19 @@ public class WarningSettingServiceImpl implements IWarningSettingService{
return null; return null;
} }
@Override @Override
public void ignoreWarnExeRecord(UUID id) {
KObject kObject = warnSettingDao.queryWarningExeById(id);
kObject.set(WarnSettingConstant.WARN_STATE, WarnStateEnum.IGNORE.getValue()+"");
warnSettingDao.update(kObject);
}
@Override
public HashMap<String, Object> warnRecodeGroupInfo(List<UUID> regionalCompanyIds, List<String> targets) {
return warnSettingDao.warnRecodeGroupInfo(regionalCompanyIds,targets);
}
@Override
public void updateWarnExe(WarnExeRecord warnExeRecord) { public void updateWarnExe(WarnExeRecord warnExeRecord) {
KClass type = Amino.getApplicationMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNINGEXE, KClass.class); KClass type = Amino.getApplicationMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNINGEXE, KClass.class);
JsonNode json = JSONObjectUtils.toJson(warnExeRecord); JsonNode json = JSONObjectUtils.toJson(warnExeRecord);
...@@ -126,12 +143,41 @@ public class WarningSettingServiceImpl implements IWarningSettingService{ ...@@ -126,12 +143,41 @@ public class WarningSettingServiceImpl implements IWarningSettingService{
warSettingIdObj.set("min", min); warSettingIdObj.set("min", min);
String max = warnSetting.getMax(); String max = warnSetting.getMax();
warSettingIdObj.set("max", max); warSettingIdObj.set("max", max);
warnSettingDao.update(warSettingIdObj); warnSettingDao.update(warSettingIdObj);
} }
/**
private String UuidListToString(List<UUID> uuids) { * 删除预警设置
*
* @param warnSettingId
*/
@Override
public void deleteWarnSetting(UUID warnSettingId) {
KObject kObject = warnSettingDao.queryWarnSettingById(warnSettingId);
kObject.set("del",true);
kObject.set("discard",true);
warnSettingDao.update(kObject);
}
/**
* 删除预警设置
*
* @param billType
* @param billId
* @param target
*/
@Override
public void deleteWarnSetting(String billType, UUID billId, String target) {
WarnSetting warnSetting = warnSettingDao.getWarnSetting(billType, billId, target);
KObject kObject = warnSettingDao.queryWarnSettingById(warnSetting.getSettingId());
kObject.set("del",true);
kObject.set("discard",true);
warnSettingDao.update(kObject);
}
private String UuidListToString(List<UUID> uuids) {
StringBuilder str = new StringBuilder(); StringBuilder str = new StringBuilder();
for (int i = 0; i < uuids.size(); i++) { for (int i = 0; i < uuids.size(); i++) {
if (i == uuids.size() - 1) { if (i == uuids.size() - 1) {
......
...@@ -133,6 +133,26 @@ public class DinasCommonController { ...@@ -133,6 +133,26 @@ public class DinasCommonController {
* @param date * @param date
* @return * @return
*/ */
@GetMapping("/sand/user/planningCycleObj/{planningCycle}/{date}")
public KObject getPlanningCycleObjBySand(@PathVariable String planningCycle,@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
PlanningCycleEnum planningCycleType = null;
if (PlanningCycleEnum.DAY.name().equalsIgnoreCase(planningCycle)) {
planningCycleType = PlanningCycleEnum.DAY;
}else if (PlanningCycleEnum.WEEK.name().equalsIgnoreCase(planningCycle)) {
planningCycleType = PlanningCycleEnum.WEEK;
}else {
return null;
}
return planningCycleService.getPlanningCycleObj(planningCycleType, date);
}
/**
* 获取指定日期和计划周期类型的计划周期实体
* @param planningCycleType 计划周期
* @param date
* @return
*/
@GetMapping("/planningCycleObj/{planningCycle}/{date}") @GetMapping("/planningCycleObj/{planningCycle}/{date}")
public KObject getPlanningCycleObj(@PathVariable String planningCycle,@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { public KObject getPlanningCycleObj(@PathVariable String planningCycle,@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
......
...@@ -119,11 +119,11 @@ public class SandMiningAreaController { ...@@ -119,11 +119,11 @@ public class SandMiningAreaController {
return ResponseObj.success("预警设置更新成功"); return ResponseObj.success("预警设置更新成功");
} }
//更新预警设置 //忽略预警记录
@GetMapping("/warnRecode/ignore")//采区预警设置更新 @GetMapping("/warnRecode/ignore")
public ResponseObj ignoreWarnExe(UUID id) { public ResponseObj ignoreWarnExe(@RequestParam("id")UUID id) {
warningSettingService.queryWarnExeRecord(id); warningSettingService.ignoreWarnExeRecord(id);
return ResponseObj.success("预警设置更新成功"); return ResponseObj.success("忽略成功");
} }
......
...@@ -5,6 +5,8 @@ import java.util.ArrayList; ...@@ -5,6 +5,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -36,6 +38,12 @@ import com.beecode.bcp.biz.BusinessException; ...@@ -36,6 +38,12 @@ import com.beecode.bcp.biz.BusinessException;
import com.beecode.bcp.query.scene.ScenePrecidate; import com.beecode.bcp.query.scene.ScenePrecidate;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils; import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.common.BatchDeleteItem;
import com.beecode.inz.common.BatchDiscardItem;
import com.beecode.inz.common.BatchUpdatePICItem;
import com.beecode.inz.common.enumeration.BatchOperationEnum;
import com.beecode.inz.common.service.CommonService;
import com.beecode.inz.common.service.FollowerService;
import com.beecode.inz.query.define.QueryDefinition; import com.beecode.inz.query.define.QueryDefinition;
import com.beecode.inz.query.entity.PaginationResult; import com.beecode.inz.query.entity.PaginationResult;
import com.beecode.inz.query.exception.QueryException; import com.beecode.inz.query.exception.QueryException;
...@@ -61,6 +69,15 @@ public class SandQueryController { ...@@ -61,6 +69,15 @@ public class SandQueryController {
private PrivilegeService privilegeService; private PrivilegeService privilegeService;
@Autowired @Autowired
private HttpServletRequest request;
@Autowired
private CommonService commonService;
@Autowired
private FollowerService followerService;
@Autowired
MultipartProperties multipartProperties; MultipartProperties multipartProperties;
...@@ -69,6 +86,95 @@ public class SandQueryController { ...@@ -69,6 +86,95 @@ public class SandQueryController {
private static final ObjectMapper OBJECTMAPPER = new ObjectMapper(); private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();
@ResponseBody @ResponseBody
@RequestMapping(value = "/sand/user/common/batch", method = RequestMethod.PUT)
public void batchOperation(@RequestBody String body){
String operation = request.getHeader("operation");
BatchOperationEnum oper = null;
try {
oper = BatchOperationEnum.valueOf(operation.toUpperCase());
} catch (Exception e) {
logger.error("not support common batch operation,operation: {}", operation);
throw new UnsupportedOperationException("not support common batch operation,operation: " + operation);
}
switch (oper) {
case BATCH_UPDATE_PIC:
BatchUpdatePICItem[] batchUpdatePICs = handleBatchUpdatePICInputs(body);
commonService.batchUpdatePIC(batchUpdatePICs);
//如果负责人已经在相关团队里面了,从相关团队里面移除
for (BatchUpdatePICItem batchUpdatePICItem : batchUpdatePICs) {
UUID[] entityIds = batchUpdatePICItem.getIds();
for (UUID entityID : entityIds) {
followerService.removeStaff(batchUpdatePICItem.getDatamodelName(), entityID, batchUpdatePICItem.getPic().getId());
}
}
return;
case BATCH_DISCARD:
BatchDiscardItem[] batchDiscards = handleBatchDiscardInputs(body);
commonService.batchDiscard(batchDiscards);
return;
case BATCH_DELETE:
BatchDeleteItem[] batchDeletes = handleBatchDeleteInputs(body);
commonService.batchDelete(batchDeletes);
return;
default:
logger.error("not support common batch operation,operation: {}", operation);
throw new UnsupportedOperationException("not support common batch operation,operation: " + operation);
}
}
private BatchUpdatePICItem[] handleBatchUpdatePICInputs(String body){
try{
List<BatchUpdatePICItem> list = new ArrayList<BatchUpdatePICItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch update PIC items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchUpdatePICItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchUpdatePICItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
private BatchDiscardItem[] handleBatchDiscardInputs(String body){
try{
List<BatchDiscardItem> list = new ArrayList<BatchDiscardItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch discard items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchDiscardItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchDiscardItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
private BatchDeleteItem[] handleBatchDeleteInputs(String body) {
try{
List<BatchDeleteItem> list = new ArrayList<BatchDeleteItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch delete items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchDeleteItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchDeleteItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
@ResponseBody
@RequestMapping(value="/sand/user/common/config/getMaxFileSize", method = RequestMethod.GET, consumes = "application/json") @RequestMapping(value="/sand/user/common/config/getMaxFileSize", method = RequestMethod.GET, consumes = "application/json")
public String getMaxFileSize() { public String getMaxFileSize() {
JSONObject o = new JSONObject(); JSONObject o = new JSONObject();
......
...@@ -5,6 +5,8 @@ import java.util.ArrayList; ...@@ -5,6 +5,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -36,6 +38,12 @@ import com.beecode.bcp.biz.BusinessException; ...@@ -36,6 +38,12 @@ import com.beecode.bcp.biz.BusinessException;
import com.beecode.bcp.query.scene.ScenePrecidate; import com.beecode.bcp.query.scene.ScenePrecidate;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils; import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.common.BatchDeleteItem;
import com.beecode.inz.common.BatchDiscardItem;
import com.beecode.inz.common.BatchUpdatePICItem;
import com.beecode.inz.common.enumeration.BatchOperationEnum;
import com.beecode.inz.common.service.CommonService;
import com.beecode.inz.common.service.FollowerService;
import com.beecode.inz.query.define.QueryDefinition; import com.beecode.inz.query.define.QueryDefinition;
import com.beecode.inz.query.entity.PaginationResult; import com.beecode.inz.query.entity.PaginationResult;
import com.beecode.inz.query.exception.QueryException; import com.beecode.inz.query.exception.QueryException;
...@@ -61,6 +69,15 @@ public class WarehouseQueryController { ...@@ -61,6 +69,15 @@ public class WarehouseQueryController {
private PrivilegeService privilegeService; private PrivilegeService privilegeService;
@Autowired @Autowired
private HttpServletRequest request;
@Autowired
private CommonService commonService;
@Autowired
private FollowerService followerService;
@Autowired
MultipartProperties multipartProperties; MultipartProperties multipartProperties;
...@@ -69,6 +86,95 @@ public class WarehouseQueryController { ...@@ -69,6 +86,95 @@ public class WarehouseQueryController {
private static final ObjectMapper OBJECTMAPPER = new ObjectMapper(); private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();
@ResponseBody @ResponseBody
@RequestMapping(value = "/warehouse/api/common/batch", method = RequestMethod.PUT)
public void batchOperation(@RequestBody String body){
String operation = request.getHeader("operation");
BatchOperationEnum oper = null;
try {
oper = BatchOperationEnum.valueOf(operation.toUpperCase());
} catch (Exception e) {
logger.error("not support common batch operation,operation: {}", operation);
throw new UnsupportedOperationException("not support common batch operation,operation: " + operation);
}
switch (oper) {
case BATCH_UPDATE_PIC:
BatchUpdatePICItem[] batchUpdatePICs = handleBatchUpdatePICInputs(body);
commonService.batchUpdatePIC(batchUpdatePICs);
//如果负责人已经在相关团队里面了,从相关团队里面移除
for (BatchUpdatePICItem batchUpdatePICItem : batchUpdatePICs) {
UUID[] entityIds = batchUpdatePICItem.getIds();
for (UUID entityID : entityIds) {
followerService.removeStaff(batchUpdatePICItem.getDatamodelName(), entityID, batchUpdatePICItem.getPic().getId());
}
}
return;
case BATCH_DISCARD:
BatchDiscardItem[] batchDiscards = handleBatchDiscardInputs(body);
commonService.batchDiscard(batchDiscards);
return;
case BATCH_DELETE:
BatchDeleteItem[] batchDeletes = handleBatchDeleteInputs(body);
commonService.batchDelete(batchDeletes);
return;
default:
logger.error("not support common batch operation,operation: {}", operation);
throw new UnsupportedOperationException("not support common batch operation,operation: " + operation);
}
}
private BatchUpdatePICItem[] handleBatchUpdatePICInputs(String body){
try{
List<BatchUpdatePICItem> list = new ArrayList<BatchUpdatePICItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch update PIC items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchUpdatePICItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchUpdatePICItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
private BatchDiscardItem[] handleBatchDiscardInputs(String body){
try{
List<BatchDiscardItem> list = new ArrayList<BatchDiscardItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch discard items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchDiscardItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchDiscardItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
private BatchDeleteItem[] handleBatchDeleteInputs(String body) {
try{
List<BatchDeleteItem> list = new ArrayList<BatchDeleteItem>();
JSONArray arr = new JSONArray(body);
if(arr.length() == 0){
throw new RuntimeException("batch delete items must not be 0!");
}
for(int i = 0; i < arr.length(); i ++){
list.add(new BatchDeleteItem(arr.getJSONObject(i)));
};
return list.toArray(new BatchDeleteItem[0]);
}catch(Exception e){
logger.error("illegal Argument,body: {}", body);
throw new IllegalArgumentException("illegal Argument,body: " + body, e);
}
}
@ResponseBody
@RequestMapping(value="/warehouse/api/common/config/getMaxFileSize", method = RequestMethod.GET, consumes = "application/json") @RequestMapping(value="/warehouse/api/common/config/getMaxFileSize", method = RequestMethod.GET, consumes = "application/json")
public String getMaxFileSize() { public String getMaxFileSize() {
JSONObject o = new JSONObject(); JSONObject o = new JSONObject();
......
package com.xyst.dinas.biz.web; package com.xyst.dinas.biz.web;
import java.util.UUID; import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import org.json.JSONObject; import com.xyst.dinas.biz.warn.service.IWarningSettingService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.beecode.bcp.type.KObject; import java.util.HashMap;
import com.xyst.dinas.biz.request.UpdateWarnSetting; import java.util.List;
import com.xyst.dinas.biz.warn.service.IWarningSettingService; import java.util.UUID;
/** /**
* 预警 * 预警
...@@ -42,6 +41,16 @@ public class WarnSettingController { ...@@ -42,6 +41,16 @@ public class WarnSettingController {
Assert.notNull(id,"The id must not be null"); Assert.notNull(id,"The id must not be null");
return warningSettingService.queryWarnSettingById(id); return warningSettingService.queryWarnSettingById(id);
} }
//查询预警汇总信息
@GetMapping("/warnRecode/groupInfo")
public ResponseObj groupInfo(@RequestParam(name = "regionalCompanyIds") List<UUID> regionalCompanyIds, @RequestParam(name = "targets")List<String> targets) {
HashMap<String,Object> groupInfo = warningSettingService.warnRecodeGroupInfo(regionalCompanyIds,targets);
return ResponseObj.success("查询成功", groupInfo);
}
} }
...@@ -46,6 +46,15 @@ ...@@ -46,6 +46,15 @@
</ref> </ref>
<description></description> <description></description>
</field> </field>
<field title='业务类型'>
<name>billType</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='预警指标'> <field title='预警指标'>
<name>target</name> <name>target</name>
<type>string</type> <type>string</type>
......
...@@ -60,6 +60,16 @@ ...@@ -60,6 +60,16 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>billType</m:name>
<m:title>业务类型</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>target</m:name> <m:name>target</m:name>
<m:title>预警指标</m:title> <m:title>预警指标</m:title>
<m:type>string</m:type> <m:type>string</m:type>
......
...@@ -2,16 +2,20 @@ package com.xyst.dinas.production.internal.service; ...@@ -2,16 +2,20 @@ package com.xyst.dinas.production.internal.service;
import com.beecode.bap.attachment.common.Page; import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.common.util.DateTimeUtils;
import com.beecode.util.DateUtil;
import com.xyst.dinas.biz.constant.SandMiningAreaConstant; import com.xyst.dinas.biz.constant.SandMiningAreaConstant;
import com.xyst.dinas.biz.dao.ShipInfoDao; import com.xyst.dinas.biz.dao.ShipInfoDao;
import com.xyst.dinas.biz.dao.StationDao; import com.xyst.dinas.biz.dao.StationDao;
import com.xyst.dinas.biz.warn.BaseBusinessWarn; import com.xyst.dinas.biz.warn.BaseBusinessWarn;
import com.xyst.dinas.biz.warn.SandAreaDinasCountWarningCalculate; import com.xyst.dinas.biz.warn.SandAreaDinasCountWarningCalculate;
import com.xyst.dinas.biz.warn.WarnSettingConstant;
import com.xyst.dinas.biz.warn.service.IWarningSettingService; import com.xyst.dinas.biz.warn.service.IWarningSettingService;
import com.xyst.dinas.production.dao.DischargingDao; import com.xyst.dinas.production.dao.DischargingDao;
import com.xyst.dinas.production.enumeration.DischargingTypeEnum; import com.xyst.dinas.production.enumeration.DischargingTypeEnum;
import com.xyst.dinas.production.service.DischargingService; import com.xyst.dinas.production.service.DischargingService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -22,36 +26,36 @@ import java.util.UUID; ...@@ -22,36 +26,36 @@ import java.util.UUID;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class DischargingServiceImpl implements DischargingService { public class DischargingServiceImpl implements DischargingService {
@Autowired @Autowired
private DischargingDao dischargingDao; private DischargingDao dischargingDao;
@Autowired @Autowired
private StationDao stationDao; private StationDao stationDao;
@Autowired @Autowired
private IWarningSettingService warningSettingService; private IWarningSettingService warningSettingService;
@Autowired @Autowired
private ShipInfoDao shipInfoDao; private ShipInfoDao shipInfoDao;
@Override @Override
public Page<KObject> queryByPaging(Page<KObject> page, UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID shipId, UUID parentId) throws Exception { public Page<KObject> queryByPaging(Page<KObject> page, UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID shipId, UUID parentId) throws Exception {
if(page.getPageNo()==0||page.getPageSize()==0) { if (page.getPageNo() == 0 || page.getPageSize() == 0) {
throw new Exception("pageSize or offset is null"); throw new Exception("pageSize or offset is null");
} }
return dischargingDao.listDischargingInfoPaging(page,transportShipId,type,startDate,endDate,sandMiningAreaType, stationIds,sandMiningAreaId,shipId, parentId); return dischargingDao.listDischargingInfoPaging(page, transportShipId, type, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, shipId, parentId);
} }
@Override @Override
public KObject validateTimeStationShipArea(UUID sandMiningAreaId, Date date,UUID sandMiningShipId, UUID stationId, UUID id) { public KObject validateTimeStationShipArea(UUID sandMiningAreaId, Date date, UUID sandMiningShipId, UUID stationId, UUID id) {
List<KObject> kObjects = dischargingDao.getByTimeStationShipArea(sandMiningAreaId,sandMiningShipId,stationId,date,id); List<KObject> kObjects = dischargingDao.getByTimeStationShipArea(sandMiningAreaId, sandMiningShipId, stationId, date, id);
if(CollectionUtils.isEmpty(kObjects)){ if (CollectionUtils.isEmpty(kObjects)) {
return null; return null;
} }
return kObjects.get(0); return kObjects.get(0);
} }
@Override @Override
public Object groupInfo( UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID sandMiningShipId, UUID parentId) { public Object groupInfo(UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID sandMiningShipId, UUID parentId) {
return dischargingDao.groupInfo(transportShipId,type,startDate,endDate,sandMiningAreaType, stationIds,sandMiningAreaId,sandMiningShipId, parentId); return dischargingDao.groupInfo(transportShipId, type, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, sandMiningShipId, parentId);
} }
@Override @Override
...@@ -63,38 +67,40 @@ public class DischargingServiceImpl implements DischargingService { ...@@ -63,38 +67,40 @@ public class DischargingServiceImpl implements DischargingService {
UUID sandMiningShip = kObject.get("sandMiningShip").getUuid("id"); UUID sandMiningShip = kObject.get("sandMiningShip").getUuid("id");
KObject sandMiningArea = stationDao.load(SandMiningAreaConstant.ENTITY, sandMiningAreaId); KObject sandMiningArea = stationDao.load(SandMiningAreaConstant.ENTITY, sandMiningAreaId);
Date dischargingTime = kObject.getDate("dischargingTime"); Date dischargingTime = kObject.getDate("dischargingTime");
kObject.set("station",stationDao.load(stationId)); kObject.set("station", stationDao.load(stationId));
kObject.set("sandMiningShip",shipInfoDao.load(sandMiningShip)); kObject.set("sandMiningShip", shipInfoDao.load(sandMiningShip));
kObject.set("sandMiningArea",sandMiningArea); kObject.set("sandMiningArea", sandMiningArea);
if(DischargingTypeEnum.NORMAL_DATA.getValue() ==type){ if (DischargingTypeEnum.NORMAL_DATA.getValue() == type) {
//新增逻辑,如果本月有修正数据,将parentId赋值 //新增逻辑,如果本月有修正数据,将parentId赋值
UUID transportShip = kObject.get("transportShip").getUuid("id"); UUID transportShip = kObject.get("transportShip").getUuid("id");
kObject.set("transportShip",shipInfoDao.load(transportShip)); kObject.set("transportShip", shipInfoDao.load(transportShip));
List<KObject> parents = dischargingDao.getParentByDateAndStationAndSandMiningArea(stationId,sandMiningAreaId,dischargingTime,sandMiningShip,transportShip); List<KObject> parents = dischargingDao.getParentByDateAndStationAndSandMiningArea(stationId, sandMiningAreaId, dischargingTime, sandMiningShip, transportShip);
KObject parent=null; KObject parent = null;
if(parents.size()>0){ if (parents.size() > 0) {
parent= parents.get(0); parent = parents.get(0);
} }
if(null!=parent){ if (null != parent) {
kObject.set("parentId",parent.getUuid("id")); kObject.set("parentId", parent.getUuid("id"));
} }
}else if(DischargingTypeEnum.REVISE_DATA.getValue()==type){ } else if (DischargingTypeEnum.REVISE_DATA.getValue() == type) {
updateToDeleteParentId(kObject.getUuid("id")); updateToDeleteParentId(kObject.getUuid("id"));
//如果是修正记录,则将本采区本场站本采砂船下本月所有数据的parentId改为自己的 //如果是修正记录,则将本采区本场站本采砂船下本月所有数据的parentId改为自己的
dischargingDao.updateSetParentId(kObject); dischargingDao.updateSetParentId(kObject);
} }
UUID uuid = dischargingDao.create(kObject); UUID uuid = dischargingDao.create(kObject);
//生成预警消息的逻辑 //生成预警消息的逻辑 如果是小于当前年份的记录,不生成预警
setWarningRecord("采区超采预警",sandMiningAreaId,"开采量",dischargingTime,sandMiningArea); Boolean ltYear = DateTimeUtils.isLtNowYear(dischargingTime);
if (ltYear) {
setWarningRecord(sandMiningAreaId, dischargingTime, sandMiningArea);
}
return uuid; return uuid;
} }
private void setWarningRecord(UUID billId, Date dischargingTime, KObject sandMiningArea) {
public void setWarningRecord(String billType, UUID billId, String target,Date dischargingTime,KObject sandMiningArea) {
//查询某个采区下某的开采量 //查询某个采区下某的开采量
Double allDischargingWeightByYearAndSandAreaId = dischargingDao.getAllDischargingWeightByYearAndSandAreaId(dischargingTime, billId); Double allDischargingWeightByYearAndSandAreaId = dischargingDao.getAllDischargingWeightByYearAndSandAreaId(dischargingTime, billId);
SandAreaDinasCountWarningCalculate sandAreaDinasCountWarningCalculate = new SandAreaDinasCountWarningCalculate(allDischargingWeightByYearAndSandAreaId, sandMiningArea.getString("sandMiningAreaName")); SandAreaDinasCountWarningCalculate sandAreaDinasCountWarningCalculate = new SandAreaDinasCountWarningCalculate(allDischargingWeightByYearAndSandAreaId, sandMiningArea.getString("sandMiningAreaName"));
BaseBusinessWarn businessWarn = new BaseBusinessWarn(billType, billId, target); BaseBusinessWarn businessWarn = new BaseBusinessWarn(WarnSettingConstant.SAND_MINING_AREA_BILL_TYPE, billId, WarnSettingConstant.SAND_MINING_AREA_WARN_TARGET);
businessWarn.setWarningCalculate(sandAreaDinasCountWarningCalculate); businessWarn.setWarningCalculate(sandAreaDinasCountWarningCalculate);
businessWarn.warn(); businessWarn.warn();
} }
...@@ -107,13 +113,32 @@ public class DischargingServiceImpl implements DischargingService { ...@@ -107,13 +113,32 @@ public class DischargingServiceImpl implements DischargingService {
@Override @Override
public KObject getByCodeNum(String name, UUID id) { public KObject getByCodeNum(String name, UUID id) {
List<KObject> kObjects = dischargingDao.getByCodeNum(name,id); List<KObject> kObjects = dischargingDao.getByCodeNum(name, id);
if(CollectionUtils.isEmpty(kObjects)){ if (CollectionUtils.isEmpty(kObjects)) {
return null; return null;
} }
return kObjects.get(0); return kObjects.get(0);
} }
/**
* 关于预警 修改时可能出现2种情况
* 1.修改接驳时可能出现跨年的情况
* 比如原本1月份的数据修改为12月份,则有可能将1月份的预警记录结束.而12月份新增一条预警记录,
* 又因该类型预警不可生成去年预警.所以只将本年的预警结束.不新增去年预警
* <p>
* 2.修改接驳的采区
* 原本A采区的记录结束预警,B采区新增一条预警
* 判断旧数据
* 组合出现几种情况
* 1.本年 本采区 修改旧数据 修改新数据
* 2.去年 本采区 修改旧数据
* 3.明年 本采区 修改旧数据 修改新数据
* 4.本年 别的采区 修改旧数据 修改新数据
* 5.去年 别的采区 修改旧数据
* 6.明年 别的采区 修改旧数据 修改新数据
*
* @param kObject
*/
@Override @Override
public void update(KObject kObject) { public void update(KObject kObject) {
int type = kObject.getInt("type"); int type = kObject.getInt("type");
...@@ -123,26 +148,37 @@ public class DischargingServiceImpl implements DischargingService { ...@@ -123,26 +148,37 @@ public class DischargingServiceImpl implements DischargingService {
UUID sandMiningShip = kObject.get("sandMiningShip").getUuid("id"); UUID sandMiningShip = kObject.get("sandMiningShip").getUuid("id");
Date dischargingTime = kObject.getDate("dischargingTime"); Date dischargingTime = kObject.getDate("dischargingTime");
kObject.set("station",stationDao.load(stationId)); kObject.set("station", stationDao.load(stationId));
kObject.set("sandMiningShip",shipInfoDao.load(sandMiningShip)); kObject.set("sandMiningShip", shipInfoDao.load(sandMiningShip));
kObject.set("sandMiningArea",stationDao.load(SandMiningAreaConstant.ENTITY,sandMiningAreaId)); KObject sandMiningArea = stationDao.load(SandMiningAreaConstant.ENTITY, sandMiningAreaId);
if(DischargingTypeEnum.NORMAL_DATA.getValue() ==type){ String sandMiningAreaName = sandMiningArea.getString("sandMiningAreaName");
//新增逻辑,如果本月有修正数据,将parentId赋值 kObject.set("sandMiningArea", sandMiningAreaName);
if (DischargingTypeEnum.NORMAL_DATA.getValue() == type) {
//如果本月有修正数据,将parentId赋值
UUID transportShip = kObject.get("transportShip").getUuid("id"); UUID transportShip = kObject.get("transportShip").getUuid("id");
kObject.set("transportShip",shipInfoDao.load(transportShip)); kObject.set("transportShip", shipInfoDao.load(transportShip));
List<KObject> parents = dischargingDao.getParentByDateAndStationAndSandMiningArea(stationId,sandMiningAreaId,dischargingTime,sandMiningShip,transportShip); List<KObject> parents = dischargingDao.getParentByDateAndStationAndSandMiningArea(stationId, sandMiningAreaId, dischargingTime, sandMiningShip, transportShip);
KObject parent=null; KObject parent = null;
if(parents.size()>0){ if (parents.size() > 0) {
parent= parents.get(0); parent = parents.get(0);
} }
if(null!=parent){ if (null != parent) {
kObject.set("parentId",parent.getUuid("id")); kObject.set("parentId", parent.getUuid("id"));
} }
}else if(DischargingTypeEnum.REVISE_DATA.getValue()==type){ } else if (DischargingTypeEnum.REVISE_DATA.getValue() == type) {
//如果是修正记录,则将本采区本场站本采砂船下本月所有数据的parentId改为自己的 //如果是修正记录,则将本采区本场站本采砂船下本月所有数据的parentId改为自己的
dischargingDao.updateSetParentId(kObject); } dischargingDao.updateSetParentId(kObject);
}
dischargingDao.modify(kObject); KObject id = dischargingDao.load(kObject.getUuid("id"));
Date oldDischargingTime = id.getDate("dischargingTime");
KObject oldSandMiningArea = id.get("sandMiningArea");
UUID oldSandMiningAreaId = oldSandMiningArea.getUuid("id");
setWarningRecord(oldSandMiningAreaId, oldDischargingTime, oldSandMiningArea);
if(!DateTimeUtils.isLtNowYear(dischargingTime)){
setWarningRecord(sandMiningAreaId, dischargingTime, sandMiningArea);
}
dischargingDao.modify(kObject);
} }
@Override @Override
......
...@@ -2,6 +2,7 @@ package com.xyst.dinas.production.internal.service; ...@@ -2,6 +2,7 @@ package com.xyst.dinas.production.internal.service;
import com.beecode.bap.attachment.common.Page; import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.WarnSettingConstant; import com.xyst.dinas.biz.warn.WarnSettingConstant;
import com.xyst.dinas.biz.warn.WarnSettingEntity; import com.xyst.dinas.biz.warn.WarnSettingEntity;
import com.xyst.dinas.biz.warn.service.IWarningSettingService; import com.xyst.dinas.biz.warn.service.IWarningSettingService;
...@@ -39,7 +40,7 @@ public class SandMiningServiceImpl implements SandMiningService { ...@@ -39,7 +40,7 @@ public class SandMiningServiceImpl implements SandMiningService {
WarnSettingEntity warnSetting = new WarnSettingEntity(); WarnSettingEntity warnSetting = new WarnSettingEntity();
warnSetting.setBillType(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE); warnSetting.setBillType(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE);
warnSetting.setBillId(uuid); warnSetting.setBillId(uuid);
warnSetting.setTarget("进入告警区"); warnSetting.setTarget(WarnSettingConstant.SAND_SHIP_WARN_TARGET_ENTER_WARNING_AREA);
warnSetting.setOpen(false); warnSetting.setOpen(false);
warnSetting.setMemo(getSandShipInfo(kObject)); warnSetting.setMemo(getSandShipInfo(kObject));
warningSettingService.insertWarnSetting(warnSetting); warningSettingService.insertWarnSetting(warnSetting);
...@@ -47,7 +48,7 @@ public class SandMiningServiceImpl implements SandMiningService { ...@@ -47,7 +48,7 @@ public class SandMiningServiceImpl implements SandMiningService {
WarnSettingEntity warnSetting1 = new WarnSettingEntity(); WarnSettingEntity warnSetting1 = new WarnSettingEntity();
warnSetting1.setBillType(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE); warnSetting1.setBillType(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE);
warnSetting1.setBillId(uuid); warnSetting1.setBillId(uuid);
warnSetting1.setTarget("非作业时间采砂"); warnSetting1.setTarget(WarnSettingConstant.SAND_SHIP_WARN_TARGET_NO_OPERATING_HOURS);
warnSetting1.setOpen(false); warnSetting1.setOpen(false);
warnSetting1.setMemo(getSandShipInfo(kObject)); warnSetting1.setMemo(getSandShipInfo(kObject));
warningSettingService.insertWarnSetting(warnSetting1); warningSettingService.insertWarnSetting(warnSetting1);
...@@ -84,6 +85,23 @@ public class SandMiningServiceImpl implements SandMiningService { ...@@ -84,6 +85,23 @@ public class SandMiningServiceImpl implements SandMiningService {
@Override @Override
public void deleteById(UUID id) { public void deleteById(UUID id) {
sandMiningDao.deleteById(id); sandMiningDao.deleteById(id);
//删除预警设置 结束预警记录
//进入告警区的
WarnSetting warnSetting = warningSettingService.getWarnSetting(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE, id, WarnSettingConstant.SAND_SHIP_WARN_TARGET_ENTER_WARNING_AREA);
if(null!=warnSetting){
warningSettingService.deleteWarnSetting(warnSetting.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting.getSettingId());
}
//非作业时间采砂的
WarnSetting warnSetting1 = warningSettingService.getWarnSetting(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE, id, WarnSettingConstant.SAND_SHIP_WARN_TARGET_NO_OPERATING_HOURS);
if(null!=warnSetting1){
warningSettingService.deleteWarnSetting(warnSetting1.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting1.getSettingId());
}
} }
@Override @Override
......
...@@ -161,4 +161,16 @@ public class DischargingController { ...@@ -161,4 +161,16 @@ public class DischargingController {
return ResponseObj.success(); return ResponseObj.success();
} }
//接驳统计
// @RequestMapping(value = "groupInfoByYear", method = RequestMethod.GET)
// public ResponseObj groupInfo(
// @RequestParam(name = "regionalCompanyIds", required = false) List<UUID> regionalCompanyIds,
// @RequestParam(name = "year", required = false) List<UUID> regionalCompanyIds,
// ) throws Exception {
//
// return ResponseObj.success("查询成功", dischargingService.groupInfo(transportShipId,type,startDate,endDate,sandMiningAreaType,stationIds,sandMiningAreaId,sandMiningShipId,parentId));
// }
} }
\ No newline at end of file
...@@ -35,7 +35,6 @@ public class SandMiningController { ...@@ -35,7 +35,6 @@ public class SandMiningController {
@RequestParam(name = "pageSize") Integer pageSize, @RequestParam(name = "pageSize") Integer pageSize,
@RequestParam(name = "sandMiningStatus", required = false) Integer sandMiningStatus @RequestParam(name = "sandMiningStatus", required = false) Integer sandMiningStatus
) throws Exception { ) throws Exception {
Page<KObject> objectPage = new Page<>(); Page<KObject> objectPage = new Page<>();
objectPage.setPageNo(pageNo); objectPage.setPageNo(pageNo);
objectPage.setPageSize(pageSize); objectPage.setPageSize(pageSize);
......
...@@ -50,6 +50,16 @@ ...@@ -50,6 +50,16 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>warnSetting.billType</m:name>
<m:title>预警指标</m:title>
<m:type>com.xyst.dinas.biz.datamodel.WarnSetting</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>startTime</m:name> <m:name>startTime</m:name>
<m:title>开始时间</m:title> <m:title>开始时间</m:title>
<m:type>datetime</m:type> <m:type>datetime</m:type>
......
...@@ -104,4 +104,16 @@ public class SalesPlanDao { ...@@ -104,4 +104,16 @@ public class SalesPlanDao {
}); });
} }
public List<KObject> querySalesPlanDetailsByMasterIdWarehouse(UUID salesPlanId, UUID stationId) {
return template.execute(session ->{
String hql = "from " + SalesPlanConstant.ENTITY_DETAIL + " where master.id =:salesPlanId and station.id =:stationId GROUP BY purchaseSandUnit.id, project.id, contract.id, id ";
Query<KObject> query = session.createQuery(hql, KObject.class);
query.setParameter("salesPlanId", salesPlanId);
query.setParameter("stationId", stationId);
List<KObject> resultList = query.getResultList();
return resultList;
});
}
} }
...@@ -119,6 +119,14 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -119,6 +119,14 @@ public class SalesPlanServiceImpl implements SalesPlanService{
kObject.set("SalesPlanDetails", details); kObject.set("SalesPlanDetails", details);
return kObject; return kObject;
} }
@Override
public Object querySalesPlanDetailsByMasterIdWarehouse(UUID salesPlanId, UUID stationId) {
KObject kObject = salesPlanDao.load(salesPlanId);
List<KObject> details = salesPlanDao.querySalesPlanDetailsByMasterIdWarehouse(salesPlanId, stationId);
kObject.set("SalesPlanDetails", details);
return kObject;
}
......
...@@ -40,5 +40,7 @@ public interface SalesPlanService { ...@@ -40,5 +40,7 @@ public interface SalesPlanService {
public void approveSalesPlanForTemp(UUID id,int approveState,String approveMemo); public void approveSalesPlanForTemp(UUID id,int approveState,String approveMemo);
public Object querySalesPlanDetailsByMasterId(UUID fromString); public Object querySalesPlanDetailsByMasterId(UUID fromString);
public Object querySalesPlanDetailsByMasterIdWarehouse(UUID fromString, UUID fromString2);
} }
...@@ -74,8 +74,19 @@ public class SalesPlanController { ...@@ -74,8 +74,19 @@ public class SalesPlanController {
*/ */
@ResponseBody @ResponseBody
@RequestMapping(value = "/salesplan/querySalesPlanDetailsByMasterId", method = RequestMethod.GET) @RequestMapping(value = "/salesplan/querySalesPlanDetailsByMasterId", method = RequestMethod.GET)
public Object verifyName(@RequestParam("saleaPlanId") String saleaPlanId) { public Object querySalesPlanDetailsByMasterId(@RequestParam("saleaPlanId") String saleaPlanId) {
return ResponseObj.success("success", salesPlanService.querySalesPlanDetailsByMasterId(UUID.fromString(saleaPlanId))); return ResponseObj.success("success", salesPlanService.querySalesPlanDetailsByMasterId(UUID.fromString(saleaPlanId)));
} }
/**
* 根据销售计划id查询计划明细(分组)场站用户
* @param saleaPlanId
* @return
*/
@ResponseBody
@RequestMapping(value = "/warehouse/api/salesplan/querySalesPlanDetailsByMasterId", method = RequestMethod.GET)
public Object querySalesPlanDetailsByMasterIdWarehouse(@RequestParam("saleaPlanId") String saleaPlanId, @RequestParam("stationId") String stationId) {
return ResponseObj.success("success", salesPlanService.querySalesPlanDetailsByMasterIdWarehouse(UUID.fromString(saleaPlanId), UUID.fromString(stationId)));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment