瀏覽代碼

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

zx 1 年之前
父節點
當前提交
4e9bb58187

+ 13 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Plan.java

@@ -22,7 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2023-07-31
+ * @since 2023-08-01
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -134,6 +134,18 @@ public class Plan extends Model<Plan> {
     @TableField("end_date")
     private LocalDate endDate;
 
+    /**
+     * 计划总工价
+     */
+    @TableField("plan_total_wages")
+    private BigDecimal planTotalWages;
+
+    /**
+     * 进度
+     */
+    @TableField("progress")
+    private String progress;
+
     /**
      * 任务名称
      */

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

@@ -115,7 +115,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         }
         /*作为工长看到的数据*/
         if(count(new QueryWrapper<Plan>().eq("foreman_id",user.getId()))>0){
-            queryWrapper.and(wrapper->wrapper.eq("foreman_id",user.getId()).or().eq("create_id",user.getId()));
+            queryWrapper.and(wrapper->wrapper.and(wr->wr.eq("foreman_id",user.getId()).eq("status",1)).or().eq("create_id",user.getId()));
         }else {
             /*作为组员可以查看的数据*/
             List<ProdProcedureTeam> prodProcedureTeams = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().eq("company_id", companyId).eq("user_id", user.getId()));
@@ -209,6 +209,9 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                     return msg;
                 }
             }
+            if(!StringUtils.isEmpty(plan.getSteelStampNumberStart())&&!StringUtils.isEmpty(plan.getSteelStampNumberEnd()!=null)){
+                QueryWrapper<Plan> cutQueryWrapper=new QueryWrapper();
+            }
             switch (plan.getPlanType()){
                 case 0:
                     plan.setStartDate(LocalDate.now());
@@ -281,6 +284,12 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }
         }
         planProcedureTotalService.saveBatch(planProcedureTotals);
+        List<PlanProcedureTotal> totals = planProcedureTotals.stream().filter(ps -> ps.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+        if(totals.size()>0){
+            double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();
+            plan.setPlanTotalWages(new BigDecimal(sum));
+        }
+        planMapper.updateById(plan);
         return msg;
     }
 
