seyason 1 year ago
parent
commit
bc4bb3d01f

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

@@ -29,5 +29,10 @@ public class PlanProcedureTotalController {
     public HttpRespMsg getReportForWorkList(){
         return planProcedureTotalService.getReportForWorkList();
     }
+
+    @RequestMapping("/getFillProcedureDetail")
+    public HttpRespMsg getFillProcedureDetail(Integer id){
+        return planProcedureTotalService.getFillProcedureDetail(id);
+    }
 }
 

+ 5 - 29
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Report.java

@@ -18,7 +18,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-07-27
+ * @since 2023-07-29
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -76,13 +76,7 @@ public class Report extends Model<Report> {
     private Integer companyId;
 
     /**
-     * 任务分组id
-     */
-    @TableField("group_id")
-    private Integer groupId;
-
-    /**
-     * 任务id
+     * 生产计划id
      */
     @TableField("plan_id")
     private Integer planId;
@@ -118,28 +112,10 @@ public class Report extends Model<Report> {
     private String checkerId;
 
     /**
-     * 任务变更通知号
-     */
-    @TableField("task_change_notice_num")
-    private String taskChangeNoticeNum;
-
-    /**
-     * 任务名称
-     */
-    @TableField("task_name")
-    private String taskName;
-
-    /**
-     * 任务类型id
-     */
-    @TableField("task_type_id")
-    private Integer taskTypeId;
-
-    /**
-     * 任务类型名称
+     * 工序分配对应员工关系id
      */
-    @TableField("task_type_name")
-    private String taskTypeName;
+    @TableField("user_procedure_team_id")
+    private Integer userProcedureTeamId;
 
 
     @Override

+ 10 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/ReportVO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 
@@ -16,4 +17,13 @@ public class ReportVO extends Report {
     private String productName;//产品名称
     private String procedureName;//工序名称
     private String checkerName;//质检人姓名
+
+    private String taskTypeName;
+    private String taskName;
+    private String taskChangeNoticeNum;//任务变更通知号
+    private String productSchedulingNum;//生产排单号
+    private String planType; //生产计划类型, 0-普通计划,1-插单计划
+    private LocalDate startDate;
+    private LocalDate  endDate;
+
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdProcedureTeamMapper.java

@@ -17,4 +17,6 @@ import java.util.List;
 public interface ProdProcedureTeamMapper extends BaseMapper<ProdProcedureTeam> {
 
     public List<HashMap> getReportForWorkList(String userId);
+
+    public HashMap getFillProcedureDetail(Integer id);
 }

+ 2 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -2,6 +2,7 @@ package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.management.platform.entity.Report;
+import com.management.platform.entity.vo.ReportVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -80,7 +81,7 @@ public interface ReportMapper extends BaseMapper<Report> {
                                                                 @Param("state") Integer state
                                                                 );
 
-    List<Map<String, Object>> getUserReportByDate(@Param("date") String date, @Param("userIds") List<String> userIds);
+    List<ReportVO> getUserReportByDate(@Param("date") String date, @Param("userIds") List<String> userIds);
 
     List<Map<String, Object>> getReportByTask(@Param("taskId") Integer taskId);
 

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

@@ -15,4 +15,6 @@ import com.management.platform.util.HttpRespMsg;
 public interface PlanProcedureTotalService extends IService<PlanProcedureTotal> {
 
     HttpRespMsg getReportForWorkList();
+
+    HttpRespMsg getFillProcedureDetail(Integer id);
 }

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

@@ -88,4 +88,16 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
         msg.setData(resultList);
         return msg;
     }
+
+    @Override
+    public HttpRespMsg getFillProcedureDetail(Integer id) {
+        HttpRespMsg msg = new HttpRespMsg();
+        HashMap prodProcedureTeam = prodProcedureTeamMapper.getFillProcedureDetail(id);
+        if (prodProcedureTeam == null) {
+            msg.setError("找不到该数据");
+        } else {
+            msg.setData(prodProcedureTeam);
+        }
+        return msg;
+    }
 }

+ 38 - 18
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -134,6 +134,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private ExcelExportService excelExportService;
     @Resource
     private PlanProcedureTotalMapper planProcedureTotalMapper;
+    @Resource
+    private ProdProcedureTeamMapper prodProcedureTeamMapper;
+    @Resource
+    private PlanMapper planMapper;
     @Autowired
     RestTemplate restTemplate;
 
@@ -144,14 +148,31 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     public HttpRespMsg submitReport(Report report, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
+        Integer companyId = userMapper.selectById(token).getCompanyId();
         report.setCreatorId(token);
+        LocalDate today = LocalDate.now();
+        report.setCreateDate(today);
+        report.setCompanyId(companyId);
+        //检查今日该员工的该工序是否已经有报工
+        Report existReport = reportMapper.selectOne(new QueryWrapper<Report>().eq("creator_id", token).eq("prod_procedure_id", report.getProdProcedureId()).eq("create_date", today));
         //计算工作时长
-        planProcedureTotalMapper.selectOne(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", report.getPlanId()).eq("procedure_id", report.getProdProcedureId()));
-
-        if (report.getId() == null) {
+        ProdProcedureTeam prodProcedureTeam = prodProcedureTeamMapper.selectById(report.getUserProcedureTeamId());
+        double curReportTime = 0.0;
+        //查找上一次该工序的报工
+        Report lastReport = reportMapper.selectOne(new QueryWrapper<Report>().eq("creator_id", token).eq("prod_procedure_id", report.getProdProcedureId()).lt("create_date", today).orderByDesc("create_date").last("limit 1"));
+        if (lastReport != null) {
+            curReportTime = (prodProcedureTeam.getWorkTime() * (report.getProgress() - lastReport.getProgress())/100);
+        } else {
+            curReportTime = (prodProcedureTeam.getWorkTime() * report.getProgress()/100);
+        }
+        report.setWorkingTime(curReportTime);//本次报工的工时数
+        Plan plan = planMapper.selectById(report.getPlanId());
+        report.setDeptId(plan.getStationId());
+        report.setProductId(plan.getProductId());
+        if (existReport == null) {
             reportMapper.insert(report);
         } else {
-            reportMapper.updateById(report);
+            reportMapper.updateById(existReport);
         }
         return httpRespMsg;
     }
@@ -241,15 +262,15 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             String id = (String) n.get("id");
                             userIds.add(id);
                         });
-                        List<Map<String, Object>> reportList = reportMapper.getUserReportByDate(date, userIds);
+                        List<ReportVO> reportList = reportMapper.getUserReportByDate(date, userIds);
                         for (Map<String, Object> memb : nameList) {
                             //再根据人分别获取当天的报告
-                            List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();
+                            List<ReportVO> rList = new ArrayList<ReportVO>();
                             BigDecimal total = new BigDecimal(0);
-                            for (Map<String, Object> report : reportList) {
-                                if (((String)report.get("creatorId")).equals((String)memb.get("id"))) {
+                            for (ReportVO report : reportList) {
+                                if (report.getCreatorId().equals((String)memb.get("id"))) {
                                     rList.add(report);
-                                    total = total.add((BigDecimal) report.get("cost"));
+                                    total = total.add(report.getCost());
                                 }
                             }
                             memb.put("data", rList);
@@ -293,21 +314,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         String id = (String) n.get("id");
                         userIds.add(id);
                     });
-                    List<Map<String, Object>> reportList = reportMapper.getUserReportByDate(date, userIds);
+                    List<ReportVO> reportList = reportMapper.getUserReportByDate(date, userIds);
                     for (Map<String, Object> map : nameList) {
                         //再根据人分别获取当天的报告
-                        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
-                        BigDecimal total = new BigDecimal(0);
-                        for (Map<String, Object> report : reportList) {
-                            if (((String)report.get("creatorId")).equals((String)map.get("id"))) {
+                        List<ReportVO> list = new ArrayList<ReportVO>();
+//                        BigDecimal total = new BigDecimal(0);
+                        for (ReportVO report : reportList) {
+                            if (report.getCreatorId().equals((String)map.get("id"))) {
                                 list.add(report);
-                                total = total.add((BigDecimal) report.get("cost"));
+//                                total = total.add(report.getCost());
                             }
-
                         }
                         map.put("data", list);
-                        map.put("cost", total);
-                        double reportTime = 0;
+//                        map.put("cost", total);
+                        double reportTime = reportList.stream().filter(r->r.getCreatorId().equals((String)map.get("id"))).mapToDouble(ReportVO::getWorkingTime).sum();
                         if (list.size() > 0) {
                             int state = 1;
                             map.put("state", state);

+ 11 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureTeamMapper.xml

@@ -33,4 +33,15 @@
         where 1 = 1 and a.progress &lt; 100 and a.user_id=#{userId}
         order by a.plan_id desc
     </select>
+
+    <select id="getFillProcedureDetail" resultType="java.util.HashMap" >
+        SELECT a.*, date_format(plan.`start_date`,'%Y-%m-%d') as start_date, date_format(plan.`end_date`,'%Y-%m-%d') as end_date, plan.`plan_type`, plan.`product_scheduling_num`,plan.task_type_name,plan.task_name,plan.task_change_notice_num,
+               product.`name` AS product_name,prod_procedure.name AS procedure_name, prod_procedure.check_type
+        FROM prod_procedure_team a
+                 LEFT JOIN plan ON plan.id = a.plan_id
+                 LEFT JOIN product ON product.id = plan.`product_id`
+                 LEFT JOIN prod_procedure ON prod_procedure.id = a.prod_procedure_id
+        where a.id = #{id}
+    </select>
+
 </mapper>

+ 9 - 13
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -1,6 +1,7 @@
 <?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.ReportMapper">
+
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.management.platform.entity.Report">
         <id column="id" property="id" />
@@ -11,17 +12,13 @@
         <result column="cost" property="cost" />
         <result column="dept_id" property="deptId" />
         <result column="company_id" property="companyId" />
-        <result column="group_id" property="groupId" />
         <result column="plan_id" property="planId" />
         <result column="progress" property="progress" />
         <result column="product_id" property="productId" />
         <result column="prod_procedure_id" property="prodProcedureId" />
         <result column="check_type" property="checkType" />
         <result column="checker_id" property="checkerId" />
-        <result column="task_change_notice_num" property="taskChangeNoticeNum" />
-        <result column="task_name" property="taskName" />
-        <result column="task_type_id" property="taskTypeId" />
-        <result column="task_type_name" property="taskTypeName" />
+        <result column="user_procedure_team_id" property="userProcedureTeamId" />
     </resultMap>
     <resultMap id="FullMap" type="com.management.platform.entity.vo.ReportVO" extends="BaseResultMap">
         <result column="creatorName" property="creatorName" />
@@ -29,10 +26,9 @@
         <result column="procedureName" property="procedureName" />
         <result column="checkerName" property="checkerName" />
     </resultMap>
-
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, creator_id, create_date, working_time, create_time, cost, dept_id, company_id, group_id, plan_id, progress, product_id, prod_procedure_id, check_type, checker_id, task_change_notice_num, task_name, task_type_id, task_type_name
+        id, creator_id, create_date, working_time, create_time, cost, dept_id, company_id, plan_id, progress, product_id, prod_procedure_id, check_type, checker_id, user_procedure_team_id
     </sql>
     <select id="getReportFillStatus" resultType="java.util.Map">
         SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as createDate FROM report
@@ -102,12 +98,11 @@
 
     <!--根据员工id,日期获取当天全部报告信息-->
     <select id="getReportByDate" resultMap="FullMap">
-        select a.*,product.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName
+        select a.*,b.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName
         FROM report AS a
         left JOIN product AS b ON a.product_id=b.id
         left join prod_procedure on prod_procedure.id = a.prod_procedure_id
-        left join sub_project as d on d.id = a.sub_project_id
-        left join user u on u.id = a.project_auditor_id
+        left join user u on u.id = a.creator_id
         left join user checker on checker.id = a.checker_id
         WHERE 1=1
         <if test="date != null and date != ''">
@@ -119,13 +114,14 @@
 
     <!-- 批量获取员工某天的报告 -->
     <select id="getUserReportByDate" resultMap="FullMap">
-        select a.*,product.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName
+        select a.*,b.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName,
+        plan.task_type_name,plan.task_name,plan.task_change_notice_num,plan.product_scheduling_num,plan.plan_type,plan.start_date,plan.end_date
         FROM report AS a
         left JOIN product AS b ON a.product_id=b.id
         left join prod_procedure on prod_procedure.id = a.prod_procedure_id
-        left join sub_project as d on d.id = a.sub_project_id
-        left join user u on u.id = a.project_auditor_id
+        left join user u on u.id = a.creator_id
         left join user checker on checker.id = a.checker_id
+        left join plan on plan.id = a.plan_id
         WHERE 1=1
         <if test="date != null and date != ''">
             AND a.create_date=#{date}

+ 51 - 36
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/workView/fillReport.vue

@@ -2,29 +2,26 @@
   <div class="distribution">
     <van-nav-bar title="报工" left-text="返回"  @click-left="back" fixed left-arrow/>
     <div class="distribution_header">
-        <div>东湾2号线电池箱</div>
-        <div>00001</div>
-        <div>20230620</div>
+        <div>{{reportForm.product_name}}</div>
+        <div>{{reportForm.plan_type == 0? reportForm.product_scheduling_num:reportForm.task_change_notice_num}}</div>
+        <div>{{reportForm.start_date}}至{{reportForm.end_date}}</div>
       </div>
 
     <van-form @submit="onSubmit">
       <van-cell-group inset>
 
-        <van-cell title="工序" value="xxxxx" />
-        <van-field type="digit" input-align="right"
-          v-model="reportForm.progress"
-          name="进度"
-          label="进度(%)"
-          placeholder="%"
-          :rules="[{ required: true, message: '请填写整数' }]"
-        />
-        <van-cell title="质检类型" value="自检" />
-        <van-cell title="质检人" value="小昂" is-link>
-
+        <van-cell title="工序" :value="reportForm.procedure_name" />
+        <van-cell title="进度(%)"   >
+          <template>
+            <van-stepper v-model="reportForm.progress" step="10" :min="0" :max="100"/>
+          </template>
+        </van-cell>
+        <van-cell title="质检类型" :value="checkTypeTxt[reportForm.check_type]" v-if="reportForm.progress==100"/>
+        <van-cell title="质检人" :value="reportForm.checker_name" is-link v-if="reportForm.progress==100">
         </van-cell>
       </van-cell-group>
       <div style="margin: 16px;">
-        <van-button round block type="primary" native-type="submit">
+        <van-button round block type="primary" native-type="submit" :loading = "saving">
           提交
         </van-button>
       </div>
@@ -42,15 +39,13 @@ export default {
   },
   data() {
     return {
+      saving: false,
+      checkTypeTxt:['自检','互检','专检'],
       reportForm: {
         progress: 10,
 
 
       },
-      distributionIndex: null,
-      popupShow: false,
-      titleText: '今日计划', // 默认文字
-      todayAndTomorrow: true, // true 今日计划,false 明日计划
     };
   },
   computed: {},
@@ -63,28 +58,47 @@ export default {
     back() {
       this.$router.go(-1);
     },
-    // 下单计划
-    placeAnOrder() {
-      console.log('点击了下单计划')
-    },
-    distributionProp(item, index) {
-      this.distributionIndex = index
-      this.popupShow = true
+ 
+    onSubmit() {
+        if (this.reportForm.progress == 0){
+          this.$toast.fail('进度不可为0')
+              return;
+        }
+        let postData = {
+          userProcedureTeamId:this.reportForm.id,
+          prodProcedureId: this.reportForm.prod_procedure_id,
+          progress: this.reportForm.progress,
+          planId: this.reportForm.plan_id,
+          productId: this.reportForm.product_id,
+          checkType: this.reportForm.check_type
+        };
+        if (this.reportForm.progress == 100) {
+          if (this.reportForm.check_type != 0) {
+            if (this.reportForm.checker_id == null) {
+              this.$toast.fail('请选择检验人')
+              return;
+            } else {
+              this.postData.checkerId = this.reportForm.checker_id;
+            }
+          }
+        }
+        this.saving = true;
+        this.$axios.post("/report/submitReport", postData)
+        .then(res => {
+          this.saving = false;
+            if(res.code == "ok") {
+              this.$toast.success('提交成功')
+            } else {
+                this.$toast.fail(res.msg);
+            }
+        }).catch(err=> {this.$toast.clear();});
     },
-
     getMyPlanProcedureList() {
-      const toast = this.$toast.loading({
-          forbidClick: true,
-          duration: 0
-      });
-      this.$axios.post("/plan-procedure-total/getReportForWorkList", this.form)
+      this.$axios.post("/plan-procedure-total/getFillProcedureDetail", {id: this.$route.query.id})
       .then(res => {
           if(res.code == "ok") {
-              this.$toast.clear();
-              this.$toast.success('登录成功');
-              
+              this.reportForm = res.data;
           } else {
-              this.$toast.clear();
               this.$toast.fail(res.msg);
           }
       }).catch(err=> {this.$toast.clear();});
@@ -124,6 +138,7 @@ export default {
       font-size: 16px;
       div {
         margin-top: 6px;
+        margin-bottom: 5px;
       }
     }
 

+ 5 - 4
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/workView/workView.vue

@@ -10,12 +10,12 @@
             <div>{{prod.start_date}}至{{prod.end_date}}</div>
           </div>
           <div class="distribution_box" v-for="item,index in prod.procedureList" :key="index" @click="reportItem(item)">
-            <div >
+            <div>
               <van-row >
                 <van-col span="20">{{ item.procedure_name }}</van-col>
-                <van-col span="4">{{ item.working_time }}小时</van-col>
+                <van-col span="4">{{ item.work_time }} h</van-col>
               </van-row>
-              <div style="margin-top:10px;">
+              <div style="margin-top:10px;text-align: center;">
                 <van-row gutter="20" >
                   <van-col span="8">
                       <div class="valueCls">
@@ -133,7 +133,7 @@ export default {
   .distribution {
     width: 100%;
     height: 100%;
-    padding: 54px 15px 15px 15px;
+    padding: 44px 15px 15px 15px;
     display: flex;
     flex-direction: column;
     flex-wrap: wrap;
@@ -144,6 +144,7 @@ export default {
       font-size: 16px;
       div {
         margin-top: 6px;
+        margin-bottom: 5px;
       }
     }