package com.product.contract.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.product.common.lang.StringUtils; import com.product.core.config.CoreConst; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @Service public class ProjectScheduleService extends AbstractBaseService { @Autowired BaseDao baseDao; /** * 后端处理项目进度列表 * @return */ public DataTableEntity getList() { String curUserId = SpringMVCContextHolder.getCurrentUserId(); StringBuilder sql = new StringBuilder(); sql.append("SELECT c.uuid,a.uuid business_uuid,b.uuid business_sub_uuid,a.project_name project_name,b.project_task_sub,c.reporter,c.reporting_time,c.reporting_content,c.progress_rate \n"); sql.append("FROM product_project_business a \n"); sql.append("LEFT JOIN product_project_business_plan b ON a.uuid=b.project_uuid\n"); sql.append("LEFT JOIN product_project_schedule c on b.uuid=c.business_sub_uuid\n"); sql.append("WHERE a.project_name is not null \n"); sql.append("AND (CONCAT(',',a.team_members,',') LIKE ? OR a.group_leader = ?) \n"); sql.append("ORDER BY a.project_name,b.start_date"); DataTableEntity dt = baseDao.listTable(sql.toString(), new String[]{"%," + curUserId + ",%", curUserId}); baseDao.loadPromptData(dt); JSONObject projectJsob = new JSONObject(new LinkedHashMap<>()); for (int i = 0; i < dt.getRows(); i++) { FieldSetEntity fs = dt.getFieldSetEntity(i); JSONObject subJsob = projectJsob.getJSONObject(fs.getString("business_uuid")); if (subJsob==null){ subJsob=new JSONObject(new LinkedHashMap<>()); JSONArray arr = new JSONArray(); arr.add(BaseUtil.fieldSetEntityToJson(fs)); subJsob.put(fs.getString("business_sub_uuid"), arr); projectJsob.put(fs.getString("business_uuid"),subJsob); }else { JSONArray arr = subJsob.getJSONArray(fs.getString("business_sub_uuid")); if (arr==null){ arr = new JSONArray(); arr.add(BaseUtil.fieldSetEntityToJson(fs)); subJsob.put(fs.getString("business_sub_uuid"),arr); }else { arr.add(BaseUtil.fieldSetEntityToJson(fs)); } } } // 获取当前时间 LocalDateTime now = LocalDateTime.now(); // 定义时间格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 将当前时间格式化为字符串 String timeString = now.format(formatter); //总数居 DataTableEntity data = new DataTableEntity(); for (Map.Entry key : projectJsob.entrySet()) { //计算 int num=0; //大项目下的数据 DataTableEntity d = new DataTableEntity(); JSONObject subJsob=projectJsob.getJSONObject(key.getKey()); for (Map.Entry entry : subJsob.entrySet()) { //获取子项目下的数组数据 JSONArray jsonArray = subJsob.getJSONArray(entry.getKey()); /** * 判定是否新增数据 */ if (jsonArray.size()==1&&jsonArray.getJSONObject(0).getString("uuid")==null){ num=num+1; JSONObject json = jsonArray.getJSONObject(0); json.put("reporter", SpringMVCContextHolder.getCurrentUser().getUser_name()); json.put("reporting_time", timeString); json.put("number1", 1); }else { jsonArray.getJSONObject(0).put("number1",jsonArray.size()+1); num=num+jsonArray.size()+1; //新增颗填写数据 JSONObject j = new JSONObject(); j.put("business_uuid",jsonArray.getJSONObject(0).getString("business_uuid")); j.put("business_sub_uuid",jsonArray.getJSONObject(0).getString("business_sub_uuid")); j.put("project_name",jsonArray.getJSONObject(0).getString("project_name")); j.put("project_task_sub",jsonArray.getJSONObject(0).getString("project_task_sub")); j.put("reporter", SpringMVCContextHolder.getCurrentUser().getUser_name()); j.put("reporting_time", timeString); jsonArray.add(j); } for (int i = 0; i