Browse Source

修改自定义报工表单保存,添加额外信息表

yusm 5 months ago
parent
commit
cf6f4b5927

+ 13 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/AlertTimeController.java

@@ -1,9 +1,13 @@
 package com.management.platform.controller;
 
 
+import com.management.platform.task.TimingTask;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
 
 /**
  * <p>
@@ -17,5 +21,14 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/alert-time")
 public class AlertTimeController {
 
+    @Autowired
+    private TimingTask timingTask;
+
+    @RequestMapping("/test")
+    public HttpRespMsg test() throws Exception {
+        timingTask.getTemporaryJobApplicationNew();
+        return new HttpRespMsg();
+    }
+
 }
 

+ 21 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/PlanExtraInfoController.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-12-11
+ */
+@RestController
+@RequestMapping("/plan-extra-info")
+public class PlanExtraInfoController {
+
+}
+

+ 60 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/PlanExtraInfo.java

@@ -0,0 +1,60 @@
+package com.management.platform.entity;
+
+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-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class PlanExtraInfo extends Model<PlanExtraInfo> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 计划id
+     */
+    @TableField("plan_id")
+    private Integer planId;
+
+    /**
+     * 日报id
+     */
+    @TableField("report_id")
+    private Integer reportId;
+
+    /**
+     * 零件名称
+     */
+    @TableField("part_name")
+    private String partName;
+
+    /**
+     * 工序名称
+     */
+    @TableField("operation_name")
+    private String operationName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

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

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

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

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

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

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

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

@@ -5036,12 +5036,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 item.add(map.get("taskChangeNoticeNum")==null?"":String.valueOf(map.get("taskChangeNoticeNum")));
             }
             if(planType==0){
-                item.add(map.get("procedureName")==null?"":String.valueOf(map.get("procedureName")));
+                if (map.get("operationName")!=null){
+                    item.add(String.valueOf(map.get("operationName")));
+                }else {
+                    item.add(map.get("procedureName") == null ? "" : String.valueOf(map.get("procedureName")));
+                }
             }else {
                 item.add("临时报工");
             }
             item.add(map.get("steelNumArray")==null?"":String.valueOf(map.get("steelNumArray")));
-            item.add(map.get("productName")==null?"":String.valueOf(map.get("productName")));
+            if (map.get("partName")!=null){
+                item.add(String.valueOf(map.get("partName")));
+            }else {
+                item.add(map.get("productName")==null?"":String.valueOf(map.get("productName")));
+            }
             item.add("");
 //            item.add(String.valueOf(map.get("progress"))+"%");
             item.add(String.valueOf(map.get("finishNum")));

+ 75 - 11
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java

