|
@@ -1,6 +1,7 @@
|
|
|
package org.jeecg.modules.fbsWorkshopDispatchList.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import io.swagger.models.auth.In;
|
|
|
import org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList;
|
|
|
import org.jeecg.modules.fbsWorkshopDispatchList.mapper.FbsWorkshopDispatchListMapper;
|
|
|
import org.jeecg.modules.fbsWorkshopDispatchList.service.IFbsWorkshopDispatchListService;
|
|
@@ -10,10 +11,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
+import static org.jeecg.common.util.oConvertUtils.isEmpty;
|
|
|
+
|
|
|
/**
|
|
|
* @Description: 车间派工单
|
|
|
* @author: jeecg-boot
|
|
@@ -41,18 +45,24 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
|
|
|
|
|
|
@Override
|
|
|
public List<FbsWorkshopDispatchList> getSumDispatch() {
|
|
|
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
//求和的派工单集合
|
|
|
List<FbsWorkshopDispatchList> fbsWorkshopDispatchListListSum=fbsWorkshopDispatchListMapper.getSumDispatch();
|
|
|
//全部派工单为求和
|
|
|
- LambdaQueryWrapper<FbsWorkshopDispatchList> lambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(FbsWorkshopDispatchList::getDelFlag,"0");
|
|
|
- List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=iFbsWorkshopDispatchListService.list(lambdaQueryWrapper);
|
|
|
+// LambdaQueryWrapper<FbsWorkshopDispatchList> lambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
+// lambdaQueryWrapper.eq(FbsWorkshopDispatchList::getDelFlag,"0");
|
|
|
+// List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=iFbsWorkshopDispatchListService.list(lambdaQueryWrapper);
|
|
|
+ //获取开始时间结束时间 当前日期前15天时间
|
|
|
+ String startTime = fmt.format(new Date().getTime()-14*24*60*60*1000);
|
|
|
+ String endTime = fmt.format(new Date());
|
|
|
+ List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=fbsWorkshopDispatchListMapper.getDispatchClose(startTime,endTime);
|
|
|
//两个时间之间的所有日期
|
|
|
- List<Date> dateList=startDateAndEndDate("2020-10-14","2020-10-17");
|
|
|
- SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ List<Date> dateList=startDateAndEndDate(startTime,endTime);
|
|
|
+
|
|
|
//组装派工单报表数据
|
|
|
if(fbsWorkshopDispatchListListSum!=null&&fbsWorkshopDispatchListList!=null&&dateList!=null){
|
|
|
for(FbsWorkshopDispatchList dispatchListSum:fbsWorkshopDispatchListListSum){
|
|
|
+ Integer quantityCompletedTotal=0;
|
|
|
List<FbsWorkshopDispatchList> dispatchListAdd=new ArrayList<>();//需要保存子集集合的派工单(日期分组派工单)
|
|
|
for(Date date:dateList){
|
|
|
String dateString=fmt.format(date);//时间
|
|
@@ -60,26 +70,35 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
|
|
|
for(FbsWorkshopDispatchList dispatchList:fbsWorkshopDispatchListList){
|
|
|
Integer orderIdSum=dispatchListSum.getProductionOrderNumberId();//求和的派工生产单号
|
|
|
Integer orderId=dispatchList.getProductionOrderNumberId();//全部派工生产单号
|
|
|
- String dispatchDate=fmt.format(dispatchList.getDate());//派工时间
|
|
|
+ String dispatchDate=fmt.format(dispatchList.getEndDate());//完工时间
|
|
|
+ String proSum=dispatchListSum.getProductId();//求和中的产品id
|
|
|
+ String pro=dispatchList.getProductId();//全部中的产品id
|
|
|
//找到对应当天的派工单则添加
|
|
|
- if(orderIdSum.equals(orderId)&&dateString.equals(dispatchDate)){
|
|
|
+ if(orderIdSum.equals(orderId)&&dateString.equals(dispatchDate)&&proSum.equals(pro)){
|
|
|
dispatchListAdd.add(dispatchList);
|
|
|
+ quantityCompletedTotal+=dispatchList.getQualifiedNumber();//统计累计完成数量
|
|
|
isorder=true;
|
|
|
}
|
|
|
}
|
|
|
//没有则添加空的派工单
|
|
|
if(isorder==false){
|
|
|
FbsWorkshopDispatchList fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
|
|
|
- fbsWorkshopDispatchList.setDate(date);
|
|
|
+ fbsWorkshopDispatchList.setEndDate(date);
|
|
|
dispatchListAdd.add(fbsWorkshopDispatchList);
|
|
|
}
|
|
|
}
|
|
|
+ if(quantityCompletedTotal!=0){
|
|
|
+ dispatchListSum.setQuantityCompletedTotal(quantityCompletedTotal);
|
|
|
+ }
|
|
|
+
|
|
|
dispatchListSum.setFbsWorkshopDispatchListList(dispatchListAdd);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获取生产名称合并行
|
|
|
mergeLines(fbsWorkshopDispatchListListSum);
|
|
|
+ //获取统计信息
|
|
|
+ getStatisticsTotal(fbsWorkshopDispatchListListSum,dateList);
|
|
|
return fbsWorkshopDispatchListListSum;
|
|
|
}
|
|
|
|
|
@@ -142,6 +161,95 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+* @Author chenchuang
|
|
|
+* @Description //TODO 获取统计行的数据
|
|
|
+* @Date 2020/10/20 17:30
|
|
|
+* @Param [fbsWorkshopDispatchListList, dateList]
|
|
|
+* @return void
|
|
|
+*/
|
|
|
+ public void getStatisticsTotal(List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList,List<Date> dateList){
|
|
|
+ Integer numberOfTasksTotal=0;//月度计划
|
|
|
+ BigDecimal standardWorkingHoursTotal=new BigDecimal(0.00);//标准工时
|
|
|
+ Integer quantityCompletedTotal=0;//累计完成数量
|
|
|
+
|
|
|
+ //循环累加计算
|
|
|
+ for(FbsWorkshopDispatchList workshopDispatchList:fbsWorkshopDispatchListList){
|
|
|
+ if(isNumber(workshopDispatchList.getNumberOfTasksTotal())){
|
|
|
+ numberOfTasksTotal+=Integer.parseInt(workshopDispatchList.getNumberOfTasksTotal());
|
|
|
+ }
|
|
|
+ if(isNumber(workshopDispatchList.getStandardWorkingHoursTotal())){
|
|
|
+ standardWorkingHoursTotal=standardWorkingHoursTotal.add(getDecimal(Double.parseDouble(workshopDispatchList.getStandardWorkingHoursTotal())));
|
|
|
+ }
|
|
|
+ if(workshopDispatchList.getQuantityCompletedTotal()!=null){
|
|
|
+ quantityCompletedTotal+=workshopDispatchList.getQuantityCompletedTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //获取按日期排列的统计数据
|
|
|
+ List<FbsWorkshopDispatchList> fbsWorkshopDispatchListListTotal=new ArrayList<>();
|
|
|
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ //循环时间段
|
|
|
+ for(Date date:dateList){
|
|
|
+ String dateN=fmt.format(date);
|
|
|
+ Integer numberOfTasks=0;//当日计算数量
|
|
|
+ Integer qualifiedNumber=0;//当日完成数量;
|
|
|
+ BigDecimal standardWorkingHours=new BigDecimal(0.00);//当日标准工时;
|
|
|
+ //循环报表数据获取对应的时间数据
|
|
|
+ for(FbsWorkshopDispatchList workshopDispatchList:fbsWorkshopDispatchListList){
|
|
|
+ if(workshopDispatchList.getFbsWorkshopDispatchListList()!=null){
|
|
|
+ for(FbsWorkshopDispatchList workshopDispatchListC:workshopDispatchList.getFbsWorkshopDispatchListList()){
|
|
|
+ String endDate=fmt.format(workshopDispatchListC.getEndDate());
|
|
|
+ //找到对应时间的数据
|
|
|
+ if(dateN.equals(endDate)){//累加
|
|
|
+ if(workshopDispatchListC.getNumberOfTasks()!=null){
|
|
|
+ numberOfTasks+=workshopDispatchListC.getNumberOfTasks();
|
|
|
+ }
|
|
|
+ if(workshopDispatchListC.getQualifiedNumber()!=null){
|
|
|
+ qualifiedNumber+=workshopDispatchListC.getQualifiedNumber();
|
|
|
+ }
|
|
|
+ if(isNumber(workshopDispatchListC.getStandardWorkingHours())){
|
|
|
+ standardWorkingHours=standardWorkingHours.add(getDecimal(Double.parseDouble(workshopDispatchListC.getStandardWorkingHours())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //存储
|
|
|
+ FbsWorkshopDispatchList fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
|
|
|
+ fbsWorkshopDispatchList.setNumberOfTasks(numberOfTasks);
|
|
|
+ fbsWorkshopDispatchList.setQualifiedNumber(qualifiedNumber);
|
|
|
+ fbsWorkshopDispatchList.setStandardWorkingHours(standardWorkingHours.doubleValue()+"");
|
|
|
+ fbsWorkshopDispatchListListTotal.add(fbsWorkshopDispatchList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //放到最后一行
|
|
|
+ FbsWorkshopDispatchList fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
|
|
|
+ fbsWorkshopDispatchList.setProductionLineName("统计");
|
|
|
+ fbsWorkshopDispatchList.setNumberOfTasksTotal(numberOfTasksTotal+"");
|
|
|
+ fbsWorkshopDispatchList.setStandardWorkingHoursTotal(standardWorkingHoursTotal.doubleValue()+"");
|
|
|
+ fbsWorkshopDispatchList.setQuantityCompletedTotal(quantityCompletedTotal);
|
|
|
+ fbsWorkshopDispatchList.setFbsWorkshopDispatchListList(fbsWorkshopDispatchListListTotal);
|
|
|
+ fbsWorkshopDispatchListList.add(fbsWorkshopDispatchList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public BigDecimal getDecimal(Double d){
|
|
|
+ BigDecimal decimal= new BigDecimal(d);
|
|
|
+ return decimal;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isNumber(String str){
|
|
|
+ if(isEmpty(str)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String reg = "\\d+(\\.\\d+)?";
|
|
|
+ return str.matches(reg);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Map<String,Object> getProductHoursMonthReport() {
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
@@ -164,11 +272,49 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getAttendance() {
|
|
|
+ List<Map<String, Object>> mapList=new ArrayList<>();
|
|
|
+ //查询数据存在的月份出勤
|
|
|
+ List<Map<String, Object>> mapRelut=fbsWorkshopDispatchListMapper.getAttendance();
|
|
|
+ for(int i=1;i<=12;i++){
|
|
|
+ String month="";
|
|
|
+ //获取月份字符
|
|
|
+ if(i<10){
|
|
|
+ month="0"+i;
|
|
|
+ }else{
|
|
|
+ month=i+"";
|
|
|
+ }
|
|
|
+ boolean ismonth=false;//是否该月的数据
|
|
|
+ for(Map<String, Object> map:mapRelut){
|
|
|
+ //查询是否有
|
|
|
+ if(month.equals(map.get("label"))){
|
|
|
+ ismonth=true;
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果没有则
|
|
|
+ if(ismonth==false){
|
|
|
+ Map<String, Object> map=new HashMap<>();
|
|
|
+ map.put("label",month);
|
|
|
+ map.put("sum1",0);
|
|
|
+ map.put("sum2",0);
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
|
|
|
- List<String> month=new ArrayList<>();
|
|
|
-// month.add();
|
|
|
-
|
|
|
- return fbsWorkshopDispatchListMapper.getAttendance();
|
|
|
+ @Override
|
|
|
+ public boolean writeBackManHoursCompleted(String manHoursCompleted,String fbsWorkshopDispatchListId) {
|
|
|
+ Boolean isReults=false;
|
|
|
+ //根据id查询派工单
|
|
|
+ FbsWorkshopDispatchList fbsWorkshopDispatchListGetById=fbsWorkshopDispatchListMapper.selectById(fbsWorkshopDispatchListId);
|
|
|
+ fbsWorkshopDispatchListGetById.setManHoursCompleted(manHoursCompleted);//回写的完成工时
|
|
|
+ //回写
|
|
|
+ int reultRow=fbsWorkshopDispatchListMapper.updateById(fbsWorkshopDispatchListGetById);
|
|
|
+ if(reultRow>0){
|
|
|
+ isReults=true;
|
|
|
+ }
|
|
|
+ return isReults;
|
|
|
}
|
|
|
|
|
|
|