Browse Source

Merge remote-tracking branch 'origin/master'

yusm 1 năm trước cách đây
mục cha
commit
4f18f69d76
19 tập tin đã thay đổi với 340 bổ sung29 xóa
  1. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyController.java
  2. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  3. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  4. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  5. 53 14
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java
  7. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  8. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  9. 5 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java
  10. 21 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureCopyController.java
  11. 85 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedureCopy.java
  12. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdProcedureCopyMapper.java
  13. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureCopyService.java
  14. 2 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureService.java
  15. 20 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureCopyServiceImpl.java
  16. 59 11
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java
  17. 23 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureCopyMapper.xml
  18. 5 0
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  19. 12 0
      fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyController.java

@@ -53,6 +53,17 @@ public class CompanyController {
     @Resource
     private ExpenseMainTypeService expenseMainTypeService;
 
+    @RequestMapping("/testTimeout")
+    public HttpRespMsg testTimeout(){
+        HttpRespMsg msg = new HttpRespMsg();
+        try {
+            Thread.sleep(90*1000);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        return msg;
+    }
+
     @RequestMapping("/getStaffCountMax")
     public HttpRespMsg getStaffCountMax(Integer companyId){
         HttpRespMsg msg = new HttpRespMsg();

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2349,6 +2349,11 @@ public class ReportController {
         return reportService.getUserTimeCostByThird(json);
     }
 
+    @RequestMapping("/cannelAllReport")
+    public HttpRespMsg cannelAllReport(){
+        return reportService.cannelAllReport();
+    }
+
 
     private String getCheckDate(String[] createDate, Integer[] id) {
         String checkDate = null;

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -143,4 +143,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg getUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
 
     HttpRespMsg exportUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate);
+
+    HttpRespMsg cannelAllReport();
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -11865,7 +11865,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<ServiceProduct> serviceProducts = projectServiceData.getServiceProducts();
             if(serviceProducts!=null&&serviceProducts.size()>0){
                 for (ServiceProduct serviceProduct : serviceProducts) {
-                    if(serviceProduct.getProductCategoryID().equals("901")&&serviceProduct.getBaseMeasureUnitCode().equals("HUR")&&serviceProduct.getSales()!=null&&serviceProduct.getSales().getLifeCycleStatusCode().equals("2")){
+                    if(serviceProduct.getProductCategoryID().equals("901")&&serviceProduct.getBaseMeasureUnitCode().equals("HUR")&&serviceProduct.getSales()!=null){
                         SapProjectService sapProjectService=new SapProjectService();
                         sapProjectService.setServiceCode(serviceProduct.getInternalID());
                         sapProjectService.setServiceName(serviceProduct.getDescription().getDescription());

+ 53 - 14
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5111,6 +5111,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 //titles.add("关联任务");
                 titles.add(MessageUtils.message("excel.assTask"));
             }
+            //依斯倍,导出带服务
+            List<SapProjectService> serviceList = null;
+            if (companyId == 3092) {
+                titles.add("服务");
+                serviceList = sapProjectServiceMapper.selectList(new QueryWrapper<SapProjectService>().eq("company_id", companyId));
+            }
 //            titles.add("工作日期");
 //            titles.add("工作时长(小时)");
             titles.add(MessageUtils.message("entry.workDate"));
@@ -5383,6 +5389,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (company.getPackageProject() == 1) {
                     item.add((String) map.get("taskName"));
                 }
+                //依斯倍,导出带服务
+                if (companyId == 3092) {
+                    Integer sapServiceId = (Integer) map.get("sapServiceId");
+                    if (sapServiceId != null) {
+                        Optional<SapProjectService> first = serviceList.stream().filter(d->d.getId().equals(sapServiceId)).findFirst();
+                        if (first.isPresent()) {
+                            SapProjectService divItem = first.get();
+                            item.add(divItem.getServiceName());
+                        } else {
+                            item.add("");
+                        }
+                    } else {
+                        item.add("");
+                    }
+                }
                 item.add(new SimpleDateFormat("yyyy-MM-dd")
                         .format((java.sql.Date) map.get("createDate")));
                 item.add(map.get("duration").toString());
@@ -5450,6 +5471,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             audit.setOperatorId(splitItems[0]);
                             audit.setOperateDate(operateDate);
                             audit.setMsg(splitItems[2]);
+                            String auditMsg = audit.getMsg();
 
                             if (company.getIsInternational() == 1) {
                                 operateDate = operateDate.plusSeconds(offsetSeconds);
@@ -5459,22 +5481,27 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             if(needCorpWxTranslate){
                                 Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(audit.getOperatorId())).findFirst();
                                 if(first.isPresent()){
-                                    if(audit.getMsg().contains("提交了")){
-                                        int i = audit.getMsg().indexOf("提");
-                                        String substring = audit.getMsg().substring(0, i);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
-                                    }else if(audit.getMsg().contains("审核通过了")){
-                                        int i = audit.getMsg().indexOf("审");
-                                        String substring = audit.getMsg().substring(0, i);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
-                                    }else if(audit.getMsg().contains("驳回了")) {
-                                        int i = audit.getMsg().indexOf("驳");
-                                        String substring = audit.getMsg().substring(0, i);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
+                                    String corpwxUserId = first.get().getCorpwxUserid();
+                                    if (auditMsg.contains(corpwxUserId)) {
+                                        if(auditMsg.contains("提交了")){
+                                            int i = auditMsg.indexOf("提");
+                                            String substring = auditMsg.substring(0, i);
+                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+                                        }else if(auditMsg.contains("审核通过了")){
+                                            int i = auditMsg.indexOf("审");
+                                            String substring = auditMsg.substring(0, i);
+                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+                                        }else if(auditMsg.contains("驳回了")) {
+                                            int i = auditMsg.indexOf("驳");
+                                            String substring = auditMsg.substring(0, i);
+                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+                                        }
+                                    } else {
+                                        msg = time+" " + auditMsg;
                                     }
                                 }
                             }else {
-                                msg = time+" " + audit.getMsg();
+                                msg = time+" " + auditMsg;
                             }
                             if (!isFirst) {
                                 sb.append("->");
@@ -5486,6 +5513,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                     item.add(sb.toString());
                 }
+                item.add((String) map.get("content"));
                 if(stateKey==1){
                     Integer state = (Integer) map.get("state");
                     switch (state){
@@ -7603,7 +7631,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return httpRespMsg;
     }
 
-    public void  cancelReportPushSap(String reportIds,User user){
+    @Override
+    public HttpRespMsg cannelAllReport() {
+        List<ReportPushLog> list = reportPushLogService.list();
+        List<Integer> collect = list.stream().map(ReportPushLog::getReportId).distinct().collect(Collectors.toList());
+        String s = collect.stream().map(m -> String.valueOf(m)).collect(Collectors.joining(","));
+        User user = userMapper.selectById(request.getHeader("token"));
+        cancelReportPushSap(s,user);
+        return null;
+    }
+
+    public void  cancelReportPushSap(String reportIds, User user){
         if(!StringUtils.isEmpty(reportIds)){
             LocalDateTime localDateTime=LocalDateTime.now();
             List<SapSyncLog> sapSyncLogs=new ArrayList<>();
@@ -7636,6 +7674,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         }else{
                             result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_deleteemployeetime?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
                         }
+//                        result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_deleteemployeetime?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
                     } catch (Exception e) {
                         e.printStackTrace();
                     }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java

@@ -272,7 +272,7 @@ public class SyncSapUtils {
         processingConditions.setQueryHitsUnlimitedIndicator("true");
         xmlRequestData.setProcessingConditions(processingConditions);
         ServiceProductSelectionByElements serviceProductSelectionByElements=new ServiceProductSelectionByElements();
-        serviceProductSelectionByElements.setSelectionByLastChangeSinceDateTime(startDate+"T00:00:00Z");
+        serviceProductSelectionByElements.setSelectionByLastChangeSinceDateTime(startDate+"T23:59:59Z");
         xmlRequestData.setServiceProductSelectionByElements(serviceProductSelectionByElements);
         String xml = CommonUtils.convertToXml(xmlRequestData);
         xml=xml.substring(xml.indexOf("<XMLDATA>")+9,xml.lastIndexOf("</XMLDATA>"));

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -124,7 +124,7 @@
         ,c.plate1 as plate1,c.plate2 as plate2,c.plate3 as plate3,c.plate4 as plate4,c.plate5 as plate5
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName,
-        GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
+        GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3,a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
         ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
@@ -276,7 +276,7 @@
         departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as
         projectAuditTime,project_main.name as projectMainName,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub,
         GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId
+        , a.batch_id as batchId,a.sap_service_id as sapServiceId,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -170,6 +170,7 @@
     <select id="getProjectTask" resultType="java.util.Map">
         SELECT task.id,tg.id as groupId, task.`name`,task.executor_name,task.executor_id,DATE_FORMAT(task.`end_date`, '%Y-%m-%d') as end_date, task.`plan_hours`,
         (SELECT IFNULL(SUM(working_time),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS real_hours,
+        (SELECT IFNULL(SUM(cost),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS real_cost,
         task.`task_status`, task.`task_type`,
         project.`project_code`, project.`project_name`,tg.name as groupName
         FROM task

+ 5 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java

@@ -78,5 +78,10 @@ public class ProdProcedureController {
     public HttpRespMsg getInfo(@RequestParam String version,@RequestParam Integer productId){
         return prodProcedureService.getInfo(request,version,productId);
     }
+
+    @RequestMapping("updateData")
+    public HttpRespMsg updateData(){
+        return prodProcedureService.updateData();
+    }
 }
 

+ 21 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureCopyController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-12
+ */
+@RestController
+@RequestMapping("/prod-procedure-copy")
+public class ProdProcedureCopyController {
+
+}
+

+ 85 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedureCopy.java

@@ -0,0 +1,85 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProdProcedureCopy extends Model<ProdProcedureCopy> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 工序名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 所属产品id
+     */
+    @TableField("product_id")
+    private Integer productId;
+
+    /**
+     * 单间工价
+     */
+    @TableField("unit_price")
+    private BigDecimal unitPrice;
+
+    /**
+     * 质检类型:0-自检,1-互检,2-专检
+     */
+    @TableField("check_type")
+    private Integer checkType;
+
+    /**
+     * 单件工时
+     */
+    @TableField("working_time")
+    private Double workingTime;
+
+    /**
+     * 版本号
+     */
+    @TableField("version_number")
+    private String versionNumber;
+
+    /**
+     * 产品名称
+     */
+    @TableField("product_name")
+    private String productName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdProcedureCopyMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProdProcedureCopy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-12
+ */
+public interface ProdProcedureCopyMapper extends BaseMapper<ProdProcedureCopy> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureCopyService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProdProcedureCopy;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-12
+ */
+public interface ProdProcedureCopyService extends IService<ProdProcedureCopy> {
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureService.java

@@ -27,4 +27,6 @@ public interface ProdProcedureService extends IService<ProdProcedure> {
     HttpRespMsg getInfo(HttpServletRequest request, String version, Integer productId);
 
     HttpRespMsg getLastProcedureList(HttpServletRequest request, Integer productId);
+
+    HttpRespMsg updateData();
 }

+ 20 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureCopyServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProdProcedureCopy;
+import com.management.platform.mapper.ProdProcedureCopyMapper;
+import com.management.platform.service.ProdProcedureCopyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-12
+ */
+@Service
+public class ProdProcedureCopyServiceImpl extends ServiceImpl<ProdProcedureCopyMapper, ProdProcedureCopy> implements ProdProcedureCopyService {
+
+}

+ 59 - 11
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java

@@ -2,26 +2,19 @@ package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.PlanProcedureTotal;
-import com.management.platform.entity.ProdProcedure;
-import com.management.platform.entity.User;
-import com.management.platform.mapper.PlanProcedureTotalMapper;
-import com.management.platform.mapper.ProdProcedureMapper;
-import com.management.platform.mapper.ProductMapper;
-import com.management.platform.mapper.UserMapper;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.*;
 import com.management.platform.service.PlanProcedureTotalService;
 import com.management.platform.service.ProdProcedureService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.service.ReportService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +36,12 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
     private ProductMapper productMapper;
     @Resource
     private PlanProcedureTotalMapper planProcedureTotalMapper;
+    @Resource
+    private ProdProcedureCopyMapper prodProcedureCopyMapper;
+    @Resource
+    private PlanProcedureTotalService planProcedureTotalService;
+    @Resource
+    private ReportService reportService;
 
     @Override
     public HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> prodProcedureList, Integer productId, String productName, String version) {
@@ -69,6 +68,16 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
                     .eq(StringUtils.isNotBlank(version),ProdProcedure::getVersionNumber,version)
                     .select(ProdProcedure::getId)
             );
+            //当现有的数据不是新增工序而且没指定新的版本号时 要阻止
+            List<Integer> oldIdList = oldList.stream().map(ProdProcedure::getId).distinct().collect(Collectors.toList());
+            List<Integer> nowIdList = prodProcedureList.stream().map(ProdProcedure::getId).distinct().collect(Collectors.toList());
+            if(!nowIdList.containsAll(oldIdList)){
+                List<PlanProcedureTotal> planProcedureTotals = planProcedureTotalMapper.selectList(new QueryWrapper<PlanProcedureTotal>().in("prod_procedure_id", oldIdList));
+                if(planProcedureTotals.size()>0){
+                    msg.setError("当前版本工序存在已被使用的,同版本号只支持修改和新增,不支持删除操作,请重新定义新的工序版本号");
+                    return msg;
+                }
+            }
 
             if(oldList!=null&&oldList.size()>0){
 
@@ -198,4 +207,43 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
         httpRespMsg.data=map;
         return httpRespMsg;
     }
+
+    @Override
+    public HttpRespMsg updateData() {
+        List<ProdProcedure> prodProcedures = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>().eq(ProdProcedure::getCompanyId, 7));
+        List<ProdProcedureCopy> prodProcedureCopyList = prodProcedureCopyMapper.selectList(new LambdaQueryWrapper<ProdProcedureCopy>().eq(ProdProcedureCopy::getCompanyId, 7));
+        List<Integer> ids = prodProcedures.stream().map(ProdProcedure::getId).distinct().collect(Collectors.toList());
+        //需要处理的数据
+        List<PlanProcedureTotal> planProcedureTotals = planProcedureTotalMapper.selectList(new LambdaQueryWrapper<PlanProcedureTotal>().notIn(PlanProcedureTotal::getProdProcedureId, ids));
+        List<Report> reportList = reportService.list(new LambdaQueryWrapper<Report>().notIn(Report::getProdProcedureId, ids));
+        for (PlanProcedureTotal planProcedureTotal : planProcedureTotals) {
+            Optional<ProdProcedureCopy> first = prodProcedureCopyList.stream().filter(p -> p.getId().equals(planProcedureTotal.getProdProcedureId())).findFirst();
+            if(first.isPresent()){
+                ProdProcedureCopy prodProcedureCopy = first.get();
+                Optional<ProdProcedure> procedure = prodProcedures.stream().filter(p -> p.getProductId().equals(prodProcedureCopy.getProductId()) && p.getVersionNumber().equals(prodProcedureCopy.getVersionNumber()) && p.getName().equals(prodProcedureCopy.getName())).findFirst();
+                if(procedure.isPresent()){
+                    planProcedureTotal.setProdProcedureId(procedure.get().getId());
+                }
+            }
+        }
+        if(planProcedureTotals.size()>0){
+            planProcedureTotalService.updateBatchById(planProcedureTotals);
+        }
+        for (Report report : reportList) {
+            Optional<ProdProcedureCopy> first = prodProcedureCopyList.stream().filter(p -> p.getId().equals(report.getProdProcedureId())).findFirst();
+            if(first.isPresent()){
+                ProdProcedureCopy prodProcedureCopy = first.get();
+                Optional<ProdProcedure> procedure = prodProcedures.stream().filter(p -> p.getProductId().equals(prodProcedureCopy.getProductId()) && p.getVersionNumber().equals(prodProcedureCopy.getVersionNumber()) && p.getName().equals(prodProcedureCopy.getName())).findFirst();
+                if(procedure.isPresent()){
+                    report.setProdProcedureId(procedure.get().getId());
+                }
+            }
+        }
+        if(reportList.size()>0){
+            reportService.updateBatchById(reportList);
+        }
+
+
+        return new HttpRespMsg();
+    }
 }

+ 23 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureCopyMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProdProcedureCopyMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProdProcedureCopy">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="company_id" property="companyId" />
+        <result column="product_id" property="productId" />
+        <result column="unit_price" property="unitPrice" />
+        <result column="check_type" property="checkType" />
+        <result column="working_time" property="workingTime" />
+        <result column="version_number" property="versionNumber" />
+        <result column="product_name" property="productName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, company_id, product_id, unit_price, check_type, working_time, version_number, product_name
+    </sql>
+
+</mapper>

+ 5 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -269,6 +269,11 @@
                         <font :style="'color:'+(scope.row.real_hours > scope.row.plan_hours?'red':'')">{{scope.row.real_hours == null? 0:scope.row.real_hours.toFixed(1)}}</font>
                     </template>
                 </el-table-column>
+                <el-table-column prop="real_cost" label="实际成本"  width="150" v-if="user.companyId == 3092 || user.companyId==7 || user.companyId==10">
+                   <template slot-scope="scope">
+                        {{scope.row.real_cost == null? 0:scope.row.real_cost.toFixed(2)}}
+                    </template>
+                </el-table-column>
                 <el-table-column prop="task_status" :label="$t('state.states')" width="80" >
                     <template slot-scope="scope">
                         {{taskStatusTxt[scope.row.task_status]}}

+ 12 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -1733,6 +1733,15 @@ export default {
           spl[i].pic = spl[i].pic.map(a => a.name).join(',')
         }
       }
+      console.log(paramData, '<== paramData')
+      let noAmount = paramData.invoiceList.filter(item => !item.amount)
+      if(noAmount.length > 0) {
+        this.$message({
+          message: '请填写完整费用金额',
+          type: "error"
+        });
+        return;
+      }
       paramData.items = JSON.stringify(paramData.invoiceList)//这里要传发票列表的json转string
       // console.log(paramData, '<== paramData')
       // return
@@ -2380,12 +2389,15 @@ export default {
         stat = this.date[0]
         end = this.date[1]
       }
+
       this.http.post('/expense-sheet/exportList', {
         code: this.code,
         startDate: stat,
         endDate: end,
         ownerId: this.ownerId,
         type: this.type,
+        projectId: this.selectProject ? this.selectProject : null,
+        sendState: this.sendState
       },
         res => {
           if (res.code == "ok") {