This commit is contained in:
cwchen 2024-03-29 15:27:06 +08:00
parent 6ac961b286
commit c5ec741499
6 changed files with 193 additions and 21 deletions

View File

@ -810,7 +810,7 @@ public class DateTimeHelper {
* @author cwchen
* @date 2024/3/16 15:11
*/
public static Long convertDateStringToTimestamp(String dateString, String format) throws Exception {
public static Long convertDateStringToTimestamp(String dateString, String format){
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);

View File

@ -52,4 +52,16 @@ public class AppController {
public AjaxResult proProgress(ParamDto dto){
return service.proProgress(dto);
}
@ApiOperation(value = "告警")
@GetMapping("alarmLists")
public AjaxResult alarmLists(ParamDto dto){
return service.alarmLists(dto);
}
@ApiOperation(value = "工程管理")
@GetMapping("proManagement")
public AjaxResult proManagement(ParamDto dto){
return service.proManagement(dto);
}
}

View File

@ -6,6 +6,7 @@ import com.securitycontrol.entity.background.vo.VehicleVo;
import com.securitycontrol.entity.system.base.vo.ProVo;
import com.securitycontrol.entity.system.vo.ResourceFileVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -78,12 +79,50 @@ public interface IAppMapper {
/**
* 项目进度
*
* @param dto
* @return List<Map<String, Object>>
* @return List<Map < String, Object>>
* @description
* @author cwchen
* @date 2024/3/28 20:22
*/
@MapKey("bidCode")
List<Map<String, Object>> getProBasicInfo(ParamDto dto);
/**
* 告警
*
* @param dto
* @return List<Map < Object>>
* @description
* @author cwchen
* @date 2024/3/29 10:25
*/
@MapKey("id")
List<Map<String, Object>> alarmLists(ParamDto dto);
/**
* 工程工序计划
*
* @param dto
* @return List<Map < Object>>
* @description
* @author cwchen
* @date 2024/3/29 11:29
*/
@MapKey("bidCode")
List<Map<String, Object>> getProGxPlan(ParamDto dto);
/**
* 获取工序或杆塔名称
* @param proType
* @param bidCode
* @param gxId
* @return String
* @description
* @author cwchen
* @date 2024/3/29 14:20
*/
String getGtOrGxName(@Param("proType") String proType, @Param("bidCode")String bidCode, @Param("gxId")String gxId);
}

View File

@ -56,6 +56,7 @@ public interface IAppService {
/**
* 项目进度
*
* @param dto
* @return AjaxResult
* @description
@ -63,4 +64,25 @@ public interface IAppService {
* @date 2024/3/28 20:19
*/
AjaxResult proProgress(ParamDto dto);
/**
* 告警
*
* @param dto
* @return AjaxResult
* @description
* @author cwchen
* @date 2024/3/29 10:24
*/
AjaxResult alarmLists(ParamDto dto);
/**
* 工程管理
* @param dto
* @return AjaxResult
* @description
* @author cwchen
* @date 2024/3/29 10:46
*/
AjaxResult proManagement(ParamDto dto);
}

View File

@ -92,22 +92,22 @@ public class AppServiceImpl implements IAppService {
list = mapper.getPersonnelList(dto);
for (HumanManageVo vo : list) {
String decryptIdNumber = AesCbcUtils.decrypt(vo.getIdNumber());
if(decryptIdNumber != null){
if (decryptIdNumber != null) {
vo.setIdNumber(decryptIdNumber);
vo.setSex(getGenderByIdCard(decryptIdNumber));
}else{
} else {
vo.setSex(getGenderByIdCard(vo.getIdNumber()));
}
}
} catch (Exception e) {
log.error("人员管理",e);
log.error("人员管理", e);
}
return AjaxResult.success(list);
}
public static String getGenderByIdCard(String idCard) {
if (StringUtils.isNotEmpty(idCard)) {
if(idCard.length() == Constant.ID_CARD || idCard.length() == Constant.ID_CARD2){
if (idCard.length() == Constant.ID_CARD || idCard.length() == Constant.ID_CARD2) {
idCard = idCard.length() == 15 ? idCard.substring(0, 6) + "19" + idCard.substring(6) : idCard;
char genderCode = idCard.charAt(16);
return (genderCode % 2) == 0 ? "" : "";
@ -122,7 +122,7 @@ public class AppServiceImpl implements IAppService {
try {
list = mapper.getCarList(dto);
} catch (Exception e) {
log.error("人员管理",e);
log.error("人员管理", e);
}
return AjaxResult.success(list);
}
@ -132,7 +132,7 @@ public class AppServiceImpl implements IAppService {
Map<String, Object> dataMap = new HashMap<>(16);
List<Map<String, Object>> list = new ArrayList<>();
try {
list= mapper.getProBasicInfo(dto);
list = mapper.getProBasicInfo(dto);
Map<String, List<Map<String, Object>>> map = list.stream().collect(Collectors.groupingBy(item -> {
return String.valueOf(item.get("bidCode"));
}));
@ -148,27 +148,82 @@ public class AppServiceImpl implements IAppService {
value = value.add(bigDecimal.multiply(bigDecimal2).divide(multipleValue, 3, BigDecimal.ROUND_HALF_UP));
}
}
// 计划开始时间计划结束时间实际进度
// 计划开始时间计划结束时间实际进度计划工期
String planStartTime = String.valueOf(v.get(0).get("planStartTime"));
String planEndTime = String.valueOf(v.get(0).get("planStartTime"));
String planEndTime = String.valueOf(v.get(0).get("planEndTime"));
String nowDate = DateTimeHelper.getNowDate();
dataMap.put("planStartTime",planStartTime);
dataMap.put("planEndTime",planEndTime);
dataMap.put("value", value.doubleValue());
// 计划进度计划工期
Long dayDifference = DateTimeHelper.getDayDifference(planStartTime, planEndTime);
Long residueDay = DateTimeHelper.getDayDifference(planStartTime, nowDate);
BigDecimal dayDifferenceBd = BigDecimal.valueOf(dayDifference);
BigDecimal residueDayBd = BigDecimal.valueOf(residueDay);
// dayDifference
value2 = value2.add(residueDayBd.divide(dayDifferenceBd, 3, BigDecimal.ROUND_HALF_UP));
dataMap.put("value2",value2.doubleValue());
dataMap.put("planStartTime", planStartTime);
dataMap.put("planEndTime", planEndTime);
dataMap.put("value", value.doubleValue());
dataMap.put("durationDay", dayDifference);
Long planStartTimeTamp = DateTimeHelper.convertDateStringToTimestamp(planStartTime, "yyyy-MM-dd");
Long planEndTimeTamp = DateTimeHelper.convertDateStringToTimestamp(planEndTime, "yyyy-MM-dd");
Long nowDateTamp = DateTimeHelper.convertDateStringToTimestamp(nowDate, "yyyy-MM-dd");
// 计划进度
if (nowDateTamp < planStartTimeTamp) {
dataMap.put("value2", new Double(0));
} else if (nowDateTamp > planEndTimeTamp) {
dataMap.put("value2", new Double(100));
} else {
// 工程已施工天数
Long residueDay = DateTimeHelper.getDayDifference(planStartTime, nowDate);
// 剩余工期
Long residueDay2 = DateTimeHelper.getDayDifference(nowDate, planEndTime);
BigDecimal dayDifferenceBd = BigDecimal.valueOf(dayDifference);
BigDecimal residueDayBd = BigDecimal.valueOf(residueDay);
value2 = value2.add(residueDayBd.divide(dayDifferenceBd, 3, BigDecimal.ROUND_HALF_UP).multiply(multipleValue));
dataMap.put("value2", value2.doubleValue());
dataMap.put("residueDay", residueDay2);
}
});
} catch (Exception e) {
log.error("项目进度");
}
return AjaxResult.success(dataMap);
}
@Override
public AjaxResult alarmLists(ParamDto dto) {
List<Map<String, Object>> list = new ArrayList<>();
try {
list = mapper.alarmLists(dto);
} catch (Exception e) {
log.error("告警", e);
}
return AjaxResult.success(list);
}
@Override
public AjaxResult proManagement(ParamDto dto) {
Map<String, Object> dataMap = new HashMap<>(16);
ProVo vo = new ProVo();
JSONObject item = new JSONObject();
List<Map<String, Object>> proGxPlanList = new ArrayList<>();
try {
// 工程详情
vo = mapper.getProBrief(dto);
AjaxResult ajaxResult = proProgress(dto);
String jsonString = JSON.toJSONString(ajaxResult.get("data"));
item = JSON.parseObject(jsonString);
// 施工进度
proGxPlanList = mapper.getProGxPlan(dto);
if(CollectionUtils.isNotEmpty(proGxPlanList)){
proGxPlanList.forEach(mapData->{
String proType = String.valueOf(mapData.get("proType"));
String bidCode = String.valueOf(mapData.get("bidCode"));
String gxId = String.valueOf(mapData.get("gxId"));
String name = mapper.getGtOrGxName(proType, bidCode, gxId);
mapData.put("name",name);
});
}
} catch (Exception e) {
log.error("工程管理", e);
}
dataMap.put("vo",vo);
dataMap.put("item",item);
dataMap.put("proGxPlanList",proGxPlanList);
return AjaxResult.success(dataMap);
}
}

View File

@ -78,4 +78,48 @@
)a ON tgp.plan_id = a.planId
WHERE tp.del_flag = 0 AND tp.bid_code = #{bidCode}
</select>
<!--告警-->
<select id="alarmLists" resultType="java.util.Map">
SELECT tw.warn_id AS id,
DATE_FORMAT(tw.warn_time, '%Y-%m-%d %H:%i:%s') AS warnTime,
tw.warn_content AS warnContent,
IF(status = '1','已处理','未处理') AS status
FROM tb_warn tw
WHERE tw.bid_code = #{bidCode} AND tw.warn_time BETWEEN CONCAT(CURRENT_DATE,' 00:00:00') AND CONCAT(CURRENT_DATE,' 23:59:59')
ORDER BY warn_time DESC,status ASC
</select>
<!--工程工序计划-->
<select id="getProGxPlan" resultType="java.util.Map">
SELECT tp.bid_code AS bidCode,
tgp.gx_weight AS gxWeight,
a.gxProgress,
tp.pro_type AS proType,
tgp.gx_id AS gxId,
tgp.plan_start_time AS planStartTime,
tgp.plan_end_time AS planEndTime,
tgp.start_time AS startTime,
tgp.end_time AS endTime
FROM tb_gx_plan tgp
LEFT JOIN tb_project tp ON tp.bid_code = tgp.bid_code AND tp.del_flag = 0
LEFT JOIN (
SELECT tpp.plan_id AS planId,
tpp.gx_progress AS gxProgress
FROM tb_project_progress tpp
INNER JOIN (SELECT MAX( create_time ) AS create_time FROM tb_project_progress GROUP BY plan_id) tpp2 ON tpp.create_time = tpp2.create_time
)a ON tgp.plan_id = a.planId
WHERE tp.bid_code = #{bidCode} AND tgp.del_flag = 0
</select>
<!--获取工序或杆塔名称-->
<select id="getGtOrGxName" resultType="java.lang.String">
<if test="proType=='线路'">
SELECT gt_name FROM t_pro_gt tpg WHERE bid_code =#{bidCode} AND gt_id = #{gxId}
</if>
<if test="proType=='变电'">
SELECT sd2.dict_code AS id,
sd2.dict_name AS name
FROM sys_dict sd
LEFT JOIN sys_dict sd2 ON sd.dict_code = sd2.p_code AND sd2.del_flag = 0
WHERE sd.dict_code = '400' AND sd2.dict_code = #{gxId} AND sd.del_flag = 0
</if>
</select>
</mapper>