|
|
@@ -7,12 +7,15 @@ import com.lc.ibps.base.core.util.string.StringUtil;
|
|
|
import com.lc.ibps.base.framework.id.UniqueIdUtil;
|
|
|
import com.lc.ibps.base.framework.table.ICommonDao;
|
|
|
import com.lc.ibps.components.quartz.BaseJob2;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.quartz.JobDataMap;
|
|
|
import org.quartz.JobExecutionContext;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -21,29 +24,51 @@ public class EquipmentMaintenancePlanJob extends BaseJob2 {
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(EquipmentMaintenancePlanJob.class);
|
|
|
public static final String PLAN_DATE = "plan-date";
|
|
|
+ private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
|
|
|
@Override
|
|
|
public void executeJob(JobExecutionContext context) throws Exception {
|
|
|
- JobDataMap dataMap = context.getMergedJobDataMap();
|
|
|
- logger.warn("group={} job={} trigger={} is running.",
|
|
|
- context.getJobDetail().getKey().getGroup(),
|
|
|
- context.getJobDetail().getKey().getName(),
|
|
|
- context.getTrigger().getKey().getName());
|
|
|
- logger.warn("jobDataMap=is {}.", JacksonUtil.toJsonString(dataMap.getWrappedMap()));
|
|
|
- String planDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
|
|
- String planDateParam = dataMap.getString(PLAN_DATE);
|
|
|
- if(StringUtil.isNotBlank(planDateParam)){
|
|
|
- planDate = planDateParam;
|
|
|
+ //step1: 组装查询参数
|
|
|
+ String[] queryParam = buildQueryParam(context);
|
|
|
+ //step2: 执行查询sql
|
|
|
+ List<Map<String, Object>> list = fetchRecords(queryParam);
|
|
|
+ //step3: 组装写入数据
|
|
|
+ transform(list, queryParam);
|
|
|
+
|
|
|
+ if (BeanUtils.isNotEmpty(list)){
|
|
|
+ //step4: 写入数据库
|
|
|
+ generateRecords(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void generateRecords(List<Map<String, Object>> list) throws Exception {
|
|
|
+ int success = 0;
|
|
|
+ int error = 0;
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
+ try {
|
|
|
+ commonDao.execute(this.buildInsertSql(map));
|
|
|
+ success = success + 1;
|
|
|
+ }catch (Exception e){
|
|
|
+ error = error + 1;
|
|
|
+ logger.error("设备维护添加数据异常,异常数据she_bei_bian_hao_:{} with error message {}",map.get("she_bei_bian_hao_"),e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String msg = "添加设备维护保养数据正常数:"+success+",添加设备维护保养数据异常数:"+error;
|
|
|
+ logger.warn(msg);
|
|
|
+ if (error>0){
|
|
|
+ throw new Exception(msg);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- String querySql = "SELECT * FROM (SELECT " +
|
|
|
- " YEAR('"+planDate+"') AS ji_hua_nian_du_ ," +
|
|
|
+ private List<Map<String, Object>> fetchRecords(String[] queryParam) {
|
|
|
+ String querySql = "SELECT * FROM (SELECT YEAR(#{p0}) AS ji_hua_nian_du_ ," +
|
|
|
" CASE device.wei_hu_zhou_qi_c_ " +
|
|
|
- " WHEN '日保养' THEN DATE_FORMAT('"+planDate+"', '%j') " +
|
|
|
- " WHEN '周保养' THEN DATE_FORMAT('"+planDate+"', '%u') " +
|
|
|
- " WHEN '月保养' THEN MONTH('"+planDate+"') " +
|
|
|
- " WHEN '季度保养' THEN QUARTER('"+planDate+"') " +
|
|
|
- " WHEN '半年保养' THEN IF(MONTH('"+planDate+"')-6>0,2,1) "+
|
|
|
- " WHEN '年保养' THEN YEAR('"+planDate+"') " +
|
|
|
+ " WHEN '日保养' THEN DATE_FORMAT(#{p0}, '%j') " +
|
|
|
+ " WHEN '周保养' THEN DATE_FORMAT(#{p0}, '%u') " +
|
|
|
+ " WHEN '月保养' THEN MONTH(#{p0}) " +
|
|
|
+ " WHEN '季度保养' THEN QUARTER(#{p0}) " +
|
|
|
+ " WHEN '半年保养' THEN IF(MONTH(#{p0})-6>0,2,1) "+
|
|
|
+ " WHEN '年保养' THEN YEAR(#{p0}) " +
|
|
|
+ " ELSE CONCAT (DATE_FORMAT(#{p0}, '%u'),'.',WEEKDAY(#{p0})+1)" +
|
|
|
" END AS period_num,device.wei_hu_zhou_qi_c_ as zhu_zhou_qi_ ,device.id_ as she_bei_bian_hao_,device.bian_zhi_bu_men_, " +
|
|
|
" device.she_bei_ming_cheng_ as she_bei_ming_chen,device.she_bei_shi_bie_h as ri_qi_,device.cun_fang_di_dian_ as sheng_xiao_ri_qi_, " +
|
|
|
" jhb.id_ as ji_hua_zong_wai_j,jhzb.id_ as ji_hua_wai_jian_ ,device.wei_hu_fang_shi_ as wei_hu_gang_wei_ , " +
|
|
|
@@ -51,41 +76,54 @@ public class EquipmentMaintenancePlanJob extends BaseJob2 {
|
|
|
" FROM `t_mjsbwhjhb` jhb,`t_mjsbwhjhzb` jhzb,`v_device_devicemaintenance` device " +
|
|
|
" WHERE jhb.shi_fou_guo_shen_='已完成' AND jhb.zhi_xing_zhuang_t='正常' " +
|
|
|
" AND jhb.id_ = jhzb.parent_id_ " +
|
|
|
- " AND jhzb.she_bei_bian_hao_ = device.id_) plan " +
|
|
|
+ " AND jhzb.she_bei_bian_hao_ = device.id_ AND device.id_ NOT IN " +
|
|
|
+ " (SELECT id_ FROM v_device_devicemaintenance WHERE " +
|
|
|
+ " (wei_hu_zhou_qi_c_ ='每周1,3,5' AND FIND_IN_SET(WEEKDAY(#{p0}),'0,2,4')=0) OR " +
|
|
|
+ " (wei_hu_zhou_qi_c_ ='每周2,4' AND FIND_IN_SET(WEEKDAY(#{p0}),'1,3')=0) OR " +
|
|
|
+ " (wei_hu_zhou_qi_c_ ='每周1-5' AND FIND_IN_SET(WEEKDAY(#{p0}),'5,6')>0) OR " +
|
|
|
+ " (wei_hu_zhou_qi_c_ ='每周1-6' AND FIND_IN_SET(WEEKDAY(#{p0}),'6')>0)) ) plan " +
|
|
|
" WHERE NOT EXISTS (SELECT 1 FROM `t_mjsbwhbyjlby` jlb WHERE jlb.she_bei_bian_hao_ = plan.she_bei_bian_hao_ AND jlb.zhu_zhou_qi_ = plan.zhu_zhou_qi_ " +
|
|
|
" AND jlb.period_num = plan.period_num AND jlb.ji_hua_nian_du_=plan.ji_hua_nian_du_)";
|
|
|
|
|
|
- ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
|
|
|
- List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(querySql);
|
|
|
|
|
|
- if (BeanUtils.isNotEmpty(list)){
|
|
|
- logger.warn("设备维护添加数据总数:{}",list.size());
|
|
|
- int success = 0;int error = 0;
|
|
|
- for (Map<String, Object> map : list) {
|
|
|
- try {
|
|
|
- map.put("ji_hua_shi_jian_", planDate);
|
|
|
- String uid = UniqueIdUtil.getId();
|
|
|
- commonDao.execute(this.buildInsertSql(map, uid));
|
|
|
- success = success + 1;
|
|
|
- }catch (Exception e){
|
|
|
- error = error + 1;
|
|
|
- logger.error("设备维护添加数据异常,异常数据she_bei_bian_hao_:{} with error message {}",map.get("she_bei_bian_hao_"),e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
- String msg = "添加设备维护保养数据正常数:"+success+",添加设备维护保养数据异常数:"+error;
|
|
|
- logger.warn(msg);
|
|
|
- if (error>0){
|
|
|
- throw new Exception(msg);
|
|
|
- }
|
|
|
- }else{
|
|
|
+ List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(querySql, queryParam);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map<String, Object>> transform(List<Map<String, Object>> list, String[] queryParam) {
|
|
|
+ if (BeanUtils.isEmpty(list)) {
|
|
|
logger.warn("未查询到需要添加设备维护保养的数据");
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ logger.warn("设备维护添加数据总数:{}",list.size());
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
+ map.put("ji_hua_shi_jian_", queryParam[0]);
|
|
|
+ map.put("id_", UniqueIdUtil.getId());
|
|
|
+ map.put("shi_fou_guo_shen_", "待处理");
|
|
|
+ map.put("create_time_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
}
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
- private String buildInsertSql(Map<String, Object> map, String uuid){
|
|
|
- map.put("id_", uuid);
|
|
|
- map.put("shi_fou_guo_shen_", "待处理");
|
|
|
- map.put("create_time_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ @NotNull
|
|
|
+ private String[] buildQueryParam(JobExecutionContext context) {
|
|
|
+ JobDataMap dataMap = context.getMergedJobDataMap();
|
|
|
+ logger.warn("group={} job={} trigger={} is running.",
|
|
|
+ context.getJobDetail().getKey().getGroup(),
|
|
|
+ context.getJobDetail().getKey().getName(),
|
|
|
+ context.getTrigger().getKey().getName());
|
|
|
+ logger.warn("jobDataMap=is {}.", JacksonUtil.toJsonString(dataMap.getWrappedMap()));
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
+ String planDateParam = dataMap.getString(PLAN_DATE);
|
|
|
+ if(StringUtil.isNotBlank(planDateParam)){
|
|
|
+ localDate = LocalDate.parse(planDateParam);
|
|
|
+ }
|
|
|
+ String planDate = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ return new String[]{planDate};
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildInsertSql(Map<String, Object> map){
|
|
|
+
|
|
|
StringBuilder sql = new StringBuilder("insert into t_mjsbwhbyjlby (");
|
|
|
for (Object key : map.keySet()) {
|
|
|
sql.append(key).append(",");
|