|
@@ -575,4 +575,229 @@ public class TimingTask {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ @Scheduled(cron = "0 40 2 ? * *")
|
|
|
|
+ public void getTemporaryJobApplicationNew() throws Exception {
|
|
|
|
+ if(isDev){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+ LocalDate start=LocalDate.now().minusDays(7);
|
|
|
|
+ LocalDate end=LocalDate.now();
|
|
|
|
+ JSONArray jsonArrayFilter = new JSONArray();
|
|
|
|
+ JSONObject filter1 = new JSONObject();
|
|
|
|
+ WxCorpTemplate template = wxCorpTemplateService.getOne(new QueryWrapper<WxCorpTemplate>().eq("company_id",7).eq("type",2));//类型设置为2
|
|
|
|
+ filter1.put("key","template_id");
|
|
|
|
+ filter1.put("value",template.getTemplateId());
|
|
|
|
+ jsonArrayFilter.add(filter1);
|
|
|
|
+ JSONObject filter2 = new JSONObject();
|
|
|
|
+ filter2.put("key","sp_status");
|
|
|
|
+ filter2.put("value","2");
|
|
|
|
+ jsonArrayFilter.add(filter2);
|
|
|
|
+ List<String> approvalInfo = wxCorpInfoService.getApprovalInfo(7, df.format(start), df.format(end), "", jsonArrayFilter);
|
|
|
|
+ List<Department> departmentList = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, 7));
|
|
|
|
+ List<TaskType> taskTypeList = taskTypeService.list(new LambdaQueryWrapper<TaskType>().eq(TaskType::getCompanyId, 7));
|
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId,7));
|
|
|
|
+ if(approvalInfo!=null){
|
|
|
|
+ for (int i = 0; i < approvalInfo.size(); i++) {
|
|
|
|
+ String codeNum = approvalInfo.get(i);
|
|
|
|
+ String approvalInfoDetailResp = wxCorpInfoService.getApprovalInfoDetail(7, codeNum);
|
|
|
|
+ JSONObject approvalInfoDetail = JSONObject.parseObject(approvalInfoDetailResp);
|
|
|
|
+ JSONObject info = approvalInfoDetail.getJSONObject("info");
|
|
|
|
+ JSONObject applyer = info.getJSONObject("applyer");
|
|
|
|
+ String userid = applyer.getString("userid");
|
|
|
|
+ //过滤审核状态只需要审核通过的数据
|
|
|
|
+ int sp_status = info.getIntValue("sp_status");
|
|
|
|
+ if(sp_status!=2){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&&u.getCorpwxRealUserid().equals(userid)).findFirst();
|
|
|
|
+ if(!first.isPresent()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ JSONObject apply_data = info.getJSONObject("apply_data");
|
|
|
|
+ System.out.println("获取到的单据信息===========>"+apply_data);
|
|
|
|
+ JSONArray contents = apply_data.getJSONArray("contents");
|
|
|
|
+ //生成 车间插单计划
|
|
|
|
+ int count = planService.count(new LambdaQueryWrapper<Plan>().eq(Plan::getTaskChangeNoticeNum, info.getString("sp_no")));
|
|
|
|
+ if(count>0){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ Plan plan=new Plan();
|
|
|
|
+ plan.setCompanyId(7);
|
|
|
|
+ plan.setCreateTime(LocalDateTime.now());
|
|
|
|
+ plan.setPlanType(1);
|
|
|
|
+ plan.setCreateId(first.get().getId());
|
|
|
|
+ plan.setTaskChangeNoticeNum(info.getString("sp_no"));
|
|
|
|
+ //参与人员列表
|
|
|
|
+ List<String> userTeams=new ArrayList<>();
|
|
|
|
+ //初始化 单价(元/小时)
|
|
|
|
+ BigDecimal price=new BigDecimal(0);
|
|
|
|
+ //初始化 工作时长
|
|
|
|
+ double workTime=0;
|
|
|
|
+
|
|
|
|
+ long apply_time = info.getLongValue("apply_time");
|
|
|
|
+ LocalDate createDate;
|
|
|
|
+ if(apply_time>0){
|
|
|
|
+ createDate= DateTimeUtil.getLocalDateFromUnix(apply_time);
|
|
|
|
+ }else {
|
|
|
|
+ createDate =LocalDate.now();
|
|
|
|
+ }
|
|
|
|
+ //初始化工位
|
|
|
|
+ Integer deptId=0;
|
|
|
|
+ for (int i1 = 0; i1 < contents.size(); i1++) {
|
|
|
|
+ JSONObject map = contents.getJSONObject(i1);
|
|
|
|
+ JSONArray title = map.getJSONArray("title");
|
|
|
|
+ JSONObject value = map.getJSONObject("value");
|
|
|
|
+ String control = map.getString("control");
|
|
|
|
+ /*if(title.getJSONObject(0).getString("text").equals("临时报工分类")){
|
|
|
|
+ if(control.equals("Selector")){
|
|
|
|
+ JSONObject selector = value.getJSONObject("selector");
|
|
|
|
+ JSONArray options = selector.getJSONArray("options");
|
|
|
|
+ JSONObject object = options.getJSONObject(0);
|
|
|
|
+ JSONArray value1 = object.getJSONArray("value");
|
|
|
|
+ JSONObject jsonObject = value1.getJSONObject(0);
|
|
|
|
+ String text = jsonObject.getString("text");
|
|
|
|
+ Optional<TaskType> first1 = taskTypeList.stream().filter(t -> t.getTaskTypeName().equals(text)).findFirst();
|
|
|
|
+ if(first1.isPresent()){
|
|
|
|
+ plan.setTaskTypeId(first1.get().getId());
|
|
|
|
+ plan.setTaskTypeName(first1.get().getTaskTypeName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }*/
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("项目名称")){
|
|
|
|
+ if(control.equals("Text")||control.equals("Textarea")){
|
|
|
|
+ String text = value.getString("text");
|
|
|
|
+ plan.setProjectName(text);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("生产订单号")){
|
|
|
|
+ if(control.equals("Text")||control.equals("Textarea")){
|
|
|
|
+ String text = value.getString("text");
|
|
|
|
+ plan.setProductOrderNum(text);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("生产数量")){
|
|
|
|
+ if(control.equals("Number")){
|
|
|
|
+ int new_number= value.get("new_number")!=null?value.getIntValue("new_number"):0;
|
|
|
|
+ plan.setNum(new_number);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("作业单位")){
|
|
|
|
+ if(control.equals("Contact")){
|
|
|
|
+ JSONArray departments = value.getJSONArray("departments");
|
|
|
|
+ String openapi_id = departments.getJSONObject(0).getString("openapi_id");
|
|
|
|
+ Optional<Department> first1 = departmentList.stream().filter(d -> d.getCorpwxDeptid().equals(Integer.valueOf(openapi_id))).findFirst();
|
|
|
|
+ if(first1.isPresent()){
|
|
|
|
+ plan.setStationId(first1.get().getDepartmentId());
|
|
|
|
+ plan.setStationName(first1.get().getDepartmentName());
|
|
|
|
+ plan.setForemanId(first1.get().getManagerId());
|
|
|
|
+ Optional<User> first2 = userList.stream().filter(u -> u.getId().equals(first1.get().getManagerId())).findFirst();
|
|
|
|
+ if(first2.isPresent()){
|
|
|
|
+ plan.setForemanName(first2.get().getName());
|
|
|
|
+ }
|
|
|
|
+ deptId=first1.get().getDepartmentId();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").contains("单价")){
|
|
|
|
+ if(control.equals("Number")){
|
|
|
|
+ if(!value.getString("new_number").equals("")){
|
|
|
|
+ Double new_money = value.getDouble("new_number");
|
|
|
|
+ plan.setMoneyOfJob(new BigDecimal(new_money==null?0:new_money));
|
|
|
|
+ price=new BigDecimal(new_money);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").contains("结算总额")){
|
|
|
|
+ if(control.equals("Formula")){
|
|
|
|
+ JSONObject formula = value.getJSONObject("formula");
|
|
|
|
+ if(!formula.getString("value").equals("")){
|
|
|
|
+ double formulaDoubleValue = formula.getDoubleValue("value");
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(formulaDoubleValue);
|
|
|
|
+ if(workTime>0){
|
|
|
|
+ BigDecimal divide = bigDecimal.divide(new BigDecimal(workTime), 3, RoundingMode.HALF_UP);
|
|
|
|
+ plan.setMoneyOfJob(divide);
|
|
|
|
+ }
|
|
|
|
+ plan.setSettlementAmount(bigDecimal);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //先处理多个人员 公用此单据非工时部分内容
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("作业人员")){
|
|
|
|
+ if(control.equals("Contact")){
|
|
|
|
+ JSONArray members = value.getJSONArray("members");
|
|
|
|
+ plan.setPlanManNum(members.size());
|
|
|
|
+ for (int i2 = 0; i2 < members.size(); i2++) {
|
|
|
|
+ JSONObject jsonObject = members.getJSONObject(i2);
|
|
|
|
+ String userid1 = jsonObject.getString("userid");
|
|
|
|
+ userTeams.add(userid1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ long startTime=0;
|
|
|
|
+ long endTime=0;
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("作业开始日期")){
|
|
|
|
+ if(control.equals("Date")){
|
|
|
|
+ JSONObject date = value.getJSONObject("date");
|
|
|
|
+ long s_timestamp = date.getLongValue("s_timestamp");
|
|
|
|
+ startTime=s_timestamp;
|
|
|
|
+ LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
|
|
|
|
+ plan.setStartDate(localDateFromUnix);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("作业结束日期")){
|
|
|
|
+ if(control.equals("Date")){
|
|
|
|
+ JSONObject date = value.getJSONObject("date");
|
|
|
|
+ long s_timestamp = date.getLongValue("s_timestamp");
|
|
|
|
+ if (s_timestamp!=0){
|
|
|
|
+ endTime=s_timestamp;
|
|
|
|
+ }
|
|
|
|
+ LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
|
|
|
|
+ plan.setEndDate(localDateFromUnix);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (endTime>0){
|
|
|
|
+ long l = endTime - startTime;//工作时长
|
|
|
|
+ workTime=l/60000.0;
|
|
|
|
+ plan.setPlanWorkHour(workTime);//分钟
|
|
|
|
+ }
|
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("备注")){
|
|
|
|
+ if(control.equals("Text")||control.equals("Textarea")){
|
|
|
|
+ String text = value.getString("text");
|
|
|
|
+ plan.setDescribtion(text);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ planService.save(plan);
|
|
|
|
+ List<Report> reportList=new ArrayList<>();
|
|
|
|
+ //处理人员日报数据
|
|
|
|
+ for (String userTeam : userTeams) {
|
|
|
|
+ Optional<User> user = userList.stream().filter(u -> u.getCorpwxRealUserid() != null && u.getCorpwxRealUserid().equals(userTeam)).findFirst();
|
|
|
|
+ if(user.isPresent()){
|
|
|
|
+ Report report=new Report();
|
|
|
|
+ report.setCreateDate(createDate);
|
|
|
|
+ report.setCreatorId(user.get().getId());
|
|
|
|
+ report.setCreateTime(LocalDateTime.now());
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(workTime);
|
|
|
|
+ bigDecimal=bigDecimal.divide(new BigDecimal(plan.getPlanManNum()==null?0:plan.getPlanManNum()),1,RoundingMode.HALF_UP);
|
|
|
|
+ report.setWorkingTime(bigDecimal.doubleValue());
|
|
|
|
+ bigDecimal=bigDecimal.multiply(price);
|
|
|
|
+ report.setCost(bigDecimal);
|
|
|
|
+ report.setStatus(2);
|
|
|
|
+ report.setPlanId(plan.getId());
|
|
|
|
+ report.setCompanyId(7);
|
|
|
|
+ report.setDeptId(deptId);
|
|
|
|
+ reportList.add(report);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(reportList.size()>0){
|
|
|
|
+ reportService.saveBatch(reportList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|