From 2154a6777af36576b2da5e969fb5116ce7ccda3e Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 19 一月 2026 14:21:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java       |    4 
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java              |    2 
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java       |   12 
 src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java                         |   11 +
 src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java |   63 +++++-
 src/main/java/com/ruoyi/staff/pojo/StaffLeave.java                                 |    6 
 src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java          |    3 
 src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java                 |    4 
 src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java                               |   92 ++++++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java      |    1 
 src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java                 |   78 ++++++++
 /dev/null                                                                          |   28 ---
 src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java              |   91 ++++++++++
 src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java    |   10 -
 src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java                         |   28 +++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java         |    2 
 src/main/resources/mapper/staff/StaffLeaveMapper.xml                               |   58 ++++++
 src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java    |    3 
 src/main/java/com/ruoyi/staff/service/StaffLeaveService.java                       |   27 +++
 19 files changed, 455 insertions(+), 68 deletions(-)

diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
index 6c53634..956c8bc 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -83,8 +83,7 @@
 
     @PostMapping("/saveMeetingApplication")
     public R saveMeetApplication(@RequestBody MeetApplication meetApplication) {
-        meetingService.saveMeetApplication(meetApplication);
-        return R.ok();
+       return meetingService.saveMeetApplication(meetApplication);
     }
 
     @PostMapping("/applicationList")
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
index 7b3c906..d3b0d89 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
@@ -14,6 +14,7 @@
 import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
 import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
 import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+import com.ruoyi.framework.web.domain.R;
 
 
 import java.util.List;
@@ -42,7 +43,7 @@
 
 // ************鐢宠浼氳************
 
-    void saveMeetApplication(MeetApplication meetApplication);
+    R<Void> saveMeetApplication(MeetApplication meetApplication);
 
 // ************鐢宠瀹℃壒************
 
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
index b57a4f1..bef5926 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -26,6 +26,7 @@
 import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
 import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.project.system.service.ISysNoticeService;
@@ -125,42 +126,72 @@
     }
 
     @Override
