Min před 1 rokem
rodič
revize
4c833f578e

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java

@@ -1,6 +1,7 @@
 package com.management.platform.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.ExpenseSheet;
 import com.management.platform.entity.User;
 import com.management.platform.entity.vo.SysRichFunction;
@@ -15,7 +16,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -122,5 +125,22 @@ public class ExpenseSheetController {
         sheet.setCompanyId(user.getCompanyId());
         return expenseSheetService.exportList(sheet, startDate, endDate);
     }
+
+    @RequestMapping("/editSendExpense")
+    public HttpRespMsg sendExpense(String expenseIds,Integer sendState){
+        HttpRespMsg msg=new HttpRespMsg();
+        String[] split = expenseIds.split(",");
+        List<String> asList = Arrays.asList(split);
+        List<Integer> ids = asList.stream().map(i -> Integer.parseInt(i)).collect(Collectors.toList());
+        ids.add(-1);
+        List<ExpenseSheet> expenseSheets = expenseSheetService.list(new QueryWrapper<ExpenseSheet>().in("id", ids));
+        expenseSheets.forEach(e->{
+            e.setSendState(sendState);
+        });
+        if(!expenseSheetService.updateBatchById(expenseSheets)){
+            msg.setError("验证失败");
+        }
+        return msg;
+    }
 }
 

+ 110 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetController.java

@@ -1,18 +1,30 @@
 package com.management.platform.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.ExportLeave;
 import com.management.platform.mapper.DepartmentMapper;
 import com.management.platform.mapper.SysFunctionMapper;
+import com.management.platform.mapper.TimeTypeMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.service.LeaveSheetService;
+import com.management.platform.util.DockWithMLD;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 
 /**
  * <p>
@@ -38,6 +50,8 @@ public class LeaveSheetController {
     DepartmentMapper departmentMapper;
     @Resource
     DepartmentService departmentService;
+    @Resource
+    TimeTypeMapper timeTypeMapper;
 
 
     /**
@@ -129,5 +143,101 @@ public class LeaveSheetController {
     public HttpRespMsg leaveDays (String startDate,String endDate){
         return leaveSheetService.leaveDays(startDate,endDate);
     }
+
+    @RequestMapping("/syncLeaveSheet")
+    public HttpRespMsg syncLeaveSheet(){
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        TimeType one = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId).eq("sync_fanwei", 1));
+        if(one==null){
+            msg.setError("暂无请假数据待同步");
+            return msg;
+        }
+        DockWithMLD dockWithMLD=new DockWithMLD();
+        JSONObject jsonObject=new JSONObject();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        //需要修改************************************************  日期
+        LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
+        String startDate = dtf.format(yesterday);
+        String endDate = dtf.format(yesterday.plusDays(30));
+        jsonObject.put("workDate",startDate);
+        jsonObject.put("gmtFinished",startDate);
+        String jsonString = jsonObject.toJSONString();
+        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
+        List<User> allUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+        List<LeaveSheet> leaveSheetList=new ArrayList<>();
+        List<LeaveSheet> oldLeaveSheetList = leaveSheetService.list(new QueryWrapper<LeaveSheet>().eq("company_id", companyId));
+        //Todo: 获取请假数据
+        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
+        if(leaveRecordMsg.getCode().equals("error")){
+            msg.setError("同步失败");
+            return msg;
+        }
+        List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
+        for (Map<String, Object> map : leaveRecordList) {
+            Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("rybh"))).findFirst();
+            if(!optional.isPresent()){
+                continue;
+            }
+            User user=optional.get();
+            /*System.out.println("泛微同步人员请假数据----"+user.getName());*/
+            if(companyId.equals(user.getCompanyId())){
+                LeaveSheet leaveSheet=new LeaveSheet();
+                leaveSheet.setCompanyId(user.getCompanyId());
+                leaveSheet.setStatus(0);
+                leaveSheet.setOwnerId(user.getId());
+                leaveSheet.setOwnerName(user.getName());
+                leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
+                leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
+                Integer timeType=null;
+                switch (String.valueOf(map.get("timeType"))){
+                    case "小时":timeType=1;
+                        break;
+                    case "天":timeType=0;
+                        break;
+                }
+                leaveSheet.setTimeType(timeType);
+                leaveSheet.setTimeDays(Float.parseFloat(((String) map.get("timeDays")).equals("")?"0.00":((String) map.get("timeDays"))));
+                if (timeType == 0){
+                    leaveSheet.setTimeHours(leaveSheet.getTimeDays()*allDay.getAllday());
+                }else {
+                    leaveSheet.setTimeHours(Float.parseFloat(((String) map.get("timeHours")).equals("")?"0.00":((String) map.get("timeHours"))));
+                }
+                Integer leaveType;
+                switch (String.valueOf(map.get("leaveType"))){
+                    case "事假":leaveType=0;
+                        break;
+                    case "病假":leaveType=1;
+                        break;
+                    case "年假":leaveType=2;
+                        break;
+                    case "产假":leaveType=3;
+                        break;
+                    case "婚假":leaveType=4;
+                        break;
+                    case "丧假":leaveType=5;
+                        break;
+                    case "调休":leaveType=6;
+                        break;
+                    case "陪产假":leaveType=7;
+                        break;
+                    default:leaveType=8;
+                }
+                leaveSheet.setLeaveType(leaveType);
+                leaveSheet.setProcinstId(String.valueOf(map.get("id")));
+                leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
+                Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate())&& ol.getOwnerId().equals(leaveSheet.getOwnerId())&&(ol.getProcinstId()!=null&& ol.getProcinstId().equals(leaveSheet.getProcinstId()))).findFirst();
+                if(first.isPresent()){
+                    leaveSheet.setId(first.get().getId());
+                }
+                leaveSheetList.add(leaveSheet);
+            }
+        }
+        if(leaveSheetList.size()>0){
+            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+        }
+        return msg;
+    }
 }
 

