From 5c9cd9bc96923f909c20748ff33f94cea17400da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Mon, 24 Jun 2024 17:03:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=92=E5=8F=B7=E4=B8=8E?= =?UTF-8?q?=E8=AF=84=E4=BB=B7=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PjEvaluateStatServiceImpl.java | 94 ++++++++++++++++ .../pj/web/PjEvaluateStatController.java | 103 ++++++++++++++++-- 2 files changed, 187 insertions(+), 10 deletions(-) diff --git a/bill-manager/src/main/java/com/mortals/xhx/module/pj/service/impl/PjEvaluateStatServiceImpl.java b/bill-manager/src/main/java/com/mortals/xhx/module/pj/service/impl/PjEvaluateStatServiceImpl.java index 23200d7..7f61797 100644 --- a/bill-manager/src/main/java/com/mortals/xhx/module/pj/service/impl/PjEvaluateStatServiceImpl.java +++ b/bill-manager/src/main/java/com/mortals/xhx/module/pj/service/impl/PjEvaluateStatServiceImpl.java @@ -60,12 +60,18 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat updateSiteSectionNamePjCount(currentDate, entity, pjEvaluateEntities); + updateSiteHallPjCount(currentDate, entity, pjEvaluateEntities); + updateSiteWindowPjCount(currentDate, entity, pjEvaluateEntities); + updateSiteOptionPjCount(currentDate, entity, pjEvaluateEntities); + return Rest.ok(); } private void updateSitePjCount(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { + if (ObjectUtils.isEmpty(entity.getSiteId())) return; + if (0L >= entity.getSiteId()) return; PjEvaluateStatEntity pjEvaluateStatEntity = this.selectOne(new PjEvaluateStatQuery() .siteId(entity.getSiteId()) .year(entity.getYear()) @@ -102,6 +108,7 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getSectionName(), Collectors.counting())); collect.entrySet().stream().forEach(item -> { String sectionName = item.getKey(); + if (ObjectUtils.isEmpty(sectionName)) return; Long value = item.getValue(); log.info("鏇存柊绔欑偣璇勪环缁熻鏁版嵁锛岀珯鐐瑰悕绉帮細{}锛屾棩鏈燂細{}锛岄儴闂細{}锛岃瘎浠锋暟閲忥細{}", entity.getSiteName(), currentDate, entity.getSectionName(), pjEvaluateEntities.size()); PjEvaluateStatEntity pjEvaluateStatEntity = this.selectOne(new PjEvaluateStatQuery() @@ -138,11 +145,56 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat } + private void updateSiteHallPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { + + Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getHallName(), Collectors.counting())); + collect.entrySet().stream().forEach(item -> { + String hallName = item.getKey(); + + if (ObjectUtils.isEmpty(hallName)) return; + + Long value = item.getValue(); + log.info("鏇存柊绔欑偣璇勪环缁熻鏁版嵁锛岀珯鐐瑰悕绉帮細{}锛屾棩鏈燂細{}锛岄儴闂細{}锛岃瘎浠锋暟閲忥細{}", entity.getSiteName(), currentDate, entity.getSectionName(), pjEvaluateEntities.size()); + PjEvaluateStatEntity pjEvaluateStatEntity = this.selectOne(new PjEvaluateStatQuery() + .siteId(entity.getSiteId()) + .hallName(hallName) + .year(entity.getYear()) + .month(entity.getMonth()) + .day(entity.getDay())); + if (ObjectUtils.isEmpty(pjEvaluateStatEntity)) { + //缁熻褰撳墠绔欑偣鏂板鎵€鏈夎瘎浠锋暟閲� + pjEvaluateStatEntity = new PjEvaluateStatEntity(); + pjEvaluateStatEntity.initAttrValue(); + pjEvaluateStatEntity.setSiteId(entity.getSiteId()); + pjEvaluateStatEntity.setSiteCode(entity.getSiteCode()); + pjEvaluateStatEntity.setSiteName(entity.getSiteName()); + pjEvaluateStatEntity.setHallName(hallName); + pjEvaluateStatEntity.setPjCount(value.intValue()); + pjEvaluateStatEntity.setYear(entity.getYear()); + pjEvaluateStatEntity.setMonth(entity.getMonth()); + pjEvaluateStatEntity.setDay(entity.getDay()); + pjEvaluateStatEntity.setCreateTime(new Date()); + pjEvaluateStatEntity.setCreateUserId(1L); + this.save(pjEvaluateStatEntity); + } else { + pjEvaluateStatEntity.setPjCount(value.intValue()); + pjEvaluateStatEntity.setYear(entity.getYear()); + pjEvaluateStatEntity.setMonth(entity.getMonth()); + pjEvaluateStatEntity.setDay(entity.getDay()); + pjEvaluateStatEntity.setUpdateTime(new Date()); + pjEvaluateStatEntity.setUpdateUserId(1L); + this.update(pjEvaluateStatEntity); + } + }); + } + + private void updateSiteWindowPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getWindowFromnum(), Collectors.counting())); collect.entrySet().stream().forEach(item -> { String windowFromnum = item.getKey(); + if (ObjectUtils.isEmpty(windowFromnum)) return; Long value = item.getValue(); log.info("鏇存柊绔欑偣璇勪环缁熻鏁版嵁锛岀珯鐐瑰悕绉帮細{}锛屾棩鏈燂細{}锛岀獥鍙o細{}锛岃瘎浠锋暟閲忥細{}", entity.getSiteName(), currentDate, entity.getWindowFromnum(), pjEvaluateEntities.size()); PjEvaluateStatEntity pjEvaluateStatEntity = this.selectOne(new PjEvaluateStatQuery() @@ -177,4 +229,46 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat } }); } + + + private void updateSiteOptionPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { + + Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getPjOption(), Collectors.counting())); + collect.entrySet().stream().forEach(item -> { + String pjOption = item.getKey(); + if (ObjectUtils.isEmpty(pjOption)) return; + Long value = item.getValue(); + log.info("鏇存柊绔欑偣璇勪环缁熻鏁版嵁锛岀珯鐐瑰悕绉帮細{}锛屾棩鏈燂細{}锛岀獥鍙o細{}锛岃瘎浠锋暟閲忥細{}", entity.getSiteName(), currentDate, entity.getWindowFromnum(), pjEvaluateEntities.size()); + PjEvaluateStatEntity pjEvaluateStatEntity = this.selectOne(new PjEvaluateStatQuery() + .siteId(entity.getSiteId()) + .pjOption(pjOption) + .year(entity.getYear()) + .month(entity.getMonth()) + .day(entity.getDay())); + if (ObjectUtils.isEmpty(pjEvaluateStatEntity)) { + //缁熻褰撳墠绔欑偣鏂板鎵€鏈夎瘎浠锋暟閲� + pjEvaluateStatEntity = new PjEvaluateStatEntity(); + pjEvaluateStatEntity.initAttrValue(); + pjEvaluateStatEntity.setSiteId(entity.getSiteId()); + pjEvaluateStatEntity.setSiteCode(entity.getSiteCode()); + pjEvaluateStatEntity.setSiteName(entity.getSiteName()); + pjEvaluateStatEntity.setPjOption(pjOption); + pjEvaluateStatEntity.setPjCount(value.intValue()); + pjEvaluateStatEntity.setYear(entity.getYear()); + pjEvaluateStatEntity.setMonth(entity.getMonth()); + pjEvaluateStatEntity.setDay(entity.getDay()); + pjEvaluateStatEntity.setCreateTime(new Date()); + pjEvaluateStatEntity.setCreateUserId(1L); + this.save(pjEvaluateStatEntity); + } else { + pjEvaluateStatEntity.setPjCount(value.intValue()); + pjEvaluateStatEntity.setYear(entity.getYear()); + pjEvaluateStatEntity.setMonth(entity.getMonth()); + pjEvaluateStatEntity.setDay(entity.getDay()); + pjEvaluateStatEntity.setUpdateTime(new Date()); + pjEvaluateStatEntity.setUpdateUserId(1L); + this.update(pjEvaluateStatEntity); + } + }); + } } \ No newline at end of file diff --git a/bill-manager/src/main/java/com/mortals/xhx/module/pj/web/PjEvaluateStatController.java b/bill-manager/src/main/java/com/mortals/xhx/module/pj/web/PjEvaluateStatController.java index c65da09..5abaf25 100644 --- a/bill-manager/src/main/java/com/mortals/xhx/module/pj/web/PjEvaluateStatController.java +++ b/bill-manager/src/main/java/com/mortals/xhx/module/pj/web/PjEvaluateStatController.java @@ -1,51 +1,134 @@ package com.mortals.xhx.module.pj.web; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import com.mortals.framework.annotation.UnAuth; +import com.mortals.framework.common.Rest; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; +import com.mortals.xhx.common.pdu.RespData; +import com.mortals.xhx.common.pdu.site.SitePdu; +import com.mortals.xhx.feign.site.ISiteFeign; +import com.mortals.xhx.module.pj.model.PjEvaluateEntity; +import com.mortals.xhx.module.pj.model.PjEvaluateQuery; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StopWatch; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import com.mortals.framework.model.Context; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.module.pj.model.PjEvaluateStatEntity; import com.mortals.xhx.module.pj.service.PjEvaluateStatService; import org.apache.commons.lang3.ArrayUtils; import com.mortals.framework.util.StringUtils; + import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; + import com.alibaba.fastjson.JSONObject; + import java.util.Arrays; + import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; + import static com.mortals.framework.ap.SysConstains.*; + import com.mortals.xhx.common.code.*; + /** -* -* 璇勪环姹囨€荤粺璁� -* -* @author zxfei -* @date 2024-06-24 -*/ + * 璇勪环姹囨€荤粺璁� + * + * @author zxfei + * @date 2024-06-24 + */ @RestController @RequestMapping("pj/evaluate/stat") -public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<PjEvaluateStatService,PjEvaluateStatEntity,Long> { +@Slf4j +public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<PjEvaluateStatService, PjEvaluateStatEntity, Long> { @Autowired private ParamService paramService; - public PjEvaluateStatController(){ - super.setModuleDesc( "璇勪环姹囨€荤粺璁�"); + @Autowired + private ISiteFeign siteFeign; + + public PjEvaluateStatController() { + super.setModuleDesc("璇勪环姹囨€荤粺璁�"); } @Override protected void init(Map<String, Object> model, Context context) { - this.addDict(model, "pjOption", PjOptionEnum.getEnumMap()); + this.addDict(model, "pjOption", PjOptionEnum.getEnumMap()); super.init(model, context); } + @PostMapping(value = "/pjstat") + @UnAuth + public Rest<String> addAttendanceRecordCustom(@RequestBody PjEvaluateQuery pjEvaluateQuery) { + Rest<String> ret = new Rest(); + Map<String, Object> model = new HashMap(); + Context context = this.getContext(); + String busiDesc = "鏌ヨ" + this.getModuleDesc(); + int code = 1; + try { + //澶╂暟鍖洪棿鍒嗘璁$畻 + DateTime attendStart = DateUtil.parseDate(pjEvaluateQuery.getPjTimeStart()); + DateTime attendEnd = DateUtil.parseDate(pjEvaluateQuery.getPjTimeEnd()); + Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY); + StopWatch stopWatch = new StopWatch("stopwatch"); + log.info("璁$畻澶╂暟鍖洪棿锛歿}", compare); + for (int i = 0; i <= compare.intValue(); i++) { + DateTime curDate = DateUtil.offsetDay(attendStart, i); + log.info("璁板綍鏃ユ湡锛歿}", curDate.toDateStr()); + stopWatch.start("鎵ц鏈湴鏂规硶"); + SitePdu sitePdu = new SitePdu(); + sitePdu.setSize(-1); + Rest<RespData<List<SitePdu>>> resp = siteFeign.list(sitePdu); + if (resp.getCode() == 1) { + List<SitePdu> sitePduList = resp.getData().getData(); + sitePduList.stream().forEach(site -> { + PjEvaluateStatEntity sitestatEntity = new PjEvaluateStatEntity(); + sitestatEntity.initAttrValue(); + sitestatEntity.setSiteId(site.getId()); + sitestatEntity.setSiteName(site.getSiteName()); + sitestatEntity.setSiteCode(site.getSiteCode()); + + sitestatEntity.setYear(curDate.year()); + sitestatEntity.setMonth(curDate.month() + 1); + sitestatEntity.setDay(curDate.dayOfMonth()); + //璁剧疆骞存湀鏃� + this.service.updateSitePjStat(sitestatEntity, context); + }); + } + + stopWatch.stop(); + log.info("鏃ユ湡锛歿} 瀹屾垚,鑰楁椂锛歿}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis()); + } + model.put("message_info", busiDesc + "鎴愬姛"); + this.recordSysLog(this.request, busiDesc + " 銆愭垚鍔熴€�"); + } catch (Exception e) { + code = -1; + this.doException(this.request, busiDesc, model, e); + model.put("message_info", e.getMessage()); + } + + this.init(model, context); + ret.setCode(code); + ret.setMsg(model.get("message_info") == null ? "" : model.remove("message_info").toString()); + return ret; + + } + + } \ No newline at end of file -- 2.24.3