-    public void saveMeetApplication(MeetApplication meetApplication) {
+    public R<Void> saveMeetApplication(MeetApplication meetApplication) {
         meetApplication.setApplicant(SecurityUtils.getUsername());
+
+        //  鏃堕棿鍐茬獊鏍¢獙
+        LambdaQueryWrapper<MeetApplication> meetApplicationLambdaQueryWrapper = Wrappers.<MeetApplication>lambdaQuery()
+                .eq(MeetApplication::getRoomId, meetApplication.getRoomId())
+                // 濡傛灉id涓嶄负null鍒欐帓闄よ嚜宸�
+                .ne(meetApplication.getId() != null, MeetApplication::getId, meetApplication.getId())
+                // 鏃堕棿鍐茬獊鍒ゆ柇
+                .lt(MeetApplication::getStartTime, meetApplication.getEndTime())
+                .gt(MeetApplication::getEndTime, meetApplication.getStartTime());
+
+        Long count = meetApplicationMapper.selectCount(meetApplicationLambdaQueryWrapper);
+        if (count > 0) {
+            return R.fail("鎵�閫変細璁鍦ㄨ鏃堕棿娈靛凡鏈夊叾浠栦細璁紝璇疯皟鏁存椂闂存垨鏇存崲浼氳瀹�");
+        }
+
         if (meetApplication.getId() != null) {
+            // 鏇存柊
             meetApplicationMapper.updateById(meetApplication);
         } else {
+            // 鏂板
             meetApplicationMapper.insert(meetApplication);
         }
-        if (ObjectUtils.isNotNull(meetApplication.getPublishStatus()) && meetApplication.getPublishStatus() == 1){
+
+        /*浼氳鍙戝竷鐨勬秷鎭�氱煡*/
+        //鍙備細浜哄憳id(浜哄憳鍙拌处鍜岀敤鎴疯〃閫氳繃浜哄憳缂栧彿鍜岀敤鎴峰悕绉�(鐧诲綍璐﹀彿)鍋氬尮閰�)
+        if (Integer.valueOf(1).equals(meetApplication.getPublishStatus())) {
             MeetApplication application = meetApplicationMapper.selectById(meetApplication.getId());
-            /*浼氳鍙戝竷鐨勬秷鎭�氱煡*/
-            //鍙備細浜哄憳id(浜哄憳鍙拌处鍜岀敤鎴疯〃閫氳繃浜哄憳缂栧彿鍜岀敤鎴峰悕绉�(鐧诲綍璐﹀彿)鍋氬尮閰�)
-            String cleanStr = application.getParticipants().trim()
+
+            String cleanStr = application.getParticipants()
                     .replaceAll("^\\[|\\]$", "")
                     .trim();
-            List<Long> ids = Arrays.stream(cleanStr.split(","))
+
+            List<Long> userIds = Arrays.stream(cleanStr.split(","))
                     .map(String::trim)
                     .filter(s -> !s.isEmpty())
-                    .map(s -> {
-                        StaffJoinLeaveRecord staffJoinLeaveRecord = staffJoinLeaveRecordMapper.selectById(Long.valueOf(s));
-                        List<SysUser> users = userMapper.selectList(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserName,staffJoinLeaveRecord.getStaffNo()));
-                        if (users.size() > 0){
-                            return users.get(0).getUserId();
-                        }else return null;
+                    .map(Long::valueOf)
+                    .map(staffId -> {
+                        StaffJoinLeaveRecord record = staffJoinLeaveRecordMapper.selectById(staffId);
+                        if (record == null) {
+                            return null;
+                        }
+                        return userMapper.selectOne(
+                                Wrappers.<SysUser>lambdaQuery()
+                                        .eq(SysUser::getUserName, record.getStaffNo())
+                        );
                     })
                     .filter(Objects::nonNull)
+                    .map(SysUser::getUserId)
                     .collect(Collectors.toList());
-            if (ids.size() > 0) {
-                sysNoticeService.simpleNoticeByUser("浼氳閫氱煡",
+
+            if (!userIds.isEmpty()) {
+                sysNoticeService.simpleNoticeByUser(
+                        "浼氳閫氱煡",
                         "浼氳涓婚锛�" + application.getTitle() + "\n" +
                                 "浼氳鏃堕棿锛�" + application.getStartTime() + "-" + application.getEndTime() + "\n" +
                                 "鍙戣捣浜猴細" + application.getApplicant(),
-                        ids,
+                        userIds,
                         application.getTenantId(),
-                        "");
+                        ""
+                );
             }
         }
+
+        return R.ok();
     }
 
     @Override
diff --git a/src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java b/src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java
deleted file mode 100644
index c59e56c..0000000
--- a/src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.ruoyi.common.enums;
-
-import lombok.AllArgsConstructor;
-
-/**
- * 闄勪欢璁板綍绫诲瀷鏋氫妇
- *
- */
-@AllArgsConstructor
-public enum StaffJoinLeaveRecordDimissionReason {
-    StaffJoinLeaveRecordDimissionReasonSalary("salary","钖祫寰呴亣"),
-    StaffJoinLeaveRecordDimissionReasonCareerDevelopment("career_development","鑱屼笟鍙戝睍"),
-    StaffJoinLeaveRecordDimissionReasonWorkEnvironment("work_environment","宸ヤ綔鐜"),
-    StaffJoinLeaveRecordDimissionReasonPersonalReason("personal_reason","涓汉鍘熷洜"),
-    StaffJoinLeaveRecordDimissionReasonOther("other","鍏朵粬鍘熷洜");
-
-
-    private final String code;
-    private final String info;
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getInfo() {
-        return info;
-    }
-}
diff --git a/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java b/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
new file mode 100644
index 0000000..44d3098
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
@@ -0,0 +1,28 @@
+package com.ruoyi.common.enums;
+
+import lombok.AllArgsConstructor;
+
+/**
+ * 闄勪欢璁板綍绫诲瀷鏋氫妇
+ *
+ */
+@AllArgsConstructor
+public enum StaffLeaveReason {
+    StaffLeaveReasonSalary("salary","钖祫寰呴亣"),
+    StaffLeaveReasonCareerDevelopment("career_development","鑱屼笟鍙戝睍"),
+    StaffLeaveReasonWorkEnvironment("work_environment","宸ヤ綔鐜"),
+    StaffLeaveReasonPersonalReason("personal_reason","涓汉鍘熷洜"),
+    StaffLeaveReasonOther("other","鍏朵粬鍘熷洜");
+
+
+    private final String code;
+    private final String info;
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 075815c..93119de 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -65,6 +65,7 @@
             productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
             productProcessRouteItem.setProductOrderId(productOrder.getId());
             productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
+            productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
             int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
             if (insert > 0) {
                 // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
@@ -90,7 +91,8 @@
                 ProductWorkOrder productWorkOrder = new ProductWorkOrder();
                 productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                 productWorkOrder.setProductOrderId(productOrder.getId());
-                productWorkOrder.setPlanQuantity(productOrder.getQuantity());
+                ProductOrder order = productOrderMapper.selectById(productOrder);
+                productWorkOrder.setPlanQuantity(order.getQuantity());
                 productWorkOrder.setWorkOrderNo(workOrderNoStr);
                 productWorkOrder.setStatus(1);
                 productWorkOrderMapper.insert(productWorkOrder);
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index cac741c..58e9359 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -198,10 +198,12 @@
             handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
         }
         //鏂板鍘熸潗鏂欐楠�
-        for (SalesLedgerProduct saleProduct : productList) {
-            //鏄惁鎺ㄩ�佽川妫�锛屽鏋渢rue灏辨坊鍔�
-            if (saleProduct.getIsChecked()) {
-                addQualityInspect(purchaseLedger, saleProduct);
+        if (productList != null) {
+            for (SalesLedgerProduct saleProduct : productList) {
+                //鏄惁鎺ㄩ�佽川妫�锛屽鏋渢rue灏辨坊鍔�
+                if (saleProduct.getIsChecked()) {
+                    addQualityInspect(purchaseLedger, saleProduct);
+                }
             }
         }
         // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
@@ -217,7 +219,7 @@
         qualityInspect.setInspectType(0);
         qualityInspect.setSupplier(purchaseLedger.getSupplierName());
         qualityInspect.setPurchaseLedgerId(purchaseLedger.getId());
-        qualityInspect.setProductId(saleProduct.getId());
+        qualityInspect.setProductId(saleProduct.getProductId());
         qualityInspect.setProductName(saleProduct.getProductCategory());
         qualityInspect.setModel(saleProduct.getSpecificationModel());
         qualityInspect.setProductModelId(saleProduct.getProductModelId());
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 22001e6..17ecdc6 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -88,7 +88,7 @@
             BigDecimal stockQuantity = stockUtils.getStockQuantity(item.getProductModelId()).get("stockQuantity");
             if(stockQuantity != null) {
 //                ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0);
-                if (item.getQuantity().compareTo(stockQuantity) >= 0 && item.getApproveStatus() == 0) {
+                if (item.getQuantity().compareTo(stockQuantity) <= 0 && item.getApproveStatus() == 0) {
                     item.setApproveStatus(1);
                     salesLedgerProductService.addOrUpdateSalesLedgerProduct(item);
                 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index e805784..acab688 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -291,6 +291,7 @@
                 productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
                 productProcessRouteItem.setProductOrderId(productOrder.getId());
                 productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
+                productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
                 int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
                 if (insert > 0) {
                     // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java b/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
new file mode 100644
index 0000000..f4a0830
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
@@ -0,0 +1,78 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.dto.StaffLeaveDto;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.service.StaffLeaveService;
+import io.swagger.annotations.Api;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鍛樺伐绂昏亴
+ */
+@RestController
+@RequestMapping("/staff/staffLeave")
+@Api(tags = "鍛樺伐绂昏亴")
+public class StaffLeaveController {
+    @Resource
+    private StaffLeaveService staffLeaveService;
+    /**
+     * 鏂板绂昏亴鍒嗛〉鏌ヨ
+     * @param page
+     * @param staffLeaveDto
+     * @return
+     */
+    @GetMapping("/listPage")
+    public AjaxResult staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto) {
+        return AjaxResult.success(staffLeaveService.staffLeaveListPage(page, staffLeaveDto));
+    }
+
+    /**
+     * 鏂板绂昏亴
+     * @param staffLeaveDto
+     * @return
+     */
+    @PostMapping("")
+    public AjaxResult add(@RequestBody StaffLeaveDto staffLeaveDto) {
+        return AjaxResult.success(staffLeaveService.add(staffLeaveDto));
+    }
+
+    /**
+     * 鏇存柊绂昏亴淇℃伅
+     * @param id
+     * @param staffLeaveDto
+     * @return
+     */
+    @PutMapping("/{id}")
+    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StaffLeaveDto staffLeaveDto) {
+        return AjaxResult.success(staffLeaveService.update(id, staffLeaveDto));
+    }
+
+    /**
+     * 鍒犻櫎鍏ヨ亴
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/del")
+    public AjaxResult del(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return AjaxResult.success(staffLeaveService.del(ids));
+    }
+
+    /**
+     * 绂昏亴瀵煎嚭
+     * @param staffLeaveDto
+     */
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto) {
+        staffLeaveService.export(response, staffLeaveDto);
+    }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 55a93b2..f996ad1 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -25,7 +25,7 @@
  */
 @RestController
 @RequestMapping("/staff/staffOnJob")
-@Api(tags = "鍛樺伐鍙拌处/鍚堝悓绠$悊")
+@Api(tags = "鍛樺伐鍙拌处")
 public class StaffOnJobController {
 
     @Resource
@@ -91,7 +91,7 @@
      * @return
      */
     @GetMapping("/{id}")
-    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Long id) {
+    public AjaxResult staffOnJobDetail(@PathVariable("id") Long id) {
         return AjaxResult.success(staffOnJobService.staffOnJobDetail(id));
     }
 
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java b/src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java
new file mode 100644
index 0000000..d615c7f
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java
@@ -0,0 +1,92 @@
+package com.ruoyi.staff.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.staff.pojo.StaffLeave;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StaffLeaveDto extends StaffLeave {
+    @Excel(name = "鐘舵��", readConverterExp = "0=绂昏亴,1=鍦ㄨ亴", sort = 1)
+    private Integer staffState;
+
+    /**
+     * 鍛樺伐缂栧彿
+     */
+    @Excel(name = "鍛樺伐缂栧彿", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING, sort = 2)
+    private String staffNo;
+
+    /**
+     * 鍛樺伐濮撳悕
+     */
+    @Excel(name = "鍛樺伐濮撳悕", sort = 3)
+    private String staffName;
+
+    /**
+     * 鎬у埆
+     */
+    @Excel(name = "鎬у埆", sort = 4)
+    private String sex;
+
+    /**
+     * 绫嶈疮
+     */
+    @Excel(name = "绫嶈疮", sort = 5)
+    private String nativePlace;
+
+    /**
+     * 瀹跺涵浣忓潃
+     */
+    @Excel(name = "瀹跺涵浣忓潃", sort = 6)
+    private String adress;
+
+    /**
+     * 宀椾綅
+     */
+    @Excel(name = "宀椾綅",sort = 7)
+    private String postName;
+
+    /**
+     * 绗竴瀛﹀巻
+     */
+    @Excel(name = "绗竴瀛﹀巻", sort = 8)
+    private String firstStudy;
+
+    /**
+     * 涓撲笟
+     */
+    @Excel(name = "涓撲笟", sort = 9)
+    private String profession;
+
+    /**
+     * 韬唤璇佸彿鐮�
+     */
+    @Excel(name = "韬唤璇佸彿鐮�", sort = 10)
+    private String identityCard;
+
+    /**
+     * 骞撮緞
+     */
+    @Excel(name = "骞撮緞", sort = 11)
+    private String age;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @Excel(name = "鑱旂郴鐢佃瘽", sort = 12)
+    private String phone;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉", sort = 13)
+    private String emergencyContact;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉鐢佃瘽
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉鐢佃瘽", sort = 14)
+    private String emergencyContactPhone;
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
index d8fce17..e8d2854 100644
--- a/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
@@ -1,10 +1,21 @@
 package com.ruoyi.staff.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.staff.dto.StaffLeaveDto;
+import com.ruoyi.staff.dto.StaffOnJobDto;
 import com.ruoyi.staff.pojo.StaffLeave;
+import com.ruoyi.staff.pojo.StaffOnJob;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 @Mapper
 public interface StaffLeaveMapper extends BaseMapper<StaffLeave> {
+    IPage<StaffLeaveDto> staffLeaveListPage(Page page, @Param("c") StaffLeaveDto staffLeaveDto);
+
+    List<StaffLeaveDto> staffLeaveList(@Param("c") StaffLeaveDto staffLeaveDto);
 }
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java b/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
index 9965c6d..3f5532c 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
@@ -21,6 +21,12 @@
     @ApiModelProperty(value = "鍦ㄨ亴鍛樺伐ID")
     private Long staffOnJobId;
 
+    @ApiModelProperty(value = "绂昏亴鍘熷洜")
+    private String reason;
+
+    @ApiModelProperty(value = "绂昏亴澶囨敞")
+    private String remark;
+
     @ApiModelProperty(value = "绉熸埛ID")
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
diff --git a/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
index 67aede2..be27fdc 100644
--- a/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
+++ b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
@@ -1,7 +1,34 @@
 package com.ruoyi.staff.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.staff.dto.StaffLeaveDto;
+import com.ruoyi.staff.dto.StaffOnJobDto;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffLeave;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 public interface StaffLeaveService extends IService<StaffLeave> {
+    IPage<StaffLeaveDto> staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto);
+    /**
+     * 鏂板绂昏亴
+     * @param staffLeaveDto
+     * @return
+     */
+    int add(StaffLeaveDto staffLeaveDto);
+
+    /**
+     * 鏇存柊绂昏亴淇℃伅
+     * @param id
+     * @param staffLeaveDto
+     * @return
+     */
+    int update(Long id, StaffLeaveDto staffLeaveDto);
+
+    int del(List<Integer> ids);
+
+    void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto);
 }
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
index 78f94b2..0b2eba7 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -19,13 +19,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
-import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
-import java.util.function.Function;
 
-import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
 
 @Service
 @AllArgsConstructor
@@ -83,9 +79,6 @@
             }
             if (staffJoinLeaveRecord.getDimissionReason()==null){
                 throw new BaseException("绂昏亴鍘熷洜涓嶈兘涓虹┖!!!");
-            }
-            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
-                staffJoinLeaveRecord.setDimissionRemark("");
             }
         }
         return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord);
@@ -179,9 +172,6 @@
             //绂昏亴鐨勭紪杈戜笉浼氬奖鍝嶅湪鑱岃〃
             if (staffJoinLeaveRecord.getDimissionReason()==null){
                 throw new BaseException("绂昏亴鍘熷洜涓嶈兘涓虹┖!!!");
-            }
-            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
-                staffJoinLeaveRecord.setDimissionRemark("");
             }
         }
         return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
index 0fc3807..20ec7be 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -1,15 +1,106 @@
 package com.ruoyi.staff.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.staff.dto.StaffLeaveDto;
+import com.ruoyi.staff.dto.StaffOnJobDto;
 import com.ruoyi.staff.mapper.StaffLeaveMapper;
+import com.ruoyi.staff.mapper.StaffOnJobMapper;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.pojo.StaffOnJob;
 import com.ruoyi.staff.service.StaffLeaveService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.staff.pojo.StaffLeave;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+import static com.ruoyi.common.enums.StaffLeaveReason.StaffLeaveReasonOther;
 
 @AllArgsConstructor
 @Service
 public class StaffLeaveServiceImpl extends ServiceImpl<StaffLeaveMapper, StaffLeave> implements StaffLeaveService {
+    private StaffLeaveMapper staffLeaveMapper;
+
+    private StaffOnJobMapper staffOnJobMapper;
+
+    //鏂板绂昏亴鍒楄〃鍒嗛〉鏌ヨ
+    @Override
+    public IPage<StaffLeaveDto> staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto) {
+        return staffLeaveMapper.staffLeaveListPage(page,staffLeaveDto);
+    }
+
+    //鏂板绂昏亴
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(StaffLeaveDto staffLeaveDto) {
+        // 鏍¢獙鍦ㄨ亴鍛樺伐鏄惁瀛樺湪
+        StaffOnJob staffOnJob = staffOnJobMapper.selectById(staffLeaveDto.getStaffOnJobId());
+        if (staffOnJob == null) {
+            throw new IllegalArgumentException("鍛樺伐涓嶅瓨鍦�");
+        }
+
+        // 鏍¢獙鍛樺伐鏄惁绂昏亴
+        if (staffOnJob.getStaffState() == 0) {
+            throw new IllegalArgumentException("鍛樺伐宸茬鑱�");
+        }
+
+        // 鏂板绂昏亴璁板綍
+        StaffLeave staffLeave = new StaffLeave();
+        staffLeave.setStaffOnJobId(staffLeaveDto.getStaffOnJobId());
+        String reason = staffLeaveDto.getReason();
+        if (!StaffLeaveReasonOther.getCode().equals(reason)){
+            staffLeave.setRemark("");
+        }
+        staffLeaveMapper.insert(staffLeave);
+
+        // 鏇存柊绂昏亴鐘舵�佷负绂昏亴
+        staffOnJob.setStaffState(0);
+       return staffOnJobMapper.updateById(staffOnJob);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int update(Long id, StaffLeaveDto staffLeaveDto) {
+        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
+        StaffLeave leave = staffLeaveMapper.selectById(id);
+        if (leave == null){
+            throw new BaseException("璇ョ鑱岃褰曚笉瀛樺湪,鏃犳硶鏇存柊!!!");
+        }
+
+        String reason = staffLeaveDto.getReason();
+        leave.setReason(reason);
+        // 鏍¢獙绂昏亴鍘熷洜鏄惁涓哄叾浠栵紝濡傛灉鏄叾浠栵紝澶囨敞璧嬪��
+        if (StaffLeaveReasonOther.getCode().equals(reason)){
+            leave.setRemark(staffLeaveDto.getRemark());
+        } else {
+            leave.setRemark("");
+        }
+        return staffLeaveMapper.updateById(leave);
+    }
+
+    //鍒犻櫎绂昏亴
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int del(List<Integer> ids) {
+        // 鍒犻櫎绂昏亴鏁版嵁
+        return staffLeaveMapper.deleteBatchIds(ids);
+    }
+
+    //瀵煎嚭
+    @Override
+    public void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto) {
+        List<StaffLeaveDto> staffLeaves =staffLeaveMapper.staffLeaveList(staffLeaveDto);
+        ExcelUtil<StaffLeaveDto> util = new ExcelUtil<StaffLeaveDto>(StaffLeaveDto.class);
+        util.exportExcel(response, staffLeaves, "鍛樺伐绂昏亴瀵煎嚭");
+    }
 
 }
 
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 69e0638..3de1ca9 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -38,8 +38,6 @@
 import java.time.ZoneId;
 import java.util.*;
 
-import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
-
 @AllArgsConstructor
 @Service
 public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob>  implements IStaffOnJobService {
diff --git a/src/main/resources/mapper/staff/StaffLeaveMapper.xml b/src/main/resources/mapper/staff/StaffLeaveMapper.xml
new file mode 100644
index 0000000..1d43ecc
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffLeaveMapper.xml
@@ -0,0 +1,58 @@
+<?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.ruoyi.staff.mapper.StaffLeaveMapper">
+    <select id="staffLeaveListPage" resultType="com.ruoyi.staff.dto.StaffLeaveDto">
+        SELECT
+        staff_leave.*,
+        soj.staff_name as staffName,
+        soj.staff_state as staffState,
+        soj.staff_no as staffNo,
+        soj.sex as sex,
+        soj.native_place as nativePlace,
+        soj.adress as adress,
+        soj.first_study as firstStudy,
+        soj.profession as profession,
+        soj.identity_card as identityCard,
+        soj.age as age,
+        soj.phone as phone,
+        soj.emergency_contact as emergencyContact,
+        soj.emergency_contact_phone as emergencyContactPhone,
+        sp.post_name as postName
+        FROM staff_leave
+        LEFT JOIN
+        staff_on_job soj ON soj.id = staff_leave.staff_on_job_id
+        LEFT JOIN
+        sys_post sp ON sp.post_id = soj.sys_post_id
+        where 1=1
+        <if test="c.staffName != null and c.staffName != '' ">
+            AND soj.staff_name LIKE CONCAT('%',#{c.staffName},'%')
+        </if>
+    </select>
+    <select id="staffLeaveList" resultType="com.ruoyi.staff.dto.StaffLeaveDto">
+        SELECT
+        staff_leave.*,
+        soj.staff_name as staffName,
+        soj.staff_state as staffState,
+        soj.staff_no as staffNo,
+        soj.sex as sex,
+        soj.native_place as nativePlace,
+        soj.adress as adress,
+        soj.first_study as firstStudy,
+        soj.profession as profession,
+        soj.identity_card as identityCard,
+        soj.age as age,
+        soj.phone as phone,
+        soj.emergency_contact as emergencyContact,
+        soj.emergency_contact_phone as emergencyContactPhone,
+        sp.post_name as postName
+        FROM staff_leave
+        LEFT JOIN
+        staff_on_job soj ON soj.id = staff_leave.staff_on_job_id
+        LEFT JOIN
+        sys_post sp ON sp.post_id = soj.sys_post_id
+        where 1=1
+        <if test="c.staffName != null and c.staffName != '' ">
+            AND soj.staff_name LIKE CONCAT('%',#{c.staffName},'%')
+        </if>
+    </select>
+</mapper>

--
Gitblit v1.9.3