+ 13 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -1,26 +1,26 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.io.Serializable;
-import java.time.LocalDate;
-import java.util.List;
-
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-08-12
+ * @since 2023-11-07
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -106,6 +106,12 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("deny_reason")
     private String denyReason;
 
+    /**
+     * 发送状态 0-未发送 1-已发送
+     */
+    @TableField("send_state")
+    private Integer sendState;
+
     @TableField(exist = false)
     private List<ExpenseItem> invoiceList;
 

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

@@ -118,6 +118,7 @@ public class DockWithMLD {
             }
         }catch (Exception e){
             e.printStackTrace();
+            httpRespMsg.setError("请求失败");
             System.out.println("请求失败"+currentDate+" "+currentTime+"====error msg:"+e.getMessage());
         }
         return httpRespMsg;

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

@@ -17,11 +17,12 @@
         <result column="total_amount" property="totalAmount" />
         <result column="operator_id" property="operatorId" />
         <result column="deny_reason" property="denyReason" />
+        <result column="send_state" property="sendState" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount, operator_id, deny_reason
+        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount, operator_id, deny_reason, send_state
     </sql>
 
 </mapper>

+ 31 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -228,6 +228,10 @@
             <div>
               <el-button type="primary" v-if="!isAuditList" size="small" style="margin-left:20px" @click="exportLeave()">{{ $t('dao-chu-qing-jia-dan') }}</el-button>
             </div>
+            <!--美莱德同步请假数据按钮 -->
+            <div v-if="user.companyId==876" >
+              <el-button type="primary" v-if="!isAuditList" size="small" style="margin-left:20px" @click="syncLeave()" :loading="this.syncLeaveLoading">{{ '同步请假数据' }}</el-button>
+            </div>
           </div>
             <el-table v-loading="loading" :data="tableData" style="width: 100%" height="94%">
                 <el-table-column prop="ownerName" :label="$t('leavepeople')" min-width="120" fixed="left">
@@ -928,7 +932,8 @@ export default {
       curWorkflowList:{},
       denyReasonVisible : false,
       auditLogList:[],
-      selectedAuuid: ''
+      selectedAuuid: '',
+      syncLeaveLoading:false,
     };
   },
   computed: {},
@@ -1576,6 +1581,31 @@ export default {
       this.denyInfo = {id:item.id, reason:null};
     },
 
+    syncLeave(){
+      this.syncLeaveLoading=true
+      this.http.post('/leave-sheet/syncLeaveSheet',{},
+        res => {
+            if (res.code == "ok") {
+                this.$message({
+                        message: '操作成功',
+                        type: "success"
+                });
+            } else {
+                this.$message({
+                message: res.msg,
+                type: "error"
+                });
+            }
+            this.syncLeaveLoading=false
+        },
+        error => {
+            this.$message({
+                message: error,
+                type: "error"
+            });
+        });
+    },
+
     submitDeny(id) {
       //审核驳回
       this.http.post('/leave-sheet/deny', this.denyInfo,