@@ -824,6 +833,10 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
     @Override
     public HttpRespMsg deptSet(String deptIds) {
         HttpRespMsg msg=new HttpRespMsg();
+        if(StringUtils.isEmpty(deptIds)){
+            msg.setError("请选择部门");
+            return msg;
+        }
         List<String> deptIdList = Arrays.asList(deptIds.split(","));
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         //已经保存了的部门设置 删除之前 部门下不存在计划数据的部门

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

@@ -260,9 +260,9 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             String title = "";
             String jumpUrl ;
             if(isPrivateDeploy){
-                jumpUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri="+pcUrl+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
+                jumpUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+corpInfo.getCorpid()+"&redirect_uri="+pcUrl+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
             }else {
-                jumpUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
+                jumpUrl="https://open.weixin.qq.com/connect/oauth2/authorize?"+corpInfo.getCorpid()+"&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
             }
             jumpUrl = jumpUrl.replace("STATE", pageRouter);
             if ("plan/today".equals(pageRouter)) {

+ 3 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/PlanMapper.xml

@@ -21,6 +21,8 @@
         <result column="plan_type" property="planType" />
         <result column="start_date" property="startDate" />
         <result column="end_date" property="endDate" />
+        <result column="plan_total_wages" property="planTotalWages" />
+        <result column="progress" property="progress" />
         <result column="task_name" property="taskName" />
         <result column="task_type_id" property="taskTypeId" />
         <result column="task_type_name" property="taskTypeName" />
@@ -38,7 +40,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, product_scheduling_num, product_id, product_name, project_code, company_id, steel_stamp_number_start, steel_stamp_number_end, num, main_process, station_id, station_name, foreman_id, foreman_name, plan_type, start_date, end_date, task_name, task_type_id, task_type_name, check_type, task_change_notice_num, plan_man_num, plan_work_hour, money_of_job, describtion, version_number, create_time, create_id, status
+        id, product_scheduling_num, product_id, product_name, project_code, company_id, steel_stamp_number_start, steel_stamp_number_end, num, main_process, station_id, station_name, foreman_id, foreman_name, plan_type, start_date, end_date, plan_total_wages, progress, task_name, task_type_id, task_type_name, check_type, task_change_notice_num, plan_man_num, plan_work_hour, money_of_job, describtion, version_number, create_time, create_id, status
     </sql>
 
 </mapper>

+ 8 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/chooseSomeone.vue

@@ -219,6 +219,14 @@ export default {
       console.log(this.treeVal)
       console.log(this.$refs.tree.getCheckedNodes())
       let arr = this.$refs.tree.getCheckedNodes()
+      arr = arr.filter(item => {
+        return !item.children
+      })
+      console.log(arr)
+      if(arr.length <= 0) {
+        this.$toast('请选择人员');
+        return
+      }
       let newArr = arr.map(item => {
         return {
           id: item.id,

+ 7 - 5
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/index/index.vue

@@ -90,11 +90,13 @@ export default {
         }
         console.log(this.user, '====>')
 
-        if(this.user.beDeptList && this.user.beDeptList.length > 0) {
-            localStorage.setItem('beDeptList', true)
-        } else {
-            localStorage.setItem('beDeptList', false)
-        }
+        setTimeout(() => {
+            if(this.user.beDeptList && this.user.beDeptList.length > 0) {
+                localStorage.setItem('beDeptList', true)
+            } else {
+                localStorage.setItem('beDeptList', false)
+            }
+        }, 1000)
     },
     components: {
         Footer

+ 11 - 11
fhKeeper/formulahousekeeper/timesheet-workshop/config/index.js

@@ -1,20 +1,20 @@
 var path = require('path')
 
 //  var ip = '192.168.2.12'
-//var ip = '47.101.180.183'
+// var ip = '47.101.180.183'
 // var ip = '47.100.37.243'
 // var ip = '192.168.10.2'
-// var ip = '192.168.2.12' 
+var ip = '192.168.2.12' 
 
-var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-for (var i in ifaces) {
-    for (var j in ifaces[i]) {
-        var val = ifaces[i][j]
-        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-            ip = val.address
-        }
-    }
-}
+// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+// for (var i in ifaces) {
+//     for (var j in ifaces[i]) {
+//         var val = ifaces[i][j]
+//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+//             ip = val.address
+//         }
+//     }
+// }
 // 1196735749
 module.exports = {
   build: {

+ 68 - 26
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/planComponent.vue

@@ -19,17 +19,18 @@
           </div>
         </div>
         <div class="OutSide_right">
-              <el-link type="primary" :underline="false" @click="(deptSetDialog = true), getPlanDeptSet()">{{ "部门设置"
-              }}</el-link>
-              <el-link type="primary" :underline="false" @click="addPlan()">{{
-                `新增${titleText}`
-              }}</el-link>
-              <el-upload ref="upload" action="#" :limit="1" :http-request="importData" :show-file-list="false">
-                <el-link type="primary" :underline="false">{{ "导入" }}</el-link>
-              </el-upload>
-              <el-link type="primary" :underline="false" @click="exportData()"
-                :download="this.planType == 0 ? '今日计划' : this.planType == 1 ? '明日计划' : this.planType == 2 ? '插单计划' : '' + '.xlsx'">{{ "导出"
-                }}</el-link>
+          <el-link type="primary" :underline="false" @click="(deptSetDialog = true), getPlanDeptSet()">{{ "部门设置"
+          }}</el-link>
+          <el-link type="primary" :underline="false" @click="addPlan()">{{
+            `新增${titleText}`
+          }}</el-link>
+          <el-upload ref="upload" action="#" :limit="1" :http-request="importData" :show-file-list="false">
+            <el-link type="primary" :underline="false">{{ "导入" }}</el-link>
+          </el-upload>
+          <el-link type="primary" :underline="false" @click="exportData()"
+            :download="this.planType == 0 ? '今日计划' : this.planType == 1 ? '明日计划' : this.planType == 2 ? '插单计划' : '' + '.xlsx'">{{
+              "导出"
+            }}</el-link>
         </div>
       </div>
     </div>
@@ -88,7 +89,7 @@
       <div class="planDialog">
         <el-form ref="todayPlanForm" :rules="todayPlanFormrules" :model="todayPlanForm" label-width="120px">
           <el-form-item label="排产工单号" style="width: 100%" prop="productSchedulingNum">
-            <el-input v-model="todayPlanForm.productSchedulingNum"></el-input>
+            <el-input v-model="todayPlanForm.productSchedulingNum" maxlength="50"></el-input>
           </el-form-item>
           <el-form-item label="产品名称" style="width: 100%" prop="productId">
             <el-select v-model="todayPlanForm.productId" placeholder="请选择" class="w100">
@@ -97,18 +98,21 @@
             </el-select>
           </el-form-item>
           <el-form-item label="项目代码" style="width: 100%" prop="projectCode">
-            <el-input v-model="todayPlanForm.projectCode"></el-input>
+            <el-input v-model="todayPlanForm.projectCode" maxlength="50"></el-input>
           </el-form-item>
           <el-form-item label="钢印号" style="width: 100%" prop="steelStampNumberStart">
-            <el-input class="w45" v-model="todayPlanForm.steelStampNumberStart"></el-input>
+            <el-input class="w45" v-model="todayPlanForm.steelStampNumberStart" maxlength="20"></el-input>
             {{ "-" }}
-            <el-input class="w45" v-model="todayPlanForm.steelStampNumberEnd"></el-input>
+            <el-input class="w45" v-model="todayPlanForm.steelStampNumberEnd" maxlength="20"></el-input>
+          </el-form-item>
+          <el-form-item label="进度" style="width: 100%" prop="progress">
+            <el-input v-model="todayPlanForm.progress" maxlength="20"></el-input>
           </el-form-item>
           <el-form-item label="数量" prop="num">
-            <el-input v-model="todayPlanForm.num"></el-input>
+            <el-input v-model="todayPlanForm.num" maxlength="10"></el-input>
           </el-form-item>
           <el-form-item label="主工序" prop="mainProcess">
-            <el-input v-model="todayPlanForm.mainProcess"></el-input>
+            <el-input v-model="todayPlanForm.mainProcess" maxlength="50"></el-input>
           </el-form-item>
           <el-form-item label="工位" prop="stationId">
             <!-- <el-select v-model="todayPlanForm.stationId" placeholder="请选择" class="w100" @change="getIncharger()">
@@ -125,7 +129,7 @@
             </el-cascader>
           </el-form-item>
           <el-form-item label="工长" prop="foremanName">
-            <el-input v-model="todayPlanForm.foremanName"></el-input>
+            <el-input v-model="todayPlanForm.foremanName" disabled></el-input>
           </el-form-item>
           <el-form-item label="开工时间" prop="startDate">
             <el-date-picker class="w100" v-model="todayPlanForm.startDate" type="date" placeholder="选择日期"
@@ -138,7 +142,7 @@
             </el-date-picker>
           </el-form-item>
           <el-form-item label="描述" style="width: 100%">
-            <el-input type="textarea" :rows="6" placeholder="请输入描述" v-model="todayPlanForm.describtion">
+            <el-input type="textarea" :rows="6" placeholder="请输入描述" v-model="todayPlanForm.describtion" maxlength="200">
             </el-input>
           </el-form-item>
         </el-form>
@@ -210,6 +214,7 @@ export default {
         steelStampNumberEnd: "",
         num: "",
         mainProcess: "",
+        progress: "",
         stationId: "",
         foremanId: "",
         foremanName: "",
@@ -311,7 +316,7 @@ export default {
         this.departmentIdArray,
         JSON.stringify(this.departmentIdArray)
       );
-      // return
+      return
       let arr = [];
       for (var i in this.departmentIdArray) {
         arr.push(
@@ -353,8 +358,15 @@ export default {
             for (var i in arr) {
               arr[i] = +arr[i];
             }
-            console.log(arr);
-            this.departmentIdArray = arr;
+            // console.log(arr)
+            // let newArr = []
+            // for(let j in arr) {
+            //   console.log(arr[j])
+            //   newArr.push(this.findAncestorsById(this.departmentList, arr[j]))
+            // }
+            // console.log(newArr)
+            // this.departmentIdArray = arr;
+            this.handleDepartmentIdArray(arr)
           } else {
             this.$message({
               message: res.msg,
@@ -370,6 +382,34 @@ export default {
         }
       );
     },
+    handleDepartmentIdArray(arr) {
+      console.log(arr, '过来的值')
+      let newArr = []
+      for (var i in arr) {
+        newArr.push(this.findAncestorsById(this.departmentList, arr[i]))
+      }
+      console.log(this.departmentIdArray, '===>')
+      this.departmentIdArray = newArr;
+    },
+    // 递归回显人员
+    findAncestorsById(tree, value, result = []) {
+      for (const node of tree) {
+        if (node.value === value) {
+          return [...result, node.value];
+        }
+
+        if (node.children) {
+          const temp = this.findAncestorsById(node.children, value, [
+            ...result,
+            node.value,
+          ]);
+          if (temp) {
+            return temp;
+          }
+        }
+      }
+      return null;
+    },
     getHasSetPlanDeptList() {
       this.http.post(
         "/plan/hasSetDeptDetail",
@@ -467,8 +507,8 @@ export default {
             this.todayPlanForm.stationId[
             this.todayPlanForm.stationId.length - 1
             ];
-          this.$delete(this.todayPlanForm, 'product')  
-          this.$delete(this.todayPlanForm, 'planProcedureTotals')  
+          this.$delete(this.todayPlanForm, 'product')
+          this.$delete(this.todayPlanForm, 'planProcedureTotals')
           this.http.post(
             "/plan/addOrUpdatePlan",
             {
@@ -484,7 +524,8 @@ export default {
                   type: "success",
                 });
                 this.editPlanDiaLog = false;
-                 this.getTableData(this.hasChooseDept);
+                this.todayPlanForm = [];
+                this.getTableData(this.hasChooseDept);
               } else {
                 this.$message({
                   message: res.msg,
@@ -627,7 +668,7 @@ export default {
           if (res.code == "ok") {
             var filePath = res.data;
             const a = document.createElement('a'); // 创建a标签
-            a.setAttribute('download',(this.planType == 0 ? '今日计划' : this.planType == 1 ? '明日计划' : this.planType == 2 ? '插单计划' : '')+ '.xlsx');// download属性
+            a.setAttribute('download', (this.planType == 0 ? '今日计划' : this.planType == 1 ? '明日计划' : this.planType == 2 ? '插单计划' : '') + '.xlsx');// download属性
             a.setAttribute('href', filePath);// href链接
             a.click(); //自执行点击事件
             a.remove();
@@ -762,6 +803,7 @@ export default {
     .OutSide_right {
       display: flex;
       align-items: center;
+
       .el-link {
         margin-right: 15px;
       }