Commit bbe8405a by ghxdhr

质控管理统计各月完成量和总量

parent f429990f
...@@ -13,7 +13,9 @@ import io.swagger.annotations.ApiOperation; ...@@ -13,7 +13,9 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 质检管理表 前端控制器 * 质检管理表 前端控制器
...@@ -74,4 +76,11 @@ public class QualityManagementController extends ServiceController { ...@@ -74,4 +76,11 @@ public class QualityManagementController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) { public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(qualityManagementService.removeByIds(ids)); return success(qualityManagementService.removeByIds(ids));
} }
@ApiOperation("统计各月完成量和总量")
@PostMapping("/month_statistic")
public RestResult<Map<String, Map<String,Long>>> monthStatistic(@RequestParam("start") Date start,
@RequestParam("end") Date end) {
return success(qualityManagementService.monthStatistic(start,end));
}
} }
...@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.plugins.Page; ...@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.QualityManagement; import com.patzn.cloud.service.hmhj.entity.QualityManagement;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 质检管理表 服务类 * 质检管理表 服务类
...@@ -19,4 +21,6 @@ public interface IQualityManagementService extends IBaseService<QualityManagemen ...@@ -19,4 +21,6 @@ public interface IQualityManagementService extends IBaseService<QualityManagemen
boolean removeByIds(List<Long> ids); boolean removeByIds(List<Long> ids);
boolean updateAndRecord(QualityManagement qualityManagement); boolean updateAndRecord(QualityManagement qualityManagement);
Map<String, Map<String,Long>> monthStatistic(Date start, Date end);
} }
package com.patzn.cloud.service.lims.hmhj.service.impl; package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.NoticeAnnouncement; import com.patzn.cloud.commons.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.entity.NoticeRecord; import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.service.hmhj.entity.QualityManagement; import com.patzn.cloud.service.hmhj.entity.QualityManagement;
import com.patzn.cloud.service.hmhj.entity.QualityManagementRecord; import com.patzn.cloud.service.hmhj.entity.QualityManagementRecord;
import com.patzn.cloud.service.lims.base.service.ILmsPropertyService; import com.patzn.cloud.service.lims.base.service.ILmsPropertyService;
...@@ -17,7 +18,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -17,7 +18,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.text.SimpleDateFormat;
import java.util.*;
/** /**
* 质检管理表 服务实现类 * 质检管理表 服务实现类
...@@ -62,4 +64,88 @@ public class QualityManagementServiceImpl extends BaseServiceImpl<QualityManagem ...@@ -62,4 +64,88 @@ public class QualityManagementServiceImpl extends BaseServiceImpl<QualityManagem
} }
return super.updateById(qualityManagement); return super.updateById(qualityManagement);
} }
/* 返回每个月的完成量和总量 */
@Override
public Map<String, Map<String,Long>> monthStatistic(Date start, Date end) {
String totalKey = "total";//总量的key
String finishedKey = "finished";//已完成的key
Map<String, Map<String,Long>> resMap = new HashMap<>();
if (start.after(end)) {
return null;
}
/* 得到start-end时间段内所有的完成量和总量,然后分别得到各月的完成量和总量 */
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Date startYM = DateUtils.toDate(format.format(start));
Date endYM = DateUtils.toDate(format.format(end));
List<QualityManagement> all = this.list(Condition.create().between("ctime", startYM, endYM));
if (CollectionUtils.isEmpty(all)) {
return null;
}
/* 得到每月开始天和结束天;比如2021-07[key] --> 2021-07-01 00:00:00~2021-07-31 23:59:59[value] */
Map<String, Map<String, Date>> monthStartDayEndDayMap = getMonthStartDayEndDayMap(start, end);
String startKey = "begin";
String endKey = "end";
for (Map.Entry<String, Map<String, Date>> entry : monthStartDayEndDayMap.entrySet()) {
String key = entry.getKey();
Map<String, Date> beginEndMap = entry.getValue();
Date mStart = beginEndMap.get(startKey);
Date mEnd = beginEndMap.get(endKey);
Long finishNum = 0L;
Long totalNum = 0L;
List<QualityManagement> delete = new ArrayList<>();
for (QualityManagement qm : all) {
if (qm.getCtime().after(mStart) && qm.getCtime().before(mEnd)) {
delete.add(qm);
if (qm.getStatus() == 1) {//完成
finishNum++;
}
totalNum++;
}
}
HashMap<String, Long> totalFinishedMap = new HashMap<>();
totalFinishedMap.put(totalKey,totalNum);
totalFinishedMap.put(finishedKey,finishNum);
resMap.put(key,totalFinishedMap);
}
return resMap;
}
private Map<String, Map<String, Date>> getMonthStartDayEndDayMap(Date start, Date end) {
String ym = "yyyy-MM";
String ymd = "yyyy-MM-dd";
String ymdt = "yyyy-MM-dd HH:mm:ss";
String startTime = " 00:00:00";
String endTime = " 23:59:59";
String startKey = "begin";
String endKey = "end";
String startStr = DateUtils.toStrByFormatStr(start, ym);
String endStr = DateUtils.toStrByFormatStr(end, ym);
Map<String, Map<String, Date>> map = new HashMap<>();
Calendar cStart = Calendar.getInstance();
cStart.setTime(DateUtils.toDateByFormatStr(startStr,ym));
Calendar cEnd = Calendar.getInstance();
cEnd.setTime(DateUtils.toDateByFormatStr(endStr,ym));
cEnd.add(Calendar.MONTH,1); // 加一个月,不超过这个月
while (cStart.before(cEnd)) {
String key = DateUtils.toStrByFormatStr(cStart.getTime(),ym);
cStart.set(Calendar.DAY_OF_MONTH,1);//第一天
String s = DateUtils.toStrByFormatStr(cStart.getTime(),ymd) + startTime;
cStart.set(Calendar.DAY_OF_MONTH,cStart.getActualMaximum(Calendar.DAY_OF_MONTH));//最后一天
String e = DateUtils.toStrByFormatStr(cStart.getTime(),ymd) + endTime;
HashMap<String, Date> SEMap = new HashMap<>();
SEMap.put(startKey,DateUtils.toDateByFormatStr(s,ymdt));
SEMap.put(endKey,DateUtils.toDateByFormatStr(e,ymdt));
map.put(key,SEMap);
cStart.add(Calendar.MONTH,1);
}
return map;
}
} }
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