@@ -108,6 +108,8 @@ public class TimingTask {
     private PlanService planService;
     @Resource
     private ReportService reportService;
+    @Resource
+    private PlanExtraInfoService extraInfoService;
 
     private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
     static {
@@ -645,6 +647,11 @@ public class TimingTask {
                 }
                 //初始化工位
                 Integer deptId=0;
+                long startTime=0;
+                long endTime=0;
+                String steelNumArray="";
+                String operationName="";
+                String partName="";
                 for (int i1 = 0; i1 < contents.size(); i1++) {
                     JSONObject map = contents.getJSONObject(i1);
                     JSONArray title = map.getJSONArray("title");
@@ -671,12 +678,36 @@ public class TimingTask {
                             plan.setProjectName(text);
                         }
                     }
+                    if(title.getJSONObject(0).getString("text").contains("包名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            plan.setProductSchedulingNum(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("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            operationName=text;//工序名称
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("零件编码")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            steelNumArray=text;//零件编码
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("零件名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            partName=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;
@@ -737,8 +768,7 @@ public class TimingTask {
                         }
                     }
 
-                    long startTime=0;
-                    long endTime=0;
+
                     if(title.getJSONObject(0).getString("text").equals("作业开始日期")){
                         if(control.equals("Date")){
                             JSONObject date = value.getJSONObject("date");
@@ -750,19 +780,41 @@ public class TimingTask {
                     }
                     if(title.getJSONObject(0).getString("text").equals("作业结束日期")){
                         if(control.equals("Date")){
+                            long s_timestamp=0;
                             JSONObject date = value.getJSONObject("date");
-                            long s_timestamp = date.getLongValue("s_timestamp");
+                            if (!StringUtils.isEmpty(date.getString("s_timestamp"))){
+                                s_timestamp= date.getLongValue("s_timestamp");
+                                LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
+                                plan.setEndDate(localDateFromUnix);
+                            }
                             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);//分钟
+                        workTime=l/3600.0;
+                        plan.setPlanWorkHour(workTime);//小时
+
+                        startTime=0;
+                        endTime=0;
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("所属工位长")){
+                        if(control.equals("Contact")){
+                            JSONArray members = value.getJSONArray("members");
+                            String userid2 = members.getJSONObject(0).getString("userid");
+                            User user = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", userid2));
+                            Department department = departmentService.getById(user.getDepartmentId());
+                            if (user != null) {
+                                plan.setForemanId(user.getId());
+                                plan.setForemanName(user.getName());
+                                if (department != null) {
+                                    plan.setStationId(department.getDepartmentId());
+                                    plan.setStationName(department.getDepartmentName());
+                                }
+                            }
+                        }
                     }
                     if(title.getJSONObject(0).getString("text").equals("备注")){
                         if(control.equals("Text")||control.equals("Textarea")){
@@ -773,6 +825,8 @@ public class TimingTask {
                 }
                 planService.save(plan);
                 List<Report> reportList=new ArrayList<>();
+                List<PlanExtraInfo> planExtraInfoList=new ArrayList<>();
+
                 //处理人员日报数据
                 for (String userTeam : userTeams) {
                     Optional<User> user = userList.stream().filter(u -> u.getCorpwxRealUserid() != null && u.getCorpwxRealUserid().equals(userTeam)).findFirst();
@@ -782,19 +836,29 @@ public class TimingTask {
                         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.setCost(plan.getSettlementAmount().divide(BigDecimal.valueOf(userTeams.size())).setScale(2, RoundingMode.HALF_UP));
                         report.setStatus(2);
                         report.setPlanId(plan.getId());
                         report.setCompanyId(7);
-                        report.setDeptId(deptId);
+                        report.setDeptId(user.get().getDepartmentId());
+                        report.setSteelNumArray(steelNumArray);
                         reportList.add(report);
                     }
                 }
                 if(reportList.size()>0){
                     reportService.saveBatch(reportList);
+                    for (Report report : reportList) {
+                        PlanExtraInfo planExtraInfo = new PlanExtraInfo();
+                        planExtraInfo.setPlanId(plan.getId());
+                        planExtraInfo.setReportId(report.getId());
+                        planExtraInfo.setOperationName(operationName);
+                        planExtraInfo.setPartName(partName);
+                        planExtraInfoList.add(planExtraInfo);
+                    }
+                    if(planExtraInfoList.size()>0){
+                        extraInfoService.saveBatch(planExtraInfoList);
+                    }
                 }
             }
         }

+ 19 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/PlanExtraInfoMapper.xml

@@ -0,0 +1,19 @@
+<?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.PlanExtraInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.PlanExtraInfo">
+        <id column="id" property="id" />
+        <result column="plan_id" property="planId" />
+        <result column="report_id" property="reportId" />
+        <result column="part_name" property="partName" />
+        <result column="operation_name" property="operationName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, plan_id, report_id, part_name, operation_name
+    </sql>
+
+</mapper>

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

@@ -574,9 +574,10 @@
     <select id="getReportList" resultType="java.util.Map">
         select p.project_name as projectName,p.product_order_num as productOrderNum, p.plan_type as planType,u.name as userName,u.job_number as jobNumber,d.department_id as departmentId,p.product_scheduling_num as productSchedulingNum,
         p.task_change_notice_num as taskChangeNoticeNum,r.steel_num_array as steelNumArray,r.working_time as workingTime,p.product_name as productName,r.finish_num as finishNum,
-        pp.name as procedureName,r.progress as progress,(CASE r.check_type WHEN 0 THEN '自检' WHEN 1 THEN '互检' ELSE '专检' END ) as checkType ,uu.name as checkerName,
+        pp.name as procedureName,r.progress as progress,(CASE r.check_type WHEN 0 THEN '自检' WHEN 1 THEN '互检' ELSE '专检' END ) as checkType ,uu.name as checkerName,pei.part_name partName,pei.operation_name operationName,
         date_format(r.create_date,'%Y-%m-%d') as createDate,date_format(r.create_time,'%Y-%m-%d %T') as reportTime,(CASE WHEN p.plan_type=0 THEN pp.unit_price ELSE p.money_of_job END) as unitPrice,r.cost  from report r
         left join plan p on p.id=r.plan_id
+        left join plan_extra_info pei on r.id=pei.report_id
         left join department d on d.department_id=p.station_id
         left join user u on r.creator_id=u.id
         left join prod_procedure pp on pp.id=r.prod_procedure_id