1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036 |
- package com.galaxis.manatee.task;
- import com.fasterxml.jackson.annotation.JsonProperty;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import com.galaxis.manatee.constant.ChuanYunConstant;
- import com.galaxis.manatee.dao.*;
- import com.galaxis.manatee.entity.chuanyun.data.object.*;
- import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
- import com.galaxis.manatee.entity.chuanyun.dto.Filter;
- import com.galaxis.manatee.exception.BigSizeException;
- import com.galaxis.manatee.manager.ChuanYunManager;
- import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
- import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
- import lombok.Data;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.util.StringUtils;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.time.Instant;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author zcj
- * @version 0.1
- * @date 2020/5/1 11:37 上午
- */
- @Slf4j
- @Service
- public class ChuanyunProjectScheduledTask {
- private final Integer pageSize=20; final ObjectMapper objectMapper=new ObjectMapper();
- private final ChuanYunManager chuanYunManager;
- private final ChuanyunSaleContractDao chuanyunSaleContractDao;
- private final ChuanyunPaymentReceiveDao chuanyunPaymentReceiveDao;
- private final ChuanyunPurCostDao chuanyunPurCostDao;
- private final ChuanyunProjectCashFlowDao chuanyunProjectCashFlowDao;
- private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
- private final ChuanyunWorkHourDao chuanyunWorkHourDao;
- private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
- private final ChuanyunPayrollDao chuanyunPayrollDao;
- private final ChuanyunSelfCostDao chuanyunSelfCostDao;
- private final ChuanyunMemberCostDao chuanyunMemberCostDao;
- private final ChuanyunProjectCostDao chuanyunProjectCostDao;
- private final ChuanyunReimbursementAmountDao chuanyunReimbursementAmountDao;
- private final ChuanyunMonthLaborCostDao chuanyunMonthLaborCostDao;
- private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
- public ChuanyunProjectScheduledTask(ChuanYunManager chuanYunManager, ChuanyunSaleContractDao chuanyunSaleContractDao, ChuanyunPaymentReceiveDao chuanyunPaymentReceiveDao, ChuanyunPurCostDao chuanyunPurCostDao, ChuanyunProjectCashFlowDao chuanyunProjectCashFlowDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunPayrollDao chuanyunPayrollDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunMemberCostDao chuanyunMemberCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao, ChuanyunReimbursementAmountDao chuanyunReimbursementAmountDao, ChuanyunMonthLaborCostDao chuanyunMonthLaborCostDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao) {
- this.chuanYunManager = chuanYunManager;
- this.chuanyunSaleContractDao = chuanyunSaleContractDao;
- this.chuanyunPaymentReceiveDao = chuanyunPaymentReceiveDao;
- this.chuanyunPurCostDao = chuanyunPurCostDao;
- this.chuanyunProjectCashFlowDao = chuanyunProjectCashFlowDao;
- this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
- this.chuanyunWorkHourDao = chuanyunWorkHourDao;
- this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
- this.chuanyunPayrollDao = chuanyunPayrollDao;
- this.chuanyunSelfCostDao = chuanyunSelfCostDao;
- this.chuanyunMemberCostDao = chuanyunMemberCostDao;
- this.chuanyunProjectCostDao = chuanyunProjectCostDao;
- this.chuanyunReimbursementAmountDao = chuanyunReimbursementAmountDao;
- this.chuanyunMonthLaborCostDao = chuanyunMonthLaborCostDao;
- this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
- }
- /**
- * 更新销售合同数据
- */
- @Scheduled(fixedDelay = 3600000L)
- private void getSaleContractFromChuanyun(){
- var start=0;
- var totalCount=0L;
- var flag=true;
- while (flag){
- try {
- //从氚云查询数据
- var filter= Filter.instance(start,start+pageSize,true);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunSaleContractDO.SCHEMA_CODE,filter);
- if(chuanyunFindAllResponse.getReturnData()==null){
- flag=false;
- continue;
- }
- if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
- start+=pageSize;
- }else{
- flag=false;
- }
- //转化为POJO
- List<ChuanyunSaleContractDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- //获取项目总数
- totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunSaleContractDao.saveAll(result);
- }catch (Exception e){
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("项目销售合同信息保存保存"+totalCount);
- }
- /**
- * 同步项目人力成本
- */
- @Scheduled(fixedDelay = 3600000L)
- private void getLaborCost() {
- var start=0;
- var totalCount=0L;
- var flag=true;
- while (flag){
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMonthLaborCostDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunMonthLaborCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- result.forEach(chuanyunMonthLaborCostDO -> {
- var tmp=chuanyunMonthLaborCostDao.findById(chuanyunMonthLaborCostDO.getObjectId());
- tmp.ifPresent(chuanyunMonthLaborCostDao::delete);
- });
- //获取项目总数
- totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunMonthLaborCostDao.saveAll(result);
- }catch (Exception e){
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("项目人力成本保存"+totalCount);
- }
- /**
- * 同步项目收付款
- */
- @Scheduled(fixedDelay = 3600000L)
- private void getCashFlow() {
- var start=0;
- var totalCount=0L;
- var flag=true;
- while (flag){
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectCashFlowDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunProjectCashFlowDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- result.forEach(chuanyunProjectCashFlowDO -> {
- var tmp=chuanyunProjectCashFlowDao.findById(chuanyunProjectCashFlowDO.getObjectId());
- tmp.ifPresent(chuanyunProjectCashFlowDao::delete);
- });
- //获取项目总数
- totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunProjectCashFlowDao.saveAll(result);
- }catch (Exception e){
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("项目收付款保存"+totalCount);
- }
- /**
- * 同步项目物料成本
- */
- @Scheduled(fixedDelay = 3600000L)
- private void getPurCost() {
- var start=0;
- var totalCount=0L;
- var flag=true;
- while (flag){
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunPurCostDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunPurCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- result.forEach(chuanyunPurCostDO -> {
- var tmp=chuanyunPurCostDao.findById(chuanyunPurCostDO.getObjectId());
- tmp.ifPresent(chuanyunPurCostDao::delete);
- });
- //获取项目总数
- totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunPurCostDao.saveAll(result);
- }catch (Exception e){
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("项目物料成本保存"+totalCount);
- }
- /**
- * 项目工时汇总
- */
- @Scheduled(fixedDelay = 3600000L)
- private void projectHour() {
- List<ChuanyunProjectCostDO> list1 = chuanyunProjectCostDao.getProjectCost();
- deleteExamineStatus(ChuanyunProjectTotalCostDO.SCHEMA_CODE,"F0000006");
- chuanyunProjectCostDao.deleteAllByStatus("2");
- list1.forEach(chuanyunProjectCostDO -> {
- //获取项目实施费用
- ChuanyunReimbursementAmountDO chuanyunReimbursementAmountDO = chuanyunReimbursementAmountDao.getAmount(chuanyunProjectCostDO.getProjectId());
- //人力成本
- ChuanyunMonthLaborCostDO chuanyunMonthLaborCostDO = chuanyunMonthLaborCostDao.getTotalCost(chuanyunProjectCostDO.getProjectId());
- //更新数据库
- ChuanyunProjectCostDO projectCostDO = new ChuanyunProjectCostDO();
- if (chuanyunMonthLaborCostDO!=null){
- projectCostDO.setCost(chuanyunMonthLaborCostDO.getAmount());
- }
- projectCostDO.setProjectType(chuanyunProjectCostDO.getProjectType());
- projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
- projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
- projectCostDO.setStatus(chuanyunProjectCostDO.getStatus());
- projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
- if (chuanyunReimbursementAmountDO !=null) {
- projectCostDO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
- }
- ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
- if (oldProjectDO !=null) {
- chuanyunProjectCostDao.delete(oldProjectDO);
- }
- chuanyunProjectCostDao.save(projectCostDO);
- try {
- ChuanyunProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectTotalCostDTO();
- chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
- chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
- if (chuanyunMonthLaborCostDO!=null){
- chuanyunProjectTotalCostDTO.setCost(chuanyunMonthLaborCostDO.getAmount());
- }
- chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
- chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
- chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
- if (chuanyunReimbursementAmountDO !=null) {
- chuanyunProjectTotalCostDTO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
- }
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
- matchers.add("F0000006_2,"+chuanyunProjectCostDO.getStatus());
- var filter= Filter.instance(0,1,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectTotalCostDO.SCHEMA_CODE,filter);
- var projectTotalString=objectMapper.writeValueAsString(chuanyunProjectTotalCostDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData()!=null) {
- List<ChuanyunProjectTotalCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- ChuanyunProjectTotalCostDO firstResult = result.get(0);
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectTotalCostDO.SCHEMA_CODE,firstResult.getObjectId(),projectTotalString);
- }else {
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectTotalCostDO.SCHEMA_CODE,projectTotalString,true);
- }
- if(!chuanyunSaveDTO.getSuccessful()){
- log.warn("新增项目成本汇总失败");
- }
- } catch (JsonProcessingException | BigSizeException e) {
- log.error(e.getMessage());
- log.error(""+chuanyunProjectCostDO);
- e.printStackTrace();
- }
- });
- }
- /**
- * 更新销售合同回款数据
- */
- @Scheduled(fixedDelay = 3600000L)
- private void getSaleContractPaymentReceiveFromChuanyun(){
- var start=0;
- var totalCount=0L;
- var flag=true;
- while (flag){
- try {
- //从氚云查询数据
- var filter= Filter.instance(start,start+pageSize,true);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunPaymentReceiveDO.SCHEMA_CODE,filter);
- if(chuanyunFindAllResponse.getReturnData()==null){
- flag=false;
- continue;
- }
- if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
- start+=pageSize;
- }else{
- flag=false;
- }
- //转化为POJO
- List<ChuanyunPaymentReceiveDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- result.forEach(chuanyunPaymentReceiveDO -> {
- var tmp=chuanyunPaymentReceiveDao.findById(chuanyunPaymentReceiveDO.getObjectId());
- tmp.ifPresent(chuanyunPaymentReceiveDao::delete);
- });
- //获取项目总数
- totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunPaymentReceiveDao.saveAll(result);
- }catch (Exception e){
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("项目销售合同回款信息保存保存"+totalCount);
- }
- /**
- * 人力成本
- */
- @Scheduled(fixedDelay = 3600000L)
- private void standardWorkHour() {
- var flag = true;
- var pageSize = 20;
- var page = 0;
- while(flag) {
- var pageable= PageRequest.of(page,pageSize);
- var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
- if (page<=chuanyunUserCompanyList.getTotalPages()){
- page += 1;
- //逐个将员工每天工时进行统计汇总
- List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
- userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
- long start= Instant.now().getEpochSecond();
- //工时标准化
- standardHour(chuanyunUserCompanyDO);
- log.info("每日工时标准化"+chuanyunUserCompanyDO.getUserName()+(Instant.now().getEpochSecond()-start)+"秒");
- });
- }else {
- break;
- }
- }
- }
- /**
- * 员工单日、各个项目工时标准化,并保存
- * @param chuanyunUserCompanyDO 员工信息
- */
- private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
- BigDecimal standard = new BigDecimal(8);
- //每人每个项目每天工时
- List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
- selfList.forEach(self->{
- try{
- ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
- chuanyunSelfWorkHourDO.setStatus(self.getStatus());
- chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
- chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
- if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
- chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
- }else{
- chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
- }
- chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
- //每人每天工时
- ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
- //工时标准化
- if (chuanyunWorkHourDO != null) {
- if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<0) {
- chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
- }else {
- BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
- chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
- }
- ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDate(chuanyunUserCompanyDO.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate());
- if (chuanyunSelfWorkHourDO1!=null) {
- chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
- }
- chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
- }
- }catch (Exception e){
- log.error(e.getMessage());
- log.error(""+self);
- e.printStackTrace();
- }
- });
- }
- /**
- * 人员-项目-周度工时汇总
- */
- @Scheduled(fixedDelay = 3600000L)
- private void standardWeeklyWorkHour() {
- long start=Instant.now().getEpochSecond();
- //删除数据库中审批中的数据,防止重复记录工时
- chuanyunWeekMemberHourDao.deleteAllByStatus("2");
- //更新数据库
- log.info("开始周工时标准化");
- List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
- list.forEach(chuanyunWeekMemberHourDO -> {
- if (chuanyunWeekMemberHourDO!=null){
- ChuanyunWeekMemberHourDO weekMemberHourDO = new ChuanyunWeekMemberHourDO();
- weekMemberHourDO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
- weekMemberHourDO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
- weekMemberHourDO.setStandardWorkHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
- weekMemberHourDO.setStatus(chuanyunWeekMemberHourDO.getStatus());
- weekMemberHourDO.setUserId(chuanyunWeekMemberHourDO.getUserId());
- weekMemberHourDO.setYear(chuanyunWeekMemberHourDO.getYear());
- weekMemberHourDO.setWeek(chuanyunWeekMemberHourDO.getWeek());
- ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType(),chuanyunWeekMemberHourDO.getYear());
- if (oldWeekHour != null) {
- chuanyunWeekMemberHourDao.delete(oldWeekHour);
- }
- chuanyunWeekMemberHourDao.save(weekMemberHourDO);
- }
- });
- log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
- }
- /**
- * 单月工时汇总
- */
- @Scheduled(fixedDelay = 3600000L)
- private void standardMonthlyWorkHour() {
- var flag = true;
- var pageSize = 20;
- var page = 0;
- while(flag) {
- long start=Instant.now().getEpochSecond();
- var pageable= PageRequest.of(page,pageSize);
- var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
- if (page<=chuanyunUserCompanyList.getTotalPages()){
- page += 1;
- List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
- //单项目单人单月成本
- userCompanyDOList.forEach(this::standardMonthlyHour);
- }else {
- flag = false;
- }
- }
- }
- /**
- * 员工每月、各个项目标准工时会职工
- * @param chuanyunUserCompanyDO 员工信息
- */
- private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
- //每月每项目工时,按月-项目-用户分组统计标准工时
- List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHour(chuanyunUserCompanyDO.getUserId());
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- //删除审核中数据
- chuanyunSelfCostDao.deleteAllByStatus("2");
- list.forEach(projectMonth->{
- //获取人员-月度-相同工时状态标准工时汇总
- ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()),projectMonth.getStatus());
- ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
- chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
- chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
- chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
- chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
- chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
- chuanyunSelfCostDO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
- chuanyunSelfCostDO.setTotalHour(projectMonth.getStandardWorkHour());
- chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
- ChuanyunSelfCostDO oldSelfDO = chuanyunSelfCostDao.getOldSelfDO(chuanyunSelfCostDO.getUserId(),chuanyunSelfCostDO.getProjectId(),df.format(chuanyunSelfCostDO.getDayLogDate()));
- if (oldSelfDO !=null) {
- chuanyunSelfCostDao.delete(oldSelfDO);
- }
- chuanyunSelfCostDao.save(chuanyunSelfCostDO);
- });
- }
- /**
- * 人员项目工时汇总
- */
- @Scheduled(fixedDelay = 3600000L)
- private void projectTotalHour() {
- List<ChuanyunMemberCostDO> list = chuanyunMemberCostDao.getMemberCost();
- deleteExamineStatus(ChuanyunProjectMemberCostDO.SCHEMA_CODE,"F0000007");
- chuanyunMemberCostDao.deleteAllByStatus("2");
- list.forEach(chuanyunMemberCostDO -> {
- if(StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())||StringUtils.isEmpty(chuanyunMemberCostDO.getUserId())){
- log.info("########"+chuanyunMemberCostDO+"");
- }else{
- BigDecimal standard = new BigDecimal(8);
- ChuanyunMemberCostDO memberCostDO = new ChuanyunMemberCostDO();
- memberCostDO.setCost(chuanyunMemberCostDO.getCost());
- memberCostDO.setProjectType(chuanyunMemberCostDO.getProjectType());
- memberCostDO.setProjectId(chuanyunMemberCostDO.getProjectId());
- memberCostDO.setUserId(chuanyunMemberCostDO.getUserId());
- memberCostDO.setTotalHour(chuanyunMemberCostDO.getTotalHour());
- memberCostDO.setStatus(chuanyunMemberCostDO.getStatus());
- memberCostDO.setPersonDays(chuanyunMemberCostDO.getTotalHour().divide(standard,2,RoundingMode.HALF_UP));
- ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectIdAndStatus(chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getStatus());
- if (oldCostDO !=null) {
- chuanyunMemberCostDao.delete(oldCostDO);
- }
- chuanyunMemberCostDao.save(memberCostDO);
- //更新氚云数据
- try {
- ChuanyunProjectMemberCostDTO chuanyunProjectMemberCostDTO = new ChuanyunProjectMemberCostDTO();
- chuanyunProjectMemberCostDTO.setProjectId(chuanyunMemberCostDO.getProjectId());
- chuanyunProjectMemberCostDTO.setUserId(chuanyunMemberCostDO.getUserId());
- chuanyunProjectMemberCostDTO.setCost(chuanyunMemberCostDO.getCost());
- chuanyunProjectMemberCostDTO.setWorkHour(chuanyunMemberCostDO.getTotalHour());
- chuanyunProjectMemberCostDTO.setProjectType(chuanyunMemberCostDO.getProjectType());
- chuanyunProjectMemberCostDTO.setStatus(chuanyunMemberCostDO.getStatus());
- chuanyunProjectMemberCostDTO.setPersonDays(chuanyunMemberCostDO.getTotalHour().divide(standard,2,RoundingMode.HALF_UP));
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2,"+chuanyunMemberCostDO.getProjectId());
- matchers.add("F0000007_2,"+chuanyunMemberCostDO.getStatus());
- matchers.add("F0000002_2,"+chuanyunMemberCostDO.getUserId());
- var filter= Filter.instance(0,1,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectMemberCostDO.SCHEMA_CODE,filter);
- var projectMemberString =objectMapper.writeValueAsString(chuanyunProjectMemberCostDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData()!=null) {
- List<ChuanyunProjectMemberCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- ChuanyunProjectMemberCostDO oldProjectMemberCostDO = result.get(0);
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberCostDO.SCHEMA_CODE,oldProjectMemberCostDO.getObjectId(), projectMemberString);
- }else {
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberCostDO.SCHEMA_CODE, projectMemberString,true);
- }
- if(!chuanyunSaveDTO.getSuccessful()){
- log.warn("新增项目成员成本汇总失败");
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- log.warn("########"+chuanyunMemberCostDO+"");
- }
- }
- });
- }
- /**
- * 定时更新氚云数据
- */
- @Scheduled(fixedDelay = 3600000L)
- private void updateChuanyunStandardWorkHour(){
- var flag = true;
- var pageSize = 20;
- var page = 0;
- log.info("开始更新日工时汇总");
- long startTime=Instant.now().getEpochSecond();
- while(flag) {
- var pageable= PageRequest.of(page,pageSize);
- var updateList=chuanyunSelfWorkHourDao.findAll(pageable);
- if (page<=updateList.getTotalPages()){
- page += 1;
- updateList.forEach(chuanyunSelfWorkHourDO -> {
- try{
- String departmentId=chuanyunUserCompanyDao.findAllByUserId(chuanyunSelfWorkHourDO.getUserId()).get(0).getDepartmentId();
- ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
- BeanUtils.copyProperties(chuanyunSelfWorkHourDO,chuanyunSelfWorkHourDTO);
- chuanyunSelfWorkHourDTO.setDepartmentId(departmentId);
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2,"+chuanyunSelfWorkHourDO.getProjectId());
- matchers.add("F0000002_2,"+chuanyunSelfWorkHourDO.getUserId());
- matchers.add("F0000003_2,"+chuanyunSelfWorkHourDO.getDayLogDate());
- matchers.add("F0000005_2,"+chuanyunSelfWorkHourDO.getProjectType());
- // matchers.add("F0000006_2,"+self.getStatus());
- var filter= Filter.instance(0,1,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
- var selfMonthString=objectMapper.writeValueAsString(chuanyunSelfWorkHourDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData()!=null){
- List<ChuanyunMemberHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- ChuanyunMemberHourDO firstResult = result.get(0);
- chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
- }else {
- chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberHourDO.SCHEMA_CODE,selfMonthString,true);
- }
- if(!chuanyunSaveDTO.getSuccessful()){
- log.warn("新增工时标准化失败");
- }
- }catch (Exception e){
- e.printStackTrace();
- log.warn("更新标准工时异常");
- }
- });
- }else {
- //流程执行完
- break;
- }
- }
- log.info("日工时更新花费"+(Instant.now().getEpochSecond()-startTime));
- }
- /**
- * 人员-项目-周度工时汇总,更新氚云数据
- */
- @Scheduled(fixedDelay = 3600000L)
- private void updateChuanyunWeekHour(){
- var flag = true;
- var pageSize = 20;
- var page = 0;
- log.info("开始更新周工时汇总");
- deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007");
- long startTime=Instant.now().getEpochSecond();
- while(flag) {
- var pageable = PageRequest.of(page, pageSize);
- var updateList = chuanyunWeekMemberHourDao.findAll(pageable);
- if (page<=updateList.getTotalPages()){
- page += 1;
- updateList.getContent().forEach(chuanyunWeekMemberHourDO -> {
- //更新氚云
- try {
- String departmentId=chuanyunUserCompanyDao.findAllByUserId(chuanyunWeekMemberHourDO.getUserId()).get(0).getDepartmentId();
- BigDecimal standard = new BigDecimal(8);
- ChuanyunProjectMemberWeekHourDTO chuanyunProjectMemberWeekHourDTO = new ChuanyunProjectMemberWeekHourDTO();
- chuanyunProjectMemberWeekHourDTO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
- chuanyunProjectMemberWeekHourDTO.setUserId(chuanyunWeekMemberHourDO.getUserId());
- chuanyunProjectMemberWeekHourDTO.setWeek(chuanyunWeekMemberHourDO.getWeek());
- chuanyunProjectMemberWeekHourDTO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
- chuanyunProjectMemberWeekHourDTO.setTotalHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
- chuanyunProjectMemberWeekHourDTO.setPersonDays(chuanyunWeekMemberHourDO.getStandardWorkHour().divide(standard,2,RoundingMode.HALF_UP));
- chuanyunProjectMemberWeekHourDTO.setHourStatus(chuanyunWeekMemberHourDO.getStatus());
- chuanyunProjectMemberWeekHourDTO.setYear(chuanyunProjectMemberWeekHourDTO.getYear());
- chuanyunProjectMemberWeekHourDTO.setDepartmentId(departmentId);
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2,"+chuanyunWeekMemberHourDO.getProjectId());
- matchers.add("F0000002_2,"+chuanyunWeekMemberHourDO.getUserId());
- matchers.add("F0000006_2,"+chuanyunWeekMemberHourDO.getWeek());
- matchers.add("F0000008_2,"+chuanyunWeekMemberHourDO.getYear());
- matchers.add("F0000003_2,"+chuanyunWeekMemberHourDO.getProjectType());
- matchers.add("F0000007_2,"+chuanyunWeekMemberHourDO.getStatus());
- var filter= Filter.instance(0,1,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,filter);
- var selfMonthString=objectMapper.writeValueAsString(chuanyunProjectMemberWeekHourDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData()!=null) {
- List<ChuanyunProjectMemberWeekHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- ChuanyunProjectMemberWeekHourDO firstResult = result.get(0);
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
- }else {
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,selfMonthString,true);
- }
- if(!chuanyunSaveDTO.getSuccessful()){
- log.warn("新增人员项目周度工时失败");
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- }
- });
- }else {
- //流程执行完
- break;
- }
- }
- log.info("周工时更新花费"+(Instant.now().getEpochSecond()-startTime));
- }
- /**
- * 人员-项目-月度工时汇总,更新氚云数据
- */
- @Scheduled(fixedDelay = 3600000L)
- private void updateChuanyunMonthHour(){
- var flag = true;
- var pageSize = 20;
- var page = 0;
- log.info("开始更新月工时汇总");
- //删除氚云表单审核中数据
- deleteExamineStatus(ChuanyunMemberMonthCostDO.SCHEMA_CODE,"F0000009");
- long startTime=Instant.now().getEpochSecond();
- while(flag) {
- var pageable = PageRequest.of(page, pageSize);
- var updateList = chuanyunSelfCostDao.findAll(pageable);
- if (page<=updateList.getTotalPages()){
- page += 1;
- updateList.getContent().forEach(chuanyunSelfCostDO -> {
- ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new ChuanyunMemberMonthCostDTO();
- //更新氚云数据
- chuanyunMemberMonthCostDTO.setCost(chuanyunSelfCostDO.getCost());
- chuanyunMemberMonthCostDTO.setProjectId(chuanyunSelfCostDO.getProjectId());
- chuanyunMemberMonthCostDTO.setProjectType(chuanyunSelfCostDO.getProjectType());
- chuanyunMemberMonthCostDTO.setStatus(chuanyunSelfCostDO.getStatus());
- chuanyunMemberMonthCostDTO.setUserId(chuanyunSelfCostDO.getUserId());
- chuanyunMemberMonthCostDTO.setMonthWorkHour(chuanyunSelfCostDO.getMonthlyTotalHour());
- chuanyunMemberMonthCostDTO.setDayLogDate(chuanyunSelfCostDO.getDayLogDate());
- chuanyunMemberMonthCostDTO.setWorkHour(chuanyunSelfCostDO.getTotalHour());
- chuanyunMemberMonthCostDTO.setDepartmentId(chuanyunSelfCostDO.getDepartmentId());
- try {
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
- matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
- matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
- matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
- var filter= Filter.instance(0,1,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
- var memberMonthString=objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData()!=null){
- List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- ChuanyunMemberMonthCostDO firstResult = result.get(0);
- chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberMonthCostDO.SCHEMA_CODE,firstResult.getObjectId(),memberMonthString);
- }else {
- chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE,memberMonthString,true);
- }
- if(!chuanyunSaveDTO.getSuccessful()){
- log.warn("新增项目成员月度成本汇总失败");
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.warn("########"+chuanyunSelfCostDO+"");
- }
- });
- }else {
- //流程执行完
- break;
- }
- }
- log.info("月工时更新花费"+(Instant.now().getEpochSecond()-startTime));
- }
- /**
- * 删除状态为审核中数据
- * @param schemaCode
- * @param buttonCode
- */
- public void deleteExamineStatus(String schemaCode,String buttonCode) {
- try {
- List<String> matchers = new ArrayList<>();
- matchers.add(buttonCode+"_2,"+"2");
- var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
- var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
- if (chuanyunFindAllResponse.getReturnData()!=null){
- List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
- result.forEach(basicDO -> {
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
- if(chuanyunSaveDTO.getSuccessful()){
- log.info("删除状态为审核中数据成功");
- }else{
- log.warn("删除状态为审核中数据失败");
- }
- });
- }
- }catch (Exception e) {
- e.printStackTrace();
- log.error(e.getMessage());
- }
- }
- @Data
- class ChuanyunMemberMonthCostDTO{
- /**
- * 项目ID
- */
- @JsonProperty("F0000003")
- private String projectId;
- /**
- * 项目类型
- */
- @JsonProperty("F0000008")
- private String projectType;
- /**
- * 日志流程状态
- */
- @JsonProperty("F0000009")
- private String status;
- /**
- * 用户ID
- */
- @JsonProperty("F0000002")
- private String userId;
- /**
- * 日期
- */
- @JsonProperty("F0000004")
- @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
- @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
- private LocalDateTime dayLogDate;
- /**
- * 工时
- */
- @JsonProperty("F0000005")
- private BigDecimal workHour;
- /**
- * 成本
- */
- @JsonProperty("F0000006")
- private BigDecimal cost;
- /**
- * 月度工时汇总
- */
- @JsonProperty("F0000007")
- private BigDecimal monthWorkHour;
- /**
- * 部门Id
- */
- @JsonProperty("F0000010")
- private String departmentId;
- }
- @Data
- class ChuanyunProjectMemberCostDTO {
- /**
- * 项目ID
- */
- @JsonProperty("F0000001")
- private String projectId;
- /**
- * 项目类型
- */
- @JsonProperty("F0000005")
- private String projectType;
- /**
- * 用户ID
- */
- @JsonProperty("F0000002")
- private String userId;
- /**
- * 工时
- */
- @JsonProperty("F0000003")
- private BigDecimal workHour;
- /**
- * 成本
- */
- @JsonProperty("F0000004")
- private BigDecimal cost;
- /**
- * 总人天
- */
- @JsonProperty("F0000006")
- private BigDecimal personDays;
- /**
- * 工时状态
- */
- @JsonProperty("F0000007")
- private String status;
- }
- /**
- * 人员项目周度工时
- */
- @Data
- class ChuanyunProjectMemberWeekHourDTO{
- @JsonProperty("F0000001")
- private String projectId;
- @JsonProperty("F0000002")
- private String userId;
- @JsonProperty("F0000003")
- private String projectType;
- @JsonProperty("F0000004")
- private BigDecimal totalHour;
- @JsonProperty("F0000005")
- private BigDecimal personDays;
- @JsonProperty("F0000008")
- private String year;
- @JsonProperty("F0000006")
- private String week;
- @JsonProperty("F0000007")
- private String hourStatus;
- /**
- * 部门信息
- */
- @JsonProperty("F0000009")
- private String departmentId;
- }
- /**
- * 项目汇总工时
- */
- @Data
- class ChuanyunProjectTotalCostDTO{
- /**
- * 项目ID
- */
- @JsonProperty("F0000001")
- private String projectId;
- /**
- * 项目类型
- */
- @JsonProperty("F0000004")
- private String projectType;
- /**
- * 工时
- */
- @JsonProperty("F0000003")
- private BigDecimal workHour;
- /**
- * 成本
- */
- @JsonProperty("F0000002")
- private BigDecimal cost;
- /**
- * 总人天
- */
- @JsonProperty("F0000005")
- private BigDecimal personDays;
- /**
- * 工时状态
- */
- @JsonProperty("F0000006")
- private String status;
- @JsonProperty("F0000007")
- private BigDecimal amount;
- }
- @Data
- class ChuanyunAdjustAccountDTO {
- @JsonProperty("F0000002")
- private String projectCode;
- /**
- * 核算实施人天
- */
- @JsonProperty("F0000003")
- private BigDecimal personDays;
- /**
- * 核算实施人力成本
- */
- @JsonProperty("F0000004")
- private BigDecimal laborCost;
- /**
- * 核算实施费用
- */
- @JsonProperty("F0000005")
- private BigDecimal implementationCosts;
- /**
- *核算实施总成本
- */
- @JsonProperty("F0000006")
- private BigDecimal totalImplementationCosts;
- /**
- * 项目
- */
- @JsonProperty("F0000007")
- private String projectId;
- }
- /**
- * 工时标准化更新数据
- */
- @Data
- class ChuanyunSelfWorkHourDTO {
- @JsonProperty("F0000002")
- private String userId;
- @JsonProperty("F0000001")
- private String projectId;
- /**
- * 项目类型
- */
- @JsonProperty("F0000005")
- private String projectType;
- /**
- * 流程状态
- */
- @JsonProperty("F0000006")
- private String status;
- @JsonProperty("F0000003")
- @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
- @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
- private LocalDateTime dayLogDate;
- @JsonProperty("F0000004")
- private BigDecimal standardWorkHour;
- /**
- * 部门Id
- */
- @JsonProperty("F0000007")
- private String departmentId;
- }
- }
|