浏览代码

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

seyason 11 月之前
父节点
当前提交
16f11acc96

+ 4 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ProductController.java

@@ -277,6 +277,10 @@ public class ProductController {
             if(user.isPresent()){
                 c.setCreatorName(user.get().getName());
             }
+            Optional<User> contacts = userList.stream().filter(u -> u.getId().equals(c.getContactsId())).findFirst();
+            if(contacts.isPresent()){
+                c.setContactsName(contacts.get().getName());
+            }
             Optional<User> incharger = userList.stream().filter(u -> u.getId().equals(c.getInchargerId())).findFirst();
             if(incharger.isPresent()){
                 c.setInchargerName(incharger.get().getName());

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Product.java

@@ -139,6 +139,9 @@ public class Product extends Model<Product> {
     @TableField("is_delete")
     private Integer isDelete;
 
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
     @TableField(exist = false)
     private String inchargerName;
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/SalesOrder.java

@@ -196,6 +196,9 @@ public class SalesOrder extends Model<SalesOrder> {
     @TableField("plate5")
     private String plate5;
 
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
 
     @TableField(exist = false)
     private String orderProductDetailString;

+ 7 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -123,7 +123,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 List<Integer> finalDeptIds2 = deptIds;
                 List<String> userIds = userList.stream().filter(u -> finalDeptIds2.contains(u.getDepartmentId())).map(User::getId).collect(Collectors.toList());
                 userIds.add(targetUsr.getId());
-                queryWrapper.in(Product::getCreatorId,userIds);
+                queryWrapper.and(wrapper->wrapper.in(Product::getCreatorId,userIds).or().in(Product::getInchargerId,userIds));
             }
         }
         if(!StringUtils.isEmpty(userId)){
@@ -182,6 +182,10 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     @Override
     public HttpRespMsg importData(MultipartFile multipartFile) {
         HttpRespMsg msg=new HttpRespMsg();
+        if(!multipartFile.getOriginalFilename().endsWith(".xlsx")){
+            msg.setError("文件格式错误,请使用.xlsx格式的Excel文件进行导入");
+            return msg;
+        }
         String fileName = multipartFile.getOriginalFilename();
         File file = new File(fileName == null ? "file" : fileName);
         User user = userMapper.selectById(request.getHeader("token"));
@@ -391,6 +395,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
         } catch (IOException | NoSuchMethodException e) {
             e.printStackTrace();
+            msg.setError("验证失败");
         } catch (IllegalAccessException e) {
             e.printStackTrace();
         } catch (InvocationTargetException e) {
@@ -559,6 +564,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 queryWrapper.in(Product::getCreatorId,userIds);
             }
         }
+        queryWrapper.orderByDesc(Product::getUpdateTime);
         IPage<Product> productIPage = productMapper.selectPage(new Page<>(pageIndex, pageSize,true), queryWrapper);
         List<Product> records = productIPage.getRecords();
         records.forEach(r->{

+ 15 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java

@@ -19,6 +19,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.CellType;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.multipart.MultipartFile;
@@ -184,7 +185,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
             pageIndex=-1;
             pageSize=-1;
         }
-        orderLambdaQueryWrapper.orderByDesc(SalesOrder::getCreateTime);
+        if(isDelete!=null){
+            orderLambdaQueryWrapper.eq(SalesOrder::getIsDelete,isDelete);
+            orderLambdaQueryWrapper.orderByDesc(SalesOrder::getUpdateTime);
+        }else {
+            orderLambdaQueryWrapper.eq(SalesOrder::getIsDelete,0);
+            orderLambdaQueryWrapper.orderByDesc(SalesOrder::getCreateTime);
+        }
         IPage<SalesOrder> orderIPage = salesOrderMapper.selectPage(new Page<>(pageIndex, pageSize), orderLambdaQueryWrapper);
         List<SalesOrder> records = orderIPage.getRecords();
         List<Integer> orderIds = records.stream().map(SalesOrder::getId).distinct().collect(Collectors.toList());
@@ -279,8 +286,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
     }
 
     @Override
+    @Transactional
     public HttpRespMsg importData(MultipartFile multipartFile) {
         HttpRespMsg msg=new HttpRespMsg();
+        if(!multipartFile.getOriginalFilename().endsWith(".xlsx")){
+            msg.setError("文件格式错误,请使用.xlsx格式的Excel文件进行导入");
+            return msg;
+        }
         String fileName = multipartFile.getOriginalFilename();
         File file = new File(fileName == null ? "file" : fileName);
         User user = userMapper.selectById(request.getHeader("token"));
@@ -552,12 +564,14 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
             }
         } catch (IOException | NoSuchMethodException e) {
             e.printStackTrace();
+            msg.setError("验证失败");
         } catch (IllegalAccessException e) {
             e.printStackTrace();
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
+            msg.setError("验证失败");
         }
         return msg;
     }

+ 2 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/ProductMapper.xml

@@ -23,11 +23,12 @@
         <result column="plate5" property="plate5" />
         <result column="descs" property="descs" />
         <result column="is_delete" property="isDelete" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, product_name, product_code, type, unit, price, inventory, status, incharger_id, create_time, creator_id, plate1, plate2, plate3, plate4, plate5, descs, is_delete
+        id, company_id, product_name, product_code, type, unit, price, inventory, status, incharger_id, create_time, creator_id, plate1, plate2, plate3, plate4, plate5, descs, is_delete, update_time
     </sql>
 
 </mapper>

+ 2 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/SalesOrderMapper.xml

@@ -32,11 +32,12 @@
         <result column="plate3" property="plate3" />
         <result column="plate4" property="plate4" />
         <result column="plate5" property="plate5" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, order_name, order_code, custom_id, business_opportunity_id, price, contacts_id, type, place_time, order_start_date, order_end_date, received_payment, un_received_payment, received_status, custom_signer, company_signer, incharger_id, remark, create_time, creator_id, is_delete, status, plate1, plate2, plate3, plate4, plate5
+        id, company_id, order_name, order_code, custom_id, business_opportunity_id, price, contacts_id, type, place_time, order_start_date, order_end_date, received_payment, un_received_payment, received_status, custom_signer, company_signer, incharger_id, remark, create_time, creator_id, is_delete, status, plate1, plate2, plate3, plate4, plate5, update_time
     </sql>
 
 </mapper>

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/WxCorpInfoController.java

@@ -341,7 +341,9 @@ public class WxCorpInfoController {
                         }
                     }
                     BigDecimal bigDecimal = new BigDecimal(plan.getPlanManNum()==null?0:plan.getPlanManNum());
+                    //工时以分钟为单位 *60
                     bigDecimal=bigDecimal.multiply(new BigDecimal(workTime));
+                    bigDecimal=bigDecimal.multiply(new BigDecimal(60));
                     plan.setPlanWorkHour(bigDecimal.doubleValue());
                     if(title.getJSONObject(0).getString("text").equals("所属工位")){
                         if(control.equals("Contact")){

+ 4 - 10
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -341,13 +341,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             TaskType taskType = taskTypeMapper.selectById(plan.getTaskTypeId());
             plan.setTaskTypeName(taskType.getTaskTypeName());
         }
-        List<ProdProcedure> procedureList = prodProcedureMapper.selectList(
-                new QueryWrapper<ProdProcedure>()
-                        .lambda()
-                        .eq(plan.getProductId() != null, ProdProcedure::getProductId, plan.getProductId())
-                        .eq(user.getCompanyId()!=null,ProdProcedure::getCompanyId,user.getCompanyId()).orderByAsc(ProdProcedure::getSeq)
-
-        );
+        List<ProdProcedure> procedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().eq("company_id", companyId).eq("product_id",plan.getProductId()).orderByDesc("id"));
         if(plan.getPlanType()==0){
             if(procedureList.size()<=0){
                 msg.setError("当前产品工序配置未完成,请先完成工序配置");
@@ -358,7 +352,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
         List<ProdProcedure> list;
         if(plan.getId()==null){
-            list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(procedureList.size()-1).getVersionNumber())).collect(Collectors.toList());
+            list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
             if(plan.getProductSchedulingNum()!=null){
                 if(count(new QueryWrapper<Plan>().eq("product_scheduling_num",plan.getProductSchedulingNum()))>0){
                     msg.setError("当前排产工单号已存在");
@@ -390,8 +384,8 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }else {
                 plan.setPlanType(1);
             }
-            if(procedureList!=null&&procedureList.size()>0){
-                String versionNumber = procedureList.get(0).getVersionNumber();
+            if(list!=null&&list.size()>0){
+                String versionNumber = list.get(0).getVersionNumber();
                 plan.setVersionNumber(versionNumber);
             }
             if(planMapper.insert(plan)<0){

+ 201 - 198
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java

@@ -27,6 +27,7 @@ import org.springframework.http.client.ClientHttpResponse;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.DefaultResponseErrorHandler;
 import org.springframework.web.client.RestTemplate;
@@ -344,203 +345,205 @@ public class TimingTask {
         * @Author: yurk
         * @Date: 2024/6/20
         */
-//    @Scheduled(cron = "0 20 2 ? * *")
-//    public void getTemporaryJobApplication() throws Exception {
-//        if(isDev){
-//            return;
-//        }
-//        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-//        LocalDate start=LocalDate.now().minusDays(1);
-//        LocalDate end=LocalDate.now();
-//        JSONArray jsonArrayFilter = new JSONArray();
-//        JSONObject filter1 = new JSONObject();
-//        WxCorpTemplate template = wxCorpTemplateService.getById(7);
-//        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");
-//                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");
-//                //生成 车间插单计划
-//                Plan plan=new Plan();
-//                plan.setCompanyId(7);
-//                plan.setCreateTime(LocalDateTime.now());
-//                plan.setPlanType(1);
-//                plan.setCreateId(first.get().getId());
-//                //参与人员列表
-//                List<String> userTeams=new ArrayList<>();
-//                //初始化 单价(元/小时)
-//                BigDecimal price=new BigDecimal(0);
-//                //初始化 工作时长
-//                double workTime=0;
-//                //初始话 工作日期
-//                JSONArray sp_record = info.getJSONArray("sp_record");
-//                //获取最后一个审批节点
-//                JSONObject last_sp_record = sp_record.getJSONObject(sp_record.size() - 1);
-//                JSONArray details = last_sp_record.getJSONArray("details");
-//                //获取最后详情
-//                JSONObject lastDetail = details.getJSONObject(details.size() - 1);
-//                long sptime = lastDetail.getLongValue("sptime");
-//                LocalDate 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.setTaskName(text);
-//                        }
-//                    }
-//                    //先处理多个人员 公用此单据非工时部分内容
-//                    if(title.getJSONObject(0).getString("text").equals("参与人员")){
-//                        if(control.equals("Contact")){
-//                            JSONArray members = value.getJSONArray("members");
-//                            for (int i2 = 0; i2 < members.size(); i2++) {
-//                                JSONObject jsonObject = members.getJSONObject(i2);
-//                                String userid1 = jsonObject.getString("userid");
-//                                userTeams.add(userid1);
-//                            }
-//
-//                        }
-//                    }
-//                    if(title.getJSONObject(0).getString("text").equals("参与人数")){
-//                        if(control.equals("Number")){
-//                            int new_number = value.getIntValue("new_number");
-//                            plan.setPlanManNum(new_number);
-//                        }
-//                    }
-//                    if(title.getJSONObject(0).getString("text").equals("开始时间")){
-//                        if(control.equals("Date")){
-//                            JSONObject date = value.getJSONObject("date");
-//                            long s_timestamp = date.getLongValue("s_timestamp");
-//                            LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
-//                            plan.setStartDate(localDateFromUnix);
-//                            if(sptime>0){
-//                                createDate= DateTimeUtil.getLocalDateFromUnix(sptime);
-//                            }else {
-//                                createDate=localDateFromUnix;
-//                            }
-//
-//                        }
-//                    }
-//                    if(title.getJSONObject(0).getString("text").equals("结束时间")){
-//                        if(control.equals("Date")){
-//                            JSONObject date = value.getJSONObject("date");
-//                            long s_timestamp = date.getLongValue("s_timestamp");
-//                            LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
-//                            plan.setEndDate(localDateFromUnix);
-//                            if(sptime>0){
-//                                createDate= DateTimeUtil.getLocalDateFromUnix(sptime);
-//                            }else {
-//                                createDate=localDateFromUnix;
-//                            }
-//                        }
-//                    }
-//                    if(title.getJSONObject(0).getString("text").equals("工作时长")){
-//                        if(control.equals("Number")){
-//                            double new_number = value.getDoubleValue("new_number");
-//                            workTime=new_number;
-//                        }
-//                    }
-//                    BigDecimal bigDecimal = new BigDecimal(plan.getPlanManNum()==null?0:plan.getPlanManNum());
-//                    bigDecimal=bigDecimal.multiply(new BigDecimal(workTime));
-//                    plan.setPlanWorkHour(bigDecimal.doubleValue());
-//                    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")){
-//                            Double new_money = value.getDouble("new_number");
-//                            plan.setMoneyOfJob(new BigDecimal(new_money));
-//                            price=new BigDecimal(new_money);
-//                        }
-//                    }
-//                    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.multiply(price);
-//                        report.setCost(bigDecimal);
-//                        report.setWorkingTime(workTime);
-//                        report.setStatus(2);
-//                        report.setPlanId(plan.getId());
-//                        report.setCompanyId(7);
-//                        report.setDeptId(deptId);
-//                        reportList.add(report);
-//                    }
-//                }
-//                if(reportList.size()>0){
-//                    reportService.saveBatch(reportList);
-//                }
-//            }
-//        }
-//    }
+    @Scheduled(cron = "0 20 2 ? * *")
+    public void getTemporaryJobApplication() throws Exception {
+        if(isDev){
+            return;
+        }
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate start=LocalDate.now().minusDays(1);
+        LocalDate end=LocalDate.now();
+        JSONArray jsonArrayFilter = new JSONArray();
+        JSONObject filter1 = new JSONObject();
+        WxCorpTemplate template = wxCorpTemplateService.getById(7);
+        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");
+                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");
+                //生成 车间插单计划
+                Plan plan=new Plan();
+                plan.setCompanyId(7);
+                plan.setCreateTime(LocalDateTime.now());
+                plan.setPlanType(1);
+                plan.setCreateId(first.get().getId());
+                //参与人员列表
+                List<String> userTeams=new ArrayList<>();
+                //初始化 单价(元/小时)
+                BigDecimal price=new BigDecimal(0);
+                //初始化 工作时长
+                double workTime=0;
+                //初始话 工作日期
+                JSONArray sp_record = info.getJSONArray("sp_record");
+                //获取最后一个审批节点
+                JSONObject last_sp_record = sp_record.getJSONObject(sp_record.size() - 1);
+                JSONArray details = last_sp_record.getJSONArray("details");
+                //获取最后详情
+                JSONObject lastDetail = details.getJSONObject(details.size() - 1);
+                long sptime = lastDetail.getLongValue("sptime");
+                LocalDate 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.setTaskName(text);
+                        }
+                    }
+                    //先处理多个人员 公用此单据非工时部分内容
+                    if(title.getJSONObject(0).getString("text").equals("参与人员")){
+                        if(control.equals("Contact")){
+                            JSONArray members = value.getJSONArray("members");
+                            for (int i2 = 0; i2 < members.size(); i2++) {
+                                JSONObject jsonObject = members.getJSONObject(i2);
+                                String userid1 = jsonObject.getString("userid");
+                                userTeams.add(userid1);
+                            }
+
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("参与人数")){
+                        if(control.equals("Number")){
+                            int new_number = value.getIntValue("new_number");
+                            plan.setPlanManNum(new_number);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("开始时间")){
+                        if(control.equals("Date")){
+                            JSONObject date = value.getJSONObject("date");
+                            long s_timestamp = date.getLongValue("s_timestamp");
+                            LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
+                            plan.setStartDate(localDateFromUnix);
+                            if(sptime>0){
+                                createDate= DateTimeUtil.getLocalDateFromUnix(sptime);
+                            }else {
+                                createDate=localDateFromUnix;
+                            }
+
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("结束时间")){
+                        if(control.equals("Date")){
+                            JSONObject date = value.getJSONObject("date");
+                            long s_timestamp = date.getLongValue("s_timestamp");
+                            LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
+                            plan.setEndDate(localDateFromUnix);
+                            if(sptime>0){
+                                createDate= DateTimeUtil.getLocalDateFromUnix(sptime);
+                            }else {
+                                createDate=localDateFromUnix;
+                            }
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("工作时长")){
+                        if(control.equals("Number")){
+                            double new_number = value.getDoubleValue("new_number");
+                            workTime=new_number;
+                        }
+                    }
+                    BigDecimal bigDecimal = new BigDecimal(plan.getPlanManNum()==null?0:plan.getPlanManNum());
+                    //工时以分钟为单位 *60
+                    bigDecimal=bigDecimal.multiply(new BigDecimal(workTime));
+                    bigDecimal=bigDecimal.multiply(new BigDecimal(60));
+                    plan.setPlanWorkHour(bigDecimal.doubleValue());
+                    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")){
+                            Double new_money = value.getDouble("new_number");
+                            plan.setMoneyOfJob(new BigDecimal(new_money));
+                            price=new BigDecimal(new_money);
+                        }
+                    }
+                    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.multiply(price);
+                        report.setCost(bigDecimal);
+                        report.setWorkingTime(workTime);
+                        report.setStatus(2);
+                        report.setPlanId(plan.getId());
+                        report.setCompanyId(7);
+                        report.setDeptId(deptId);
+                        reportList.add(report);
+                    }
+                }
+                if(reportList.size()>0){
+                    reportService.saveBatch(reportList);
+                }
+            }
+        }
+    }
 
 }

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -91,8 +91,8 @@
                         <div v-for="(items, indexs) in scope.row.personWorkHoursWages" :key="indexs" :class="`${scope.row.departmentCascade== '小计' ? '' : 'colorText'}`">
                             <div v-if="items.crateDate == item">
                               <div  style="color: black;" v-if="items.planWorkTime">平均 {{items.planWorkTime}}分钟  {{items.planCost}}元</div>
-                              <div @click.stop="showReportDetail(scope.row,item,0)">已填 {{items.workTime}}分钟  {{items.cost}}元 {{items.leave}}</div>
-                                <div style="color: green;" @click.stop="showTempReportDetail(scope.row,item,0)" v-if="tempWorkTime>0">临时报工 {{items.tempWorkTime}}分钟  {{items.tempCost}}元</div>
+                              <div @click.stop="showReportDetail(scope.row,item,0)" v-if="items.workTime>0">已填 {{items.workTime}}分钟  {{items.cost}}元 </div>{{items.leave}}
+                              <div style="color: green;" @click.stop="showTempReportDetail(scope.row,item,0)" v-if="items.tempWorkTime>0||items.tempCost>0">临时报工 {{items.tempWorkTime}}分钟  {{items.tempCost}}元</div>
                               <div style="color: red;" v-if="items.surplusTime">剩余 {{items.surplusTime}}分钟  {{items.surplusCost}}元</div>
                             </div>
                         </div>