Parcourir la source

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper into master

seyason il y a 2 ans
Parent
commit
ef0f733894

+ 38 - 19
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyController.java

@@ -128,27 +128,46 @@ public class CompanyController {
         //生成费用报销默认条目
         String[] expenseTypes = Constant.EXPENSE_TYPES;
         List<String> commonly = new ArrayList<>();
-        commonly.add("材料费");
-        commonly.add("办公用品");
-        commonly.add("培训费");
-        commonly.add("打印费");
-        commonly.add("快递费");
-        commonly.add("制作费");
-        commonly.add("律师费");
-        commonly.add("水费");
-        commonly.add("电费");
-        commonly.add("团建费");
-        commonly.add("其他");
+        //commonly.add("材料费");
+        commonly.add(MessageUtils.message("entry.materialCost"));
+        //commonly.add("办公用品");
+        commonly.add(MessageUtils.message("entry.workCost"));
+        //commonly.add("培训费");
+        commonly.add(MessageUtils.message("entry.trainCost"));
+        //commonly.add("打印费");
+        commonly.add(MessageUtils.message("entry.printCost"));
+        //commonly.add("快递费");
+        commonly.add(MessageUtils.message("entry.expressCost"));
+        //commonly.add("制作费");
+        commonly.add(MessageUtils.message("entry.makeCost"));
+        //commonly.add("律师费");
+        commonly.add(MessageUtils.message("entry.lawyerCost"));
+        //commonly.add("水费");
+        commonly.add(MessageUtils.message("entry.waterCost"));
+        //commonly.add("电费");
+        commonly.add(MessageUtils.message("entry.electricCost"));
+        //commonly.add("团建费");
+        commonly.add(MessageUtils.message("entry.leagueCost"));
+        //commonly.add("其他");
+        commonly.add(MessageUtils.message("entry.other"));
         List<String> travel  = new ArrayList<>();
-        travel.add("城市间交通费");
-        travel.add("住宿费");
-        travel.add("伙食补助费");
-        travel.add("市内交通费");
-        travel.add("其他差旅费");
+        //travel.add("城市间交通费");
+        travel.add(MessageUtils.message("entry.cityTrafficCost"));
+        //travel.add("住宿费");
+        travel.add(MessageUtils.message("entry.liveCost"));
+        //travel.add("伙食补助费");
+        travel.add(MessageUtils.message("entry.eatCost"));
+        //travel.add("市内交通费");
+        travel.add(MessageUtils.message("entry.insideCityCost"));
+        //travel.add("其他差旅费");
+        travel.add(MessageUtils.message("entry.otherLiveTraCost"));
         List<String> outsource = new ArrayList<>();
-        outsource.add("项目外包费");
-        outsource.add("劳务外包费");
-        outsource.add("其他外包费");
+        //outsource.add("项目外包费");
+        outsource.add(MessageUtils.message("entry.projectCost"));
+        //outsource.add("劳务外包费");
+        outsource.add(MessageUtils.message("entry.labourCost"));
+        //outsource.add("其他外包费");
+        outsource.add(MessageUtils.message("entry.OtherOutsourceCost"));
         List<ExpenseType> expenseTypeList=new ArrayList<>();
         for (String expenseType : expenseTypes) {
             ExpenseType item=new ExpenseType();

+ 6 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/FinanceController.java

@@ -133,9 +133,11 @@ public class FinanceController {
         //判断是否启用了工号模式
         TimeType timeType = timeTypeMapper.selectById(companyId);
         if (timeType.getFinanceJobnumEnabled() == 1) {
-            heads.add("工号");
+            //heads.add("工号");
+            heads.add(MessageUtils.message("entry.No"));
         }
-        heads.add("姓名");
+        //heads.add("姓名");
+        heads.add(MessageUtils.message("entry.name"));
         heads.add(item.getMonthCost());//heads.add("工资");
         heads.add(item.getBonus());//heads.add("奖金");
         heads.add(item.getAllowance());//heads.add("津贴");
@@ -150,7 +152,8 @@ public class FinanceController {
         }
         List<List<String>> allList = new ArrayList<>();
         allList.add(heads);
-        String fileName = company.getCompanyName()+"_财务人员成本模板";
+        //String fileName = company.getCompanyName()+"_财务人员成本模板";
+        String fileName = MessageUtils.message("fileName.financialCost",company.getCompanyName());
         msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, allList, path);
 
         return msg;

+ 52 - 26
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -634,54 +634,80 @@ public class ProjectController {
         List<String> collect = providerCategoryList.stream().distinct().map(pc -> pc.getProviderCategoryName()).collect(Collectors.toList());
         TimeType timeType = timeTypeMapper.selectById(companyId);
         if(timeType.getMainProjectState()==1){
-            heads.add("主项目");
+            //heads.add("主项目");
+            heads.add(MessageUtils.message("entry.mainProject"));
         }
-        heads.add("项目编号");
+        //heads.add("项目编号");
+        heads.add(MessageUtils.message("entry.projectId"));
         if(company.getId()==936){
-            heads.add("合同编号");
+            //heads.add("合同编号");
+            heads.add(MessageUtils.message("entry.contractNo"));
         }
         if(timeType.getMainProjectState()!=1){
-            heads.add("项目分类");
+            //heads.add("项目分类");
+            heads.add(MessageUtils.message("entry.projectType"));
         }
-        heads.add("是否为公共项目");
-        heads.add("项目名称");
+        //heads.add("是否为公共项目");
+        heads.add(MessageUtils.message("entry.publicProject"));
+        //heads.add("项目名称");
+        heads.add(MessageUtils.message("entry.projectName"));
         if(timeType.getMainProjectState()!=1){
-            heads.add("子项目(多个用,隔开)");
+            //heads.add("子项目(多个用,隔开)");
+            heads.add(MessageUtils.message("entry.sonProject"));
         }
-        heads.add("参与人");
-        heads.add("项目经理");
-        heads.add("级别");
+        //heads.add("参与人");
+        heads.add(MessageUtils.message("entry.Participants"));
+        //heads.add("项目经理");
+        heads.add(MessageUtils.message("entry.projectManager"));
+        //heads.add("级别");
+        heads.add(MessageUtils.message("entry.level"));
         if(timeType.getProjectWithDept()==1){
-            heads.add("所属部门");
+            //heads.add("所属部门");
+            heads.add(MessageUtils.message("entry.department"));
         }
         if(company.getPackageCustomer()==1){
-            heads.add("客户");
+            //heads.add("客户");
+            heads.add(MessageUtils.message("entry.customer"));
         }
         if(company.getPackageProvider()==1){
             for (String s : collect) {
                 heads.add(s);
             }
         }
-        heads.add("开始日期");
-        heads.add("截止日期");
-        heads.add("合同金额");
+        //heads.add("开始日期");
+        heads.add(MessageUtils.message("entry.startData"));
+        //heads.add("截止日期");
+        heads.add(MessageUtils.message("entry.endDate"));
+        //heads.add("合同金额");
+        heads.add(MessageUtils.message("entry.contract"));
         if(company.getId()==936){
-            heads.add("质保开始时间");
-            heads.add("质保截止时间");
-            heads.add("项目类别");
-            heads.add("所属大区");
-            heads.add("所属BU");
-            heads.add("项目状态");
-            heads.add("项目阶段");
+            //heads.add("质保开始时间");
+            heads.add(MessageUtils.message("entry.warrantyST"));
+            //heads.add("质保截止时间");
+            heads.add(MessageUtils.message("entry.warrantyET"));
+            //heads.add("项目类别");
+            heads.add(MessageUtils.message("entry.projectType"));
+            //heads.add("所属大区");
+            heads.add(MessageUtils.message("entry.region"));
+            //heads.add("所属BU");
+            heads.add(MessageUtils.message("entry.BU"));
+            //heads.add("项目状态");
+            heads.add(MessageUtils.message("entry.projectState"));
+            //heads.add("项目阶段");
+            heads.add(MessageUtils.message("entry.projectStage"));
             for (ProjectKeyNodesSetting projectKeyNodesSetting : projectKeyNodesSettings) {
-                heads.add(projectKeyNodesSetting.getName()+"计划完成日期");
-                heads.add(projectKeyNodesSetting.getName()+"实际完成日期");
-                heads.add(projectKeyNodesSetting.getName()+"节点状态");
+                //heads.add(projectKeyNodesSetting.getName()+"计划完成日期");
+                heads.add(MessageUtils.message("entry.planCompDate",projectKeyNodesSetting.getName()));
+                //heads.add(projectKeyNodesSetting.getName()+"实际完成日期");
+                heads.add(MessageUtils.message("entry.actualComDate",projectKeyNodesSetting.getName()));
+                //heads.add(projectKeyNodesSetting.getName()+"节点状态");
+                heads.add(MessageUtils.message("entry.nodeStatus",projectKeyNodesSetting.getName()));
             }
         }
         List<List<String>> allList = new ArrayList<>();
         allList.add(heads);
-        String title = company.getCompanyName()+"_项目导入模板";
+        //String title = company.getCompanyName()+"_项目导入模板";
+        String title = MessageUtils.message("fileName.projectImport",company.getCompanyName());
         /*msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, allList, path);*/
         //String result="系统提示:Excel文件导出成功!";
         String result=MessageUtils.message("file.excelScu");

+ 6 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectRequirementController.java

@@ -141,7 +141,8 @@ public class ProjectRequirementController {
             });
         });
         List<List<String>> dataList=new ArrayList<>();
-        String[] titleString={"项目编号","项目名称","近七日活跃人员","人员需求","任务需求","合同要求","参与部门进度","里程碑进度","开始时间","结束时间"};
+        //String[] titleString={"项目编号","项目名称","近七日活跃人员","人员需求","任务需求","合同要求","参与部门进度","里程碑进度","开始时间","结束时间"};
+        String[] titleString={MessageUtils.message("entry.projectId"),MessageUtils.message("entry.projectName"),MessageUtils.message("entry.sevenActive"),MessageUtils.message("entry.peopleDemand"),MessageUtils.message("entry.taskDemand"),MessageUtils.message("entry.contractDemand"),MessageUtils.message("entry.depSpeed"),MessageUtils.message("entry.mileSpeed"),MessageUtils.message("entry.startTime"),MessageUtils.message("entry.endTime")};
         List<String> nameList = Arrays.asList(titleString);
         dataList.add(nameList);
         projectRequirementList.forEach(pr->{
@@ -154,7 +155,8 @@ public class ProjectRequirementController {
             resultData.add(pr.getContractReq());
             resultData.add(pr.getDepartmentSpeed());
             if(pr.getMilepost()!=null){
-                resultData.add(pr.getMilepost().getName()+"-完成时间:"+pr.getMilepost().getFinishDate());
+                //resultData.add(pr.getMilepost().getName()+"-完成时间:"+pr.getMilepost().getFinishDate());
+                resultData.add(MessageUtils.message("entry.finishTime",pr.getMilepost().getName(),pr.getMilepost().getFinishDate()));
             }else{
                 resultData.add("");
             }
@@ -173,7 +175,8 @@ public class ProjectRequirementController {
             dataList.add(resultData);
         });
         //生成excel文件导出
-        String fileName = "资源需求统计报表_"+System.currentTimeMillis();
+        //String fileName = "资源需求统计报表_"+System.currentTimeMillis();
+        String fileName = MessageUtils.message("fileName.resourceDemand",System.currentTimeMillis());
         String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
         httpRespMsg.data=resp;
         return httpRespMsg;

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProviderInfoController.java

@@ -171,7 +171,8 @@ public class ProviderInfoController {
                         return containId;
                     }).map(Project::getProjectName).collect(Collectors.joining(","));
                     if (!StringUtils.isEmpty(names)) {
-                        str = providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName()+"已被以下项目关联:"+ names;
+                        //str = providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName()+"已被以下项目关联:"+ names;
+                        str = MessageUtils.message("project.alreadyRelation",providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName(),names);
                         break;
                     }
                 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -324,7 +324,7 @@ public class TaskController {
             }
             TaskComment taskComment=new TaskComment();
             taskComment.setUserName(user.getName());
-            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+"完成了任务");
+            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+MessageUtils.message("entry.completeTask"));
             taskComment.setTaskId(task.getId());
             taskComment.setUserId(user.getId());
             taskComment.setCreateTime(LocalDateTime.now());
@@ -334,7 +334,7 @@ public class TaskController {
             task.setTaskStatus(0);
             TaskComment taskComment=new TaskComment();
             taskComment.setUserName(user.getName());
-            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+"重启了任务");
+            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+MessageUtils.message("entry.restartTask"));
             taskComment.setTaskId(task.getId());
             taskComment.setUserId(user.getId());
             taskComment.setCreateTime(LocalDateTime.now());

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -80,7 +80,8 @@ public class TaskGroupController {
                 hasSameGroupCode = cnt>0;
             }
             if (hasSameGroupCode) {
-                msg.setError("分组存在重名");
+                //msg.setError("分组存在重名");
+                msg.setError(MessageUtils.message("group.RepeatName"));
                 return msg;
             }
         }

+ 14 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -239,15 +239,21 @@ public class UserCorpwxTimeController {
             msg.setError(MessageUtils.message("project.joinError"));
         }
         List<String> titles = new ArrayList<>();
-        titles.add("工作日期");
-        titles.add("星期");
-        titles.add("员工姓名");
-        titles.add("上班时间");
-        titles.add("下班时间");
+        //titles.add("工作日期");
+        titles.add(MessageUtils.message("entry.workDate"));
+        //titles.add("星期");
+        titles.add(MessageUtils.message("entry.week"));
+        //titles.add("员工姓名");
+        titles.add(MessageUtils.message("entry.staffName"));
+        //titles.add("上班时间");
+        titles.add(MessageUtils.message("entry.goWorkTime"));
+        //titles.add("下班时间");
+        titles.add(MessageUtils.message("entry.offWorkTime"));
 //        titles.add("打卡时长");
 //        titles.add("请假时长");
 //        titles.add("补卡/外出时长");
-        titles.add("实际工作时长");
+        //titles.add("实际工作时长");
+        titles.add(MessageUtils.message("entry.actualWorkTime"));
         //添加项目名称作为列名
         for (String p : projects) {
             titles.add(p);
@@ -283,7 +289,8 @@ public class UserCorpwxTimeController {
             String departmentName = allDeptList.stream().map(Department::getDepartmentName).collect(Collectors.joining("+"));
             fileName = departmentName;
         }
-        fileName += "_人员工时统计模板"+startDate+"至"+endDate;
+        //fileName += "_人员工时统计模板"+startDate+"至"+endDate;
+        fileName += MessageUtils.message("fileName.workHour",startDate,endDate);
         msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, allData, path);
         return msg;
     }

+ 33 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -34,10 +34,7 @@ import java.text.DecimalFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAccessor;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -190,7 +187,7 @@ public class TimingTask {
     }
 
     //每天2:11 同步钉钉用户前2天到未来30天时间段的打卡,请假,出差数据
-    @Scheduled(cron = "0 30 2 ? * *")
+    @Scheduled(cron = "0 11 2 ? * *")
     private void synFanWeiWorkData() {
         if (isDev) return;
         List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_fanwei", 1));
@@ -202,10 +199,13 @@ public class TimingTask {
         JSONObject jsonObject=new JSONObject();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm:ss");
+        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm");
         LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
         String startDate = dtf.format(yesterday);
         String endDate = dtf.format(yesterday.plusDays(32));
+        List<UserFvTime> oldUserFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().in("company_id", compIds));
+        List<LeaveSheet> oldLeaveSheetList = leaveSheetService.list(new QueryWrapper<LeaveSheet>().in("company_id", compIds));
+        List<BusinessTrip> oldBusinessTripList = businessTripService.list(new QueryWrapper<BusinessTrip>().in("company_id", compIds));
         jsonObject.put("startDate",startDate);
         jsonObject.put("endDate",endDate);
         String jsonString = jsonObject.toJSONString();
@@ -222,19 +222,27 @@ public class TimingTask {
                 continue;
             }
             if(compIds.contains(user.getCompanyId())){
-                userFvTime.setWorkDate((LocalDate) map.get("workDate"));
+                userFvTime.setWorkDate(LocalDate.parse(String.valueOf(map.get("workDate")),dtf));
                 LocalTime startTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
-                LocalTime endTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
-                Duration between = Duration.between(startTime, endTime);
+                LocalTime endTime = LocalTime.parse(String.valueOf(map.get("endTime")), dtf2);
+                LocalDateTime time1= LocalDate.now().atTime(startTime);
+                LocalDateTime time2 = LocalDate.now().atTime(endTime);
+                Duration between = Duration.between(time1, time2);
                 userFvTime.setStartTime((String) map.get("startTime"));
                 userFvTime.setEndTime((String) map.get("endTime"));
                 userFvTime.setCompanyId(user.getCompanyId());
                 userFvTime.setUserId(user.getId());
-                userFvTime.setWorkHours((float) between.toHours());
+                userFvTime.setWorkHours((float)between.toHours());
+                Optional<UserFvTime> first = oldUserFvTimeList.stream().filter(ol -> ol.getWorkDate().isEqual(userFvTime.getWorkDate()) && ol.getUserId().equals(userFvTime.getUserId())).findFirst();
+                if(first.isPresent()){
+                    userFvTime.setId(first.get().getId());
+                }
                 userFvTimeList.add(userFvTime);
             }
         }
-        userFvTimeService.saveBatch(userFvTimeList);
+        if(userFvTimeList.size()>0){
+            userFvTimeService.saveOrUpdateBatch(userFvTimeList);
+        }
         //Todo: 获取请假数据
         HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
         List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
@@ -257,10 +265,16 @@ public class TimingTask {
                leaveSheet.setLeaveType(Integer.parseInt(String.valueOf(map.get("leaveType"))));
                leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
                leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
+                Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate()) && ol.getOwnerId().equals(leaveSheet.getOwnerId())).findFirst();
+                if(first.isPresent()){
+                    leaveSheet.setId(first.get().getId());
+                }
                leaveSheetList.add(leaveSheet);
             }
         }
-        leaveSheetService.saveBatch(leaveSheetList);
+        if(leaveSheetList.size()>0){
+            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+        }
         //Todo: 获取出差数据
         HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
         List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
@@ -281,10 +295,16 @@ public class TimingTask {
                 businessTrip.setDayCount(Integer.valueOf(String.valueOf(map.get("dayCount"))));
                 businessTrip.setProcinstId((String) map.get("procinstId"));
                 businessTrip.setGmtFinished((String)map.get("gmtFinished"));
+                Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate()) && ol.getOwnerId().equals(businessTrip.getOwnerId())).findFirst();
+                if(first.isPresent()){
+                    businessTrip.setId(first.get().getId());
+                }
                 businessTripList.add(businessTrip);
             }
         }
-        businessTripService.saveBatch(businessTripList);
+        if(businessTripList.size()>0){
+            businessTripService.saveOrUpdateBatch(businessTripList);
+        }
     }
 
     //每天1:00 同步昨天的微信请假信息

+ 71 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -197,6 +197,7 @@ project.upDataSuc=成功更新"{0}"条项目数据
 project.upSonSuc=成功更新"{0}"条项目子表数据
 project.deleteDate=成功删除"{0}"条项目数据
 project.masterError=请给["{0}"]项目设置项目负责人
+project.alreadyRelation={0}已被以下项目关联:{1}
 # 供货相关
 provider.noRepeat=供货商编号已存在
 provider.classNameRepeat=该分类下供货商名称已存在
@@ -280,4 +281,73 @@ supplier.nameRepeat=当前导入数据存在重复供应商名称["{0}"]
 #研究中心相关
 research.addData=请填写研究中心数据
 research.nameNull=第"{0}"行缺少中心名称
-research.nameRepeat=当前导入数据存在重复中心名称["{0}"]
+research.nameRepeat=当前导入数据存在重复中心名称["{0}"]
+#条目
+entry.No=工号
+entry.name=姓名
+entry.materialCost=材料费
+entry.workCost=办公用品
+entry.trainCost=培训费
+entry.printCost=打印费
+entry.expressCost=快递费
+entry.makeCost=制作费
+entry.lawyerCost=律师费
+entry.waterCost=水费
+entry.electricCost=电费
+entry.leagueCost=团建费
+entry.other=其他
+entry.cityTrafficCost=城市间交通费
+entry.liveCost=住宿费
+entry.eatCost=伙食补助费
+entry.insideCityCost=市内交通费
+entry.otherLiveTraCost=其他差旅费
+entry.projectCost=项目外包费
+entry.labourCost=劳务外包费
+entry.OtherOutsourceCost=其他外包费
+entry.mainProject=主项目
+entry.projectId=项目编号
+entry.contractNo=合同编号
+entry.projectType=项目分类
+entry.publicProject=是否为公共项目
+entry.projectName=项目名称
+entry.sonProject=子项目(多个用,隔开)
+entry.Participants=参与人
+entry.projectManager=项目经理
+entry.level=级别
+entry.department=所属部门
+entry.customer=客户
+entry.startData=开始日期
+entry.endDate=截止日期
+entry.contract=合同金额
+entry.warrantyST=质保开始时间
+entry.warrantyET=质保截止时间
+entry.region=所属大区
+entry.BU=所属BU
+entry.projectState=项目状态
+entry.projectStage=项目阶段
+entry.planCompDate={0}计划完成日期
+entry.actualComDate={0}实际完成日期
+entry.nodeStatus={0}节点状态
+entry.sevenActive=近七日活跃人员
+entry.peopleDemand=人员需求
+entry.taskDemand=任务需求
+entry.contractDemand=合同要求
+entry.depSpeed=参与部门进度
+entry.mileSpeed=里程碑进度
+entry.startTime=开始时间
+entry.endTime=结束时间
+entry.finishTime={0}-完成时间:{1}
+entry.completeTask=完成了任务
+entry.restartTask=重启了任务
+entry.workDate=工作日期
+entry.week=星期
+entry.staffName=员工姓名
+entry.goWorkTime=上班时间
+entry.offWorkTime=下班时间
+entry.actualWorkTime=实际工作时长
+#文件名
+fileName.financialCost={0}_财务人员成本模板
+fileName.projectImport={0}_项目导入模板
+fileName.resourceDemand=资源需求统计报表_{0}
+fileName.workHour=_人员工时统计模板{0}至{1}
+

+ 70 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -197,6 +197,7 @@ project.upDataSuc=Successfully updated '{0}' item data.
 project.upSonSuc=Successfully updated "{0}" item sub table data.
 project.deleteDate=Successfully deleted '{0}' item data.
 project.masterError=Please set project leader for ["{0}"] project.
+project.alreadyRelation={0} is already associated with the following project: {1}
 # 供货相关
 provider.noRepeat=Vendor No. already exists.
 provider.classNameRepeat=The supplier name under this category already exists.
@@ -280,4 +281,72 @@ supplier.nameRepeat=The current imported data has duplicate supplier names ["{0}
 #研究中心相关
 research.addData=Please fill in the data of the research center.
 research.nameNull=The center name is missing in row '{0}'.
-research.nameRepeat=The current imported data has duplicate center name ["{0}"].
+research.nameRepeat=The current imported data has duplicate center name ["{0}"].
+#条目
+entry.No=Job No
+entry.name=name
+entry.materialCost=Material cost
+entry.workCost=Office Supplies
+entry.trainCost=Training fee
+entry.printCost=Printing fee
+entry.expressCost=Express fee
+entry.makeCost=Production cost
+entry.lawyerCost=Lawyer's fees
+entry.waterCost=charge for water
+entry.electricCost=electricity fees
+entry.leagueCost=league construction cost
+entry.other=other
+entry.cityTrafficCost=Inter city transportation cost
+entry.liveCost=hotel expense
+entry.eatCost=Food allowance
+entry.insideCityCost=Urban transportation fee
+entry.otherLiveTraCost=Other travel expenses
+entry.projectCost=Project outsourcing fee
+entry.labourCost=Labor outsourcing fee
+entry.OtherOutsourceCost=Other outsourcing fees
+entry.mainProject=Main project
+entry.projectId=project No
+entry.contractNo=Contract No
+entry.projectType=Project classification
+entry.publicProject=Whether it is a public project
+entry.projectName=project name
+entry.sonProject=Subprojects(use,split)
+entry.Participants=Participants
+entry.projectManager=project manager
+entry.level=level
+entry.department=Department
+entry.customer=customer
+entry.startData=Start Date
+entry.endDate=closing date
+entry.contract=Contract amount
+entry.warrantyST=Warranty start time
+entry.warrantyET=Warranty deadline
+entry.region=Region
+entry.BU=BU
+entry.projectState=Project Status
+entry.projectStage=Project Phase
+entry.planCompDate={0} Planned completion date
+entry.actualComDate={0} Actual completion date
+entry.nodeStatus={0} node status
+entry.sevenActive=Active personnel in recent seven days
+entry.peopleDemand=Personnel requirements
+entry.taskDemand=Task requirements
+entry.contractDemand=Contract requirements
+entry.depSpeed=Progress of participating departments
+entry.mileSpeed=Milestone Progress
+entry.startTime=start time
+entry.endTime=End time
+entry.finishTime={0} - Completion time: {1}
+entry.completeTask=Completed the task
+entry.restartTask=Restart the task
+entry.workDate=Working date
+entry.week=week
+entry.staffName=Employee Name
+entry.goWorkTime=work shift
+entry.offWorkTime=closing time
+entry.actualWorkTime=Actual working hours
+#文件名
+fileName.financialCost={0}_ Financial Staff Cost Template
+fileName.projectImport={0}_ Project import template
+fileName.resourceDemand=Resource demand statistics report_ {0}
+fileName.workHour=_ Personnel Hours Statistics Template {0} to {1}