|
@@ -12,6 +12,7 @@ import com.management.platform.entity.vo.SysRichFunction;
|
|
|
import com.management.platform.mapper.*;
|
|
|
import com.management.platform.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.management.platform.util.DateTimeUtil;
|
|
|
import com.management.platform.util.ExcelUtil;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
import com.management.platform.util.MessageUtils;
|
|
@@ -37,6 +38,7 @@ import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.sql.Wrapper;
|
|
|
+import java.text.NumberFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.Instant;
|
|
|
import java.time.LocalDate;
|
|
@@ -106,6 +108,8 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
|
Integer companyId = user.getCompanyId();
|
|
|
LambdaQueryWrapper<Plan> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ NumberFormat format = NumberFormat.getPercentInstance();
|
|
|
+ format.setMinimumFractionDigits(2);
|
|
|
queryWrapper.eq(Plan::getCompanyId,companyId);
|
|
|
if(planType!=2){
|
|
|
queryWrapper.eq(Plan::getPlanType,0);
|
|
@@ -185,6 +189,12 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
|
ptIds.add(-1);
|
|
|
List<ProdProcedureTeam> procedureTeams = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().in("plan_procedure_id", ptIds));
|
|
|
List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
|
|
|
+ //获取计划进度
|
|
|
+ List<Map<String, Object>> planRealTimeProgressList=new ArrayList<>();
|
|
|
+ if(isMob==1){
|
|
|
+ planRealTimeProgressList= reportMapper.getPlanRealTimeProgressList(companyId, null, null, null, null, null, null, null, planIds);
|
|
|
+ }
|
|
|
+ List<Map<String, Object>> finalPlanRealTimeProgressList = planRealTimeProgressList;
|
|
|
records.forEach(rs->{
|
|
|
Optional<Product> first = productList.stream().filter(pl -> pl.getId().equals(rs.getProductId())).findFirst();
|
|
|
if(first.isPresent()){
|
|
@@ -228,6 +238,17 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
|
bigDecimal=bigDecimal.multiply(new BigDecimal(String.valueOf(rs.getPlanWorkHour())));
|
|
|
rs.setTotalMoney(bigDecimal.doubleValue());
|
|
|
}
|
|
|
+ if(isMob==1){
|
|
|
+ Optional<Map<String, Object>> first1 = finalPlanRealTimeProgressList.stream().filter(pt -> pt.get("planId").equals(rs.getId())).findFirst();
|
|
|
+ if(first1.isPresent()){
|
|
|
+ BigDecimal planWorkTime = new BigDecimal(first1.get().get("planWorkTime") == null ? 0 : Double.valueOf(String.valueOf(first1.get().get("planWorkTime"))));
|
|
|
+ BigDecimal nowWorkTime = new BigDecimal(first1.get().get("nowWorkTime") == null ? 0 : Double.valueOf(String.valueOf(first1.get().get("nowWorkTime"))));
|
|
|
+ if(nowWorkTime.compareTo(BigDecimal.ZERO)!=0){
|
|
|
+ BigDecimal divide = nowWorkTime.divide(planWorkTime, 4, RoundingMode.HALF_UP);
|
|
|
+ rs.setProgress(format.format(divide.doubleValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
Map map=new HashMap();
|
|
|
map.put("total",planIPage.getTotal());
|
|
@@ -1213,4 +1234,25 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
|
}
|
|
|
return msg;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getNowMouthProdProgress() {
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
+ NumberFormat format = NumberFormat.getPercentInstance();
|
|
|
+ format.setMinimumFractionDigits(2);
|
|
|
+ LocalDate now=LocalDate.now();
|
|
|
+ Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
+ DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ List<String> monthStartAndEnd = DateTimeUtil.getMonthStartAndEnd(now.getMonth().getValue());
|
|
|
+ List<Map<String, Object>> planRealTimeProgressList = reportMapper.getPlanRealTimeProgressList(companyId, null, null, null, monthStartAndEnd.get(0), monthStartAndEnd.get(1), null, null, null);
|
|
|
+ double planWorkTimeAll = planRealTimeProgressList.stream().mapToDouble(pt -> Double.valueOf(String.valueOf(pt.get("planWorkTime")))).sum();
|
|
|
+ double nowWorkTimeAll = planRealTimeProgressList.stream().mapToDouble(pt -> Double.valueOf(String.valueOf(pt.get("nowWorkTime")))).sum();
|
|
|
+ BigDecimal nowWorkTime=new BigDecimal(nowWorkTimeAll);
|
|
|
+ if(nowWorkTime.compareTo(BigDecimal.ZERO)!=0){
|
|
|
+ BigDecimal divide = nowWorkTime.divide(new BigDecimal(planWorkTimeAll), 4, RoundingMode.HALF_UP);
|
|
|
+ msg.setData(format.format(divide.doubleValue()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
}
|