From c2b94a6757c11590190dcd1b566da57072794703 Mon Sep 17 00:00:00 2001 From: zm <2369059705qq.com> Date: 星期三, 24 七月 2024 17:32:08 +0800 Subject: [PATCH] 项目立项优化 --- src/main/java/com/product/contract/service/ProjectScheduleService.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 156 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/product/contract/service/ProjectScheduleService.java b/src/main/java/com/product/contract/service/ProjectScheduleService.java new file mode 100644 index 0000000..9a0f662 --- /dev/null +++ b/src/main/java/com/product/contract/service/ProjectScheduleService.java @@ -0,0 +1,156 @@ +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<String, Object> key : projectJsob.entrySet()) { + //璁$畻 + int num=0; + //澶ч」鐩笅鐨勬暟鎹� + DataTableEntity d = new DataTableEntity(); + + JSONObject subJsob=projectJsob.getJSONObject(key.getKey()); + for (Map.Entry<String, Object> 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 <jsonArray.size() ; i++) { + JSONObject a = jsonArray.getJSONObject(i); + FieldSetEntity fs = new FieldSetEntity(); + fs.setTableName("product_project_unfiled"); + fs.setValue("uuid",a.getString("uuid")); + fs.setValue("business_uuid",a.getString("business_uuid")); + fs.setValue("business_sub_uuid",a.getString("business_sub_uuid")); + fs.setValue("project_name",a.getString("project_name")); + fs.setValue("project_task_sub",a.getString("project_task_sub")); + fs.setValue("reporter",a.getString("reporter")); + fs.setValue("reporting_time",a.getString("reporting_time")); + fs.setValue("reporting_content",a.getString("reporting_content")); + fs.setValue("progress_rate",a.getString("progress_rate")); + if (!StringUtils.isEmpty(a.getString("number1"))) { + fs.setValue("number1", a.getInteger("number1")); + } + d.addFieldSetEntity(fs); + } + } + d.setFieldValue(0,"number",num); + data.addFieldSetEntity(d); + } + return data; + } + /** + * 椤圭洰鏈綊妗e師鍥犱繚瀛� + * @param dt + * @return + */ + public boolean save(DataTableEntity dt){ + boolean re=true; + for (int i = 0; i < dt.getRows(); i++) { + FieldSetEntity fs = dt.getFieldSetEntity(i); + if (StringUtils.isEmpty(fs.getString(CoreConst.UUID))&&(!StringUtils.isEmpty(fs.getString("reporting_content"))||!StringUtils.isEmpty(fs.getString("progress_rate")))){ + fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); + fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); + fs.setValue("created_utc_datetime",new Date()); + fs.setValue("reporter",SpringMVCContextHolder.getCurrentUser().getUser_id()); + + boolean a = baseDao.saveFieldSetEntity(fs); + if (!a) re= false; + } + } + return re; + } +} -- Gitblit v1.9.2