From 75b7a414ef821a07426790cb79c37811ae2f07ac Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 27 一月 2026 10:42:20 +0800
Subject: [PATCH] 浪潮对接单点登录:mis管理系统配置修改

---
 src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml                    |   40 ++
 src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java                  |    2 
 src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java                      |  165 +++++++++
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java             |  236 ------------
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java      |    4 
 src/main/resources/mapper/sales/ReceiptPaymentMapper.xml                          |    5 
 pom.xml                                                                           |    2 
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   22 
 src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java      |   96 +++++
 src/main/resources/mapper/sales/SalesLedgerProductMapper.xml                      |    4 
 src/main/resources/mapper/staff/StaffOnJobMapper.xml                              |  103 ++++-
 src/main/java/com/ruoyi/procurementrecord/aspect/CustomStorageWarningAspect.java  |    2 
 src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java              |   24 +
 src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java         |    2 
 src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java                        |    6 
 src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java                     |   19 
 src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java     |    9 
 src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java       |   10 
 src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java                |   76 ---
 src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java    |    2 
 src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java            |    2 
 src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java                           |    3 
 src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java   |  169 +++++++++
 src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java           |   26 +
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java         |    6 
 src/main/resources/application-tide.yml                                           |    4 
 src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml                  |    2 
 27 files changed, 665 insertions(+), 376 deletions(-)

diff --git a/pom.xml b/pom.xml
index d529be0..338a2cc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>com.ruoyi</groupId>
-    <artifactId>ruoyi-zlglxt</artifactId>
+    <artifactId>ruoyi-mis</artifactId>
     <version>3.8.9</version>
     <packaging>jar</packaging>
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/aspect/CustomStorageWarningAspect.java b/src/main/java/com/ruoyi/procurementrecord/aspect/CustomStorageWarningAspect.java
index b015a3d..823aab0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/aspect/CustomStorageWarningAspect.java
+++ b/src/main/java/com/ruoyi/procurementrecord/aspect/CustomStorageWarningAspect.java
@@ -36,7 +36,7 @@
     @Autowired
     private CustomStorageWarningRecordService customStorageWarningRecordService;
 
-    @AfterReturning(value = "execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl.stockout(*)) || execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl.updateManagementByCustom(*))")
+//    @AfterReturning(value = "execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl.stockout(*)) || execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl.updateManagementByCustom(*))")
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     public void doAfterReturning(JoinPoint joinPoint) {
         Object[] args = joinPoint.getArgs();
diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
index e895ea6..53953da 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -71,7 +71,7 @@
     @Log(title = "浠樻鐧昏", businessType = BusinessType.INSERT)
     @PostMapping
     @Transactional(rollbackFor = Exception.class)
-    public AjaxResult add(@RequestBody List<PaymentRegistration>  paymentRegistration) {
+    public AjaxResult add(@RequestBody PaymentRegistration  paymentRegistration) {
         return toAjax(paymentRegistrationService.insertPaymentRegistration(paymentRegistration));
     }
 
diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
index baefa12..17af432 100644
--- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -23,6 +23,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.parameters.P;
 import org.springframework.transaction.annotation.Transactional;
@@ -130,11 +131,9 @@
     @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.INSERT)
     @PostMapping("/addOrUpdateRegistration")
     @Transactional(rollbackFor = Exception.class)
-    public AjaxResult addOrUpdateRegistration(@RequestBody List<TicketRegistrationDto> ticketRegistrationDto) throws IOException {
-        if(CollectionUtils.isEmpty(ticketRegistrationDto)) return AjaxResult.error("璇烽�夋嫨瑕佷繚瀛樼殑璁板綍");
-        for (TicketRegistrationDto ticketRegistrationDto1 : ticketRegistrationDto) {
-            ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto1);
-        }
+    public AjaxResult addOrUpdateRegistration(@RequestBody TicketRegistrationDto ticketRegistrationDto) throws IOException {
+        if(ObjectUtils.isEmpty(ticketRegistrationDto)) return AjaxResult.error("璇烽�夋嫨瑕佷繚瀛樼殑璁板綍");
+        ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto);
         return toAjax(1);
     }
 
diff --git a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
index 88052fa..714a23f 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
@@ -41,7 +41,7 @@
      * @param paymentRegistration 浠樻鐧昏
      * @return 缁撴灉
      */
-    public int insertPaymentRegistration(List<PaymentRegistration>  paymentRegistration);
+    public int insertPaymentRegistration(PaymentRegistration  paymentRegistration);
 
     /**
      * 淇敼浠樻鐧昏
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
index 78985c2..df9a4df 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -99,13 +99,12 @@
     /**
      * 鏂板浠樻鐧昏
      *
-     * @param paymentRegistrationList 浠樻鐧昏
+     * @param paymentRegistration 浠樻鐧昏
      * @return 缁撴灉
      */
     @Override
-    public int insertPaymentRegistration(List<PaymentRegistration> paymentRegistrationList) {
+    public int insertPaymentRegistration(PaymentRegistration paymentRegistration) {
         LoginUser userId = SecurityUtils.getLoginUser();
-        for (PaymentRegistration paymentRegistration : paymentRegistrationList) {
             PaymentRegistration byId = paymentRegistration;
             if (!ObjectUtils.isEmpty(paymentRegistration.getId())){
                 paymentRegistration = this.getById(paymentRegistration.getId());
@@ -113,18 +112,18 @@
             PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(paymentRegistration.getPurchaseLedgerId());
             if(null==purchaseLedger) throw new RuntimeException("鏈壘鍒伴噰璐崟");
             // 宸插洖娆鹃噾棰�
-            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(paymentRegistration.getSalesLedgerProductId());
-            if(null==salesLedgerProduct) throw new RuntimeException("鏈壘鍒伴噰璐崟浜у搧");
-            if (salesLedgerProduct.getPendingTicketsTotal().compareTo(paymentRegistration.getCurrentPaymentAmount())<0){
-                throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
-            }
+//            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(paymentRegistration.getSalesLedgerProductId());
+//            if(null==salesLedgerProduct) throw new RuntimeException("鏈壘鍒伴噰璐崟浜у搧");
+//            if (salesLedgerProduct.getPendingTicketsTotal().compareTo(paymentRegistration.getCurrentPaymentAmount())<0){
+//                throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
+//            }
             paymentRegistration.setCreateTime(DateUtils.getNowDate());
             paymentRegistration.setUpdateTime(DateUtils.getNowDate());
             paymentRegistration.setRegistrantId(userId.getUserId());
-            salesLedgerProduct.setTicketsTotal(salesLedgerProduct.getTicketsTotal().add(paymentRegistration.getCurrentPaymentAmount()));
-            salesLedgerProduct.setPendingTicketsTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getTicketsTotal()));
+//            salesLedgerProduct.setTicketsTotal(salesLedgerProduct.getTicketsTotal().add(paymentRegistration.getCurrentPaymentAmount()));
+//            salesLedgerProduct.setPendingTicketsTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getTicketsTotal()));
             paymentRegistrationMapper.insert(paymentRegistration);
-            salesLedgerProductMapper.updateById(salesLedgerProduct);
+//            salesLedgerProductMapper.updateById(salesLedgerProduct);
             // 2. 澶勭悊璐︽埛鏀嚭
             AccountExpense accountExpense = new AccountExpense();
             accountExpense.setExpenseDate(purchaseLedger.getEntryDate());
@@ -138,7 +137,6 @@
             accountExpense.setInputTime(new Date());
             accountExpense.setInputUser(userId.getNickName());
             accountExpenseService.save(accountExpense);
-        }
         return 1;
 
     }
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 3c6c2f6..be161e0 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -182,7 +182,7 @@
         if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) {
             purchaseLedger.setTenantId(loginUser.getTenantId());
         }
-        purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : "");
+        purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : purchaseLedgerDto.getSalesContractNo());
         purchaseLedger.setSalesLedgerId(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getId() : -1);
         purchaseLedger.setSupplierName(supplierManage.getSupplierName());
         purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
@@ -204,7 +204,7 @@
         if (productList != null) {
             for (SalesLedgerProduct saleProduct : productList) {
                 //鏄惁鎺ㄩ�佽川妫�锛屽鏋渢rue灏辨坊鍔�
-                if (saleProduct.getIsChecked()) {
+                if (Objects.nonNull(saleProduct.getIsChecked()) && saleProduct.getIsChecked()) {
                     addQualityInspect(purchaseLedger, saleProduct);
                 }
             }
diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
index 5606148..fb62c2d 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.sales.dto.SalesLedgerDto;
 import com.ruoyi.sales.service.InvoiceRegistrationService;
 import io.jsonwebtoken.lang.Collections;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -30,12 +31,9 @@
     @PostMapping("/save")
     @Log(title = "寮�绁ㄧ櫥璁�", businessType = com.ruoyi.framework.aspectj.lang.enums.BusinessType.INSERT)
     @Transactional(rollbackFor = Exception.class)
-    public AjaxResult invoiceRegistrationSave(@RequestBody List<SalesLedgerDto> salesLedgerDto) {
-        if(Collections.isEmpty(salesLedgerDto)) return AjaxResult.error("璇烽�夋嫨瑕佷繚瀛樼殑璁板綍");
-        salesLedgerDto.forEach(item ->{
-            invoiceRegistrationService.invoiceRegistrationSave(item);
-        });
-
+    public AjaxResult invoiceRegistrationSave(@RequestBody SalesLedgerDto salesLedgerDto) {
+        if(ObjectUtils.isEmpty(salesLedgerDto)) return AjaxResult.error("璇烽�夋嫨瑕佷繚瀛樼殑璁板綍");
+        invoiceRegistrationService.invoiceRegistrationSave(salesLedgerDto);
         return AjaxResult.success();
     }
 
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index aa10b54..a52e782 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -42,7 +42,7 @@
      * @return
      */
     @PostMapping("/saveOrUpdate")
-    public AjaxResult receiptPaymentSaveOrUpdate (@RequestBody List<ReceiptPayment> receiptPayment) {
+    public AjaxResult receiptPaymentSaveOrUpdate (@RequestBody ReceiptPayment receiptPayment) {
         receiptPaymentService.receiptPaymentSaveOrUpdate(receiptPayment);
         return AjaxResult.success();
     }
diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
index c638ebb..ccfd7fc 100644
--- a/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
@@ -53,5 +53,8 @@
     @ApiModelProperty(value = "閿�鍞悎鍚孖D")
     private Integer salesLedgerId;
 
+    @ApiModelProperty(value = "鍏宠仈sales_ledger_product涓婚敭")
+    private Integer salesLedgerProductId;
+
     private String paymentMethod;
 }
diff --git a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
index dbe8971..d837673 100644
--- a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
+++ b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -19,7 +19,7 @@
      * @param receiptPayment
      * @return
      */
-    int receiptPaymentSaveOrUpdate(List<ReceiptPayment> receiptPayment);
+    int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment);
 
     /**
      * 鍥炴鐧昏淇敼
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
index 7f9b4cd..d132239 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -53,13 +53,12 @@
 
     /**
      * 鍥炴鐧昏鏂板
-     * @param receiptPaymentList
+     * @param receiptPayment
      * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int receiptPaymentSaveOrUpdate(List<ReceiptPayment> receiptPaymentList) {
-        for (ReceiptPayment receiptPayment : receiptPaymentList) {
+    public int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment) {
             ReceiptPayment byId = receiptPayment;
             if (!ObjectUtils.isEmpty(receiptPayment.getId())){
                 receiptPayment = this.getById(receiptPayment.getId());
@@ -107,7 +106,6 @@
                 }
             }
             salesLedgerProductMapper.updateById(salesLedgerProduct);
-        }
         return 1;
     }
 
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java b/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
new file mode 100644
index 0000000..7e37a91
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
@@ -0,0 +1,96 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.pojo.SupplierManage;
+import com.ruoyi.basic.service.ISupplierService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鏂板鍏ヨ亴/绂昏亴
+ */
+@RestController
+@RequestMapping("/staff/staffJoinLeaveRecord")
+public class StaffJoinLeaveRecordController {
+
+    @Resource
+    private IStaffJoinLeaveRecordService staffJoinLeaveRecordService;
+
+    /**
+     * 鏂板鍏ヨ亴/绂昏亴
+     * @param staffJoinLeaveRecord
+     * @return
+     */
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        return AjaxResult.success(staffJoinLeaveRecordService.add(staffJoinLeaveRecord));
+    }
+
+    /**
+     * 鍒犻櫎鍏ヨ亴/绂昏亴
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/del")
+    public AjaxResult delStaffJoinLeaveRecord(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return AjaxResult.success(staffJoinLeaveRecordService.delStaffJoinLeaveRecord(ids));
+    }
+
+    /**
+     * 鍏ヨ亴/绂昏亴璇︽儏
+     * @param id
+     * @return
+     */
+    @GetMapping("/{id}")
+    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Integer id) {
+        return AjaxResult.success(staffJoinLeaveRecordService.getById(id));
+    }
+
+    /**
+     * 鍏ヨ亴/绂昏亴淇敼
+     * @param staffJoinLeaveRecord
+     * @return
+     */
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        return AjaxResult.success(staffJoinLeaveRecordService.updateStaffJoinLeaveRecord(staffJoinLeaveRecord));
+    }
+
+    /**
+     * 鍏ヨ亴/绂昏亴鍒嗛〉鏌ヨ
+     * @param page
+     * @param staffJoinLeaveRecord
+     * @return
+     */
+    @GetMapping("/listPage")
+    public AjaxResult staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        return AjaxResult.success(staffJoinLeaveRecordService.staffJoinLeaveRecordListPage(page, staffJoinLeaveRecord));
+    }
+
+    /**
+     * 鍏ヨ亴/绂昏亴瀵煎嚭
+     * @param response
+     * @param staffJoinLeaveRecord
+     */
+    @PostMapping("/export")
+    public void staffJoinLeaveRecordExport(HttpServletResponse response,StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        staffJoinLeaveRecordService.staffJoinLeaveRecordExport(response, staffJoinLeaveRecord);
+    }
+
+
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 8e3d6b6..7d73759 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -4,19 +4,16 @@
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.staff.dto.StaffOnJobDto;
-import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
 import com.ruoyi.staff.service.IStaffOnJobService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -24,7 +21,6 @@
  */
 @RestController
 @RequestMapping("/staff/staffOnJob")
-@Api(tags = "鍛樺伐鍙拌处")
 public class StaffOnJobController {
 
     @Resource
@@ -47,64 +43,19 @@
      * @return
      */
     @GetMapping("/list")
-    public AjaxResult staffOnJobList(StaffOnJob staffOnJob) {
-        return AjaxResult.success(staffOnJobService.staffOnJobList(staffOnJob));
-    }
-
-    /**
-     * 鏂板鍏ヨ亴
-     * @param staffOnJob
-     * @return
-     */
-    @PostMapping("")
-    public AjaxResult add(@RequestBody StaffOnJobDto staffOnJob) {
-        return AjaxResult.success(staffOnJobService.add(staffOnJob));
-    }
-
-    /**
-     * 鏇存柊鍏ヨ亴淇℃伅
-     * @param staffOnJobDto
-     * @return
-     */
-    @PutMapping("/{id}")
-    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StaffOnJobDto staffOnJobDto) {
-        return AjaxResult.success(staffOnJobService.update(id, staffOnJobDto));
-    }
-
-    /**
-     * 鍒犻櫎鍏ヨ亴
-     * @param ids
-     * @return
-     */
-    @DeleteMapping("/del")
-    public AjaxResult delStaffOnJobs(@RequestBody List<Integer> ids) {
-        if(CollectionUtils.isEmpty(ids)){
-            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
-        }
-        return AjaxResult.success(staffOnJobService.delStaffOnJobs(ids));
+    public AjaxResult staffOnJobList() {
+        return AjaxResult.success(staffOnJobService.staffOnJobList());
     }
 
     /**
      * 鍦ㄨ亴鍛樺伐璇︽儏
-     * @param id
+     * @param staffNo
      * @return
      */
-    @GetMapping("/{id}")
-    public AjaxResult staffOnJobDetail(@PathVariable("id") Long id) {
-        return AjaxResult.success(staffOnJobService.staffOnJobDetail(id));
+    @GetMapping("/staffNo")
+    public AjaxResult staffOnJobDetail(String staffNo) {
+        return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo));
     }
-
-    /**
-     * 缁鍚堝悓
-     * @param id
-     * @param staffContract
-     * @return
-     */
-    @PostMapping("/renewContract/{id}")
-    public AjaxResult renewContract(@PathVariable("id") Long id, @RequestBody StaffContract staffContract) {
-        return AjaxResult.success(staffOnJobService.renewContract(id, staffContract));
-    }
-
     /**
      * 鍦ㄨ亴鍛樺伐瀵煎叆
      */
@@ -126,17 +77,6 @@
     @PostMapping("/export")
     public void staffOnJobExport(HttpServletResponse response,StaffOnJob staffOnJob) {
         staffOnJobService.staffOnJobExport(response, staffOnJob);
-    }
-
-    /**
-     * word妯℃澘鍚堝悓鍦ㄨ亴鍛樺伐瀵煎嚭
-     * @param response
-     * @param staffOnJob
-     */
-    @PostMapping("/exportCopy")
-    @ApiOperation("word妯℃澘鍚堝悓鍦ㄨ亴鍛樺伐瀵煎嚭")
-    public AjaxResult exportCopy(HttpServletResponse response,@RequestBody StaffOnJob staffOnJob) throws Exception{
-       return AjaxResult.success(staffOnJobService.exportCopy(response, staffOnJob));
     }
 
 
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java
new file mode 100644
index 0000000..3cca995
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java
@@ -0,0 +1,24 @@
+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.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.excel.SupplierManageExcelDto;
+import com.ruoyi.basic.pojo.SupplierManage;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface StaffJoinLeaveRecordMapper extends BaseMapper<StaffJoinLeaveRecord> {
+
+    IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, @Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    List<StaffJoinLeaveRecord> staffJoinLeaveRecordList(@Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    List<StaffJoinLeaveRecord> staffOnJobList();
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
index 1451487..199cce6 100644
--- a/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
@@ -3,7 +3,7 @@
 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.StaffOnJobDto;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -13,7 +13,7 @@
 @Mapper
 public interface StaffOnJobMapper extends BaseMapper<StaffOnJob> {
 
-    IPage<StaffOnJobDto> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob);
+    IPage<StaffOnJob> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob);
 
-    List<StaffOnJobDto> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
+    List<StaffOnJob> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
 }
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
new file mode 100644
index 0000000..8de0b69
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
@@ -0,0 +1,165 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 浜哄憳绠$悊--鏂板鍏ヨ亴/绂昏亴
+ * staff_join_leave_record
+ */
+@TableName(value = "staff_join_leave_record")
+@Data
+public class StaffJoinLeaveRecord extends DateQueryDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐘舵��(0:绂昏亴;1:鍏ヨ亴)
+     */
+    @NotBlank(message = "鍛樺伐鐘舵�佷笉鑳戒负绌�!!!!!!!!")
+    @Excel(name = "鐘舵��",readConverterExp = "0=绂昏亴,1=鍏ヨ亴")
+    private Integer staffState;
+
+    /**
+     * 璇曠敤鏈燂紙鏈堬級
+     */
+    @Excel(name = "璇曠敤鏈燂紙鏈堬級")
+    private Integer probationPeriod;
+
+
+
+    /**
+     * 鍛樺伐缂栧彿
+     */
+    @Excel(name = "鍛樺伐缂栧彿")
+    private String staffNo;
+
+    /**
+     * 鍛樺伐濮撳悕
+     */
+    @Excel(name = "鍛樺伐濮撳悕")
+    private String staffName;
+
+    /**
+     * 鎬у埆
+     */
+    @Excel(name = "鎬у埆")
+    private String sex;
+
+    /**
+     * 绫嶈疮
+     */
+    @Excel(name = "绫嶈疮")
+    private String nativePlace;
+
+    /**
+     * 宀椾綅
+     */
+    @Excel(name = "宀椾綅")
+    private String postJob;
+
+    /**
+     * 瀹跺涵浣忓潃
+     */
+    @Excel(name = "瀹跺涵浣忓潃")
+    private String adress;
+
+    /**
+     * 绗竴瀛﹀巻
+     */
+    @Excel(name = "绗竴瀛﹀巻")
+    private String firstStudy;
+
+    /**
+     * 涓撲笟
+     */
+    @Excel(name = "涓撲笟")
+    private String profession;
+
+    /**
+     * 韬唤璇佸彿鐮�
+     */
+    @Excel(name = "韬唤璇佸彿鐮�")
+    private String identityCard;
+
+    /**
+     * 骞撮緞
+     */
+    @Excel(name = "骞撮緞")
+    private String age;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @Excel(name = "鑱旂郴鐢佃瘽")
+    private String phone;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉")
+    private String emergencyContact;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉鐢佃瘽
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉鐢佃瘽")
+    private String emergencyContactPhone;
+
+    /**
+     * 鍚堝悓骞撮檺
+     */
+    @Excel(name = "鍚堝悓骞撮檺")
+    private String contractTerm;
+
+    /**
+     * 鍚堝悓寮�濮嬫棩鏈�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍚堝悓寮�濮嬫棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date contractStartTime;
+
+    /**
+     * 鍚堝悓缁撴潫鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍚堝悓缁撴潫鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date contractEndTime;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java b/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
new file mode 100644
index 0000000..56875b3
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
@@ -0,0 +1,26 @@
+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.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.pojo.SupplierManage;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface IStaffJoinLeaveRecordService extends IService<StaffJoinLeaveRecord> {
+
+
+    IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    int add(StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    int delStaffJoinLeaveRecord(List<Integer> ids);
+
+    int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
index 1e60ffe..2cef9f2 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -3,8 +3,7 @@
 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.StaffOnJobDto;
-import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -14,23 +13,13 @@
 public interface IStaffOnJobService extends IService<StaffOnJob> {
 
 
-    IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob);
+    IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob);
 
-     StaffOnJobDto staffOnJobDetail(Long id);
-
-    int add(StaffOnJobDto staffOnJob);
-
-    int update(Long id, StaffOnJobDto staffOnJob);
-
-    int delStaffOnJobs(List<Integer> ids);
-
-    int renewContract(Long id, StaffContract staffContract);
+    List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo);
 
     void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob);
 
-    List<StaffOnJobDto> staffOnJobList(StaffOnJob staffOnJob);
+    List<StaffJoinLeaveRecord> staffOnJobList();
 
     Boolean importData(MultipartFile file);
-
-    String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception;
 }
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
new file mode 100644
index 0000000..f82ecc8
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -0,0 +1,169 @@
+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.mapper.StaffJoinLeaveRecordMapper;
+import com.ruoyi.staff.mapper.StaffOnJobMapper;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+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;
+
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class StaffJoinLeaveRecordServiceImpl extends ServiceImpl<StaffJoinLeaveRecordMapper, StaffJoinLeaveRecord>  implements IStaffJoinLeaveRecordService {
+
+    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
+    private StaffOnJobMapper staffOnJobMapper;
+
+
+    //鍒嗛〉鏌ヨ
+    @Override
+    public IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        return staffJoinLeaveRecordMapper.staffJoinLeaveRecordListPage(page,staffJoinLeaveRecord);
+    }
+
+    //瀵煎嚭
+    @Override
+    public void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        List<StaffJoinLeaveRecord> staffJoinLeaveRecords =staffJoinLeaveRecordMapper.staffJoinLeaveRecordList(staffJoinLeaveRecord);
+        ExcelUtil<StaffJoinLeaveRecord> util = new ExcelUtil<StaffJoinLeaveRecord>(StaffJoinLeaveRecord.class);
+        util.exportExcel(response, staffJoinLeaveRecords, staffJoinLeaveRecord.getStaffState()==0?"鍛樺伐绂昏亴":"鍛樺伐鍏ヨ亴"+"瀵煎嚭");
+    }
+
+    //鏂板鍏ヨ亴/绂昏亴
+    @Override
+    public int add(StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
+        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
+        if (staffJoinLeaveRecord.getStaffState()==1){
+            /*鍏ヨ亴*/
+            //(鏍规嵁鍛樺伐缂栧彿鍒ゆ柇鏄惁宸茬粡鏂板鍒板湪鑱岃〃閲岄潰,濡傛灉宸茬粡鏈夊氨鏇存柊,娌℃湁灏辨柊澧�)
+            if (staffOnJobs.size()>0){
+                StaffOnJob staffOnJob = staffOnJobs.get(0);
+                //鍏堟瘮杈冨埌鏈熸棩鏈�,杩欓噷閫夌敤鍒版湡鏃ユ湡鏈�涔呯殑
+                if (staffJoinLeaveRecord.getContractEndTime().compareTo(staffOnJob.getContractExpireTime())>0) {
+                    BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
+                    staffOnJobMapper.updateById(staffOnJob);
+                }
+            }else {
+                StaffOnJob staffOnJob = new StaffOnJob();
+                BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
+                staffOnJob.setContractExpireTime(staffJoinLeaveRecord.getContractEndTime());
+                staffOnJobMapper.insert(staffOnJob);
+            }
+        }else {
+            /*绂昏亴*/
+            //鏍规嵁鍛樺伐缂栧彿鎵惧埌瀵瑰簲鐨勬暟鎹皢鐘舵�佸彉鏇�
+            if (staffOnJobs.size()>0){
+                StaffOnJob staffOnJob = staffOnJobs.get(0);
+                staffOnJob.setStaffState(staffJoinLeaveRecord.getStaffState());
+                staffOnJobMapper.updateById(staffOnJob);
+            }else {
+                throw new BaseException("娌℃湁鎵惧埌"+staffJoinLeaveRecord.getStaffNo()+"缂栧彿鐨勫憳宸�,鏃犳硶鏂板绂昏亴!!!");
+            }
+        }
+        return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord);
+    }
+
+
+    //鍒犻櫎鍏ヨ亴/绂昏亴
+    @Override
+    public int delStaffJoinLeaveRecord(List<Integer> ids) {
+        List<StaffJoinLeaveRecord> staffJoinLeaveRecords = staffJoinLeaveRecordMapper.selectBatchIds(ids);
+        for (StaffJoinLeaveRecord staffJoinLeaveRecord : staffJoinLeaveRecords) {
+            //鍏堝垽鏂槸鍏ヨ亴杩樻槸绂昏亴
+            if (staffJoinLeaveRecord.getStaffState()==1){
+                /*鍏ヨ亴*/
+                //濡傛灉鏄叆鑱�,闇�瑕佸厛鏍规嵁鍛樺伐缂栧彿鍒ゆ柇璇ュ憳宸ユ槸鍚﹁繕鏈夊叾浠栧叆鑱屼俊鎭�
+                List<StaffJoinLeaveRecord> joinLeaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
+                        .eq(StaffJoinLeaveRecord::getStaffState, 1)
+                        .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo())
+                        .ne(StaffJoinLeaveRecord::getId, staffJoinLeaveRecord.getId()));
+                if (joinLeaveRecords.size()>0){
+                    //杩橀渶瑕佸垽鏂鍛樺伐鏄惁鏈夌鑱屼俊鎭�
+                    List<StaffJoinLeaveRecord> leaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
+                            .eq(StaffJoinLeaveRecord::getStaffState, 0)
+                            .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
+                    // 濡傛灉鏈夐偅鍦ㄨ亴琛ㄤ粎鍋氭洿鏂颁笉鍒犻櫎,濡傛灉娌℃湁鍏朵粬鍏ヨ亴淇℃伅,閭d箞鍦ㄨ亴琛ㄩ渶鍚屾鍒犻櫎
+                    if (leaveRecords.size()>0){
+                        //濡傛灉鏈夌鑱屼俊鎭�,鍒ゆ柇绂昏亴鏁伴噺鍜屽叆鑱屾暟閲忔瘯绔�,濡傛灉鍏ヨ亴鏁伴噺澶т簬绂昏亴
+                        if (joinLeaveRecords.size()>leaveRecords.size()){
+                            //璇ュ憳宸ュ氨杩樻槸鍦ㄨ亴
+                            //鍏堟瘮杈冨埌鏈熸棩鏈�,杩欓噷閫夌敤鍒版湡鏃ユ湡鏈�涔呯殑
+                            Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime));
+                            staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
+                                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
+                                    .set(StaffOnJob::getContractTerm, max.get().getContractTerm())
+                                    .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime()));
+                        }else {
+                            //璇ュ憳宸ュ睘浜庣鑱�
+                            staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
+                                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
+                                    .set(StaffOnJob::getStaffState, 0));
+                        }
+                    }else {
+                        //濡傛灉娌℃湁绂昏亴淇℃伅閭d箞灏辨瘮杈冨埌鏈熸棩鏈�,杩欓噷閫夌敤鍒版湡鏃ユ湡鏈�涔呯殑
+                        Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime));
+                        staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
+                                .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
+                                .set(StaffOnJob::getContractTerm, max.get().getContractTerm())
+                                .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime()));
+                    }
+                }else {
+                    staffOnJobMapper.delete(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo,staffJoinLeaveRecord.getStaffNo()));
+                }
+            }else {
+                /*绂昏亴*/
+                //鍏堟煡璇㈠湪鑱岃〃鏄惁鏈夎繖涓�,濡傛灉鏈�,灏卞皢璇ュ憳宸ョ殑鐘舵�佸彉鏇翠负鍦ㄨ亴
+                List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
+                if (staffOnJobs.size()>0){
+                    StaffOnJob staffOnJob = staffOnJobs.get(0);
+                    staffOnJob.setStaffState(1);
+                    staffOnJobMapper.updateById(staffOnJob);
+                }else {
+                    throw new BaseException("娌℃湁鎵惧埌"+staffJoinLeaveRecord.getStaffNo()+"缂栧彿鐨勫憳宸�,璇锋鏌ユ槸鍚︽湁鑴忔暟鎹�!!!");
+                }
+            }
+            staffJoinLeaveRecordMapper.deleteById(staffJoinLeaveRecord);
+        }
+        return 0;
+    }
+
+    //淇敼鍏ヨ亴/绂昏亴
+    @Override
+    public int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord) {
+        String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
+        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
+        if (staffJoinLeaveRecord.getStaffState()==1){
+            /*鍏ヨ亴*/
+            StaffOnJob job = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery()
+                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())).get(0);
+            //濡傛灉鏇存敼鐨勫悎鍚屽埌鏈熸椂闂存洿涔呭垯鏇存柊,濡傛灉娌℃湁灏变笉鐢ㄦ洿鏂�
+            if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) {
+                BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties);
+                staffOnJobMapper.updateById(job);
+            }
+        }else {
+            /*绂昏亴*/
+            //绂昏亴鐨勭紪杈戜笉浼氬奖鍝嶅湪鑱岃〃
+        }
+        return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
+    }
+}
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 6fb0cd0..9fc8c43 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -5,35 +5,20 @@
 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.dto.WordDateDto;
-import com.ruoyi.project.system.domain.SysPost;
-import com.ruoyi.project.system.mapper.SysPostMapper;
-import com.ruoyi.staff.dto.StaffOnJobDto;
-import com.ruoyi.staff.mapper.StaffContractMapper;
-import com.ruoyi.staff.mapper.StaffLeaveMapper;
+import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
 import com.ruoyi.staff.mapper.StaffOnJobMapper;
-import com.ruoyi.staff.pojo.StaffContract;
-import com.ruoyi.staff.pojo.StaffLeave;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
 import com.ruoyi.staff.service.IStaffOnJobService;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
 import lombok.AllArgsConstructor;
-
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.ZoneId;
-import java.util.*;
+import java.util.List;
 
 @AllArgsConstructor
 @Service
@@ -42,143 +27,33 @@
 
     private StaffOnJobMapper staffOnJobMapper;
 
-    private SysPostMapper sysPostMapper;
-
-    private StaffContractMapper staffContractMapper;
-    private StaffLeaveMapper staffLeaveMapper;
-
+    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
 
     //鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
     @Override
-    public IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob) {
+    public IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob) {
         return staffOnJobMapper.staffOnJobListPage(page,staffOnJob);
-    }
-
-    //鏂板鍏ヨ亴
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int add(StaffOnJobDto staffOnJobPrams) {
-        String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
-        // 鍒ゆ柇缂栧彿鏄惁瀛樺湪
-        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
-        if (staffOnJobs.size()>0){
-            throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
-        }
-        // 鍒涘缓鍏ヨ亴鏁版嵁
-        staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
-        staffOnJobMapper.insert(staffOnJobPrams);
-
-        // 鍒涘缓鍚堝悓璁板綍
-        StaffContract staffContract = new StaffContract();
-        staffContract.setStaffOnJobId(staffOnJobPrams.getId());
-        staffContract.setContractTerm(staffOnJobPrams.getContractTerm());
-        staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime());
-        staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime());
-        return staffContractMapper.insert(staffContract);
-    }
-
-    //鏇存柊鍏ヨ亴淇℃伅
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int update(Long id, StaffOnJobDto staffOnJobParams) {
-        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
-        StaffOnJob job = staffOnJobMapper.selectById(id);
-        if (job == null){
-            throw new BaseException("缂栧彿涓�"+staffOnJobParams.getStaffNo()+"鐨勫憳宸ヤ笉瀛樺湪,鏃犳硶鏇存柊!!!");
-        }
-
-        String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
-
-        // 鑾峰彇鏈�鏂板悎鍚屾暟鎹紝骞朵笖鏇存柊
-        StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
-                .eq(StaffContract::getStaffOnJobId, id)
-                .last("limit 1")
-                .orderByDesc(StaffContract::getId));
-        if (contract != null){
-            BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties);
-            staffContractMapper.updateById(contract);
-        }
-
-        // 鏇存柊鍛樺伐鏁版嵁
-        BeanUtils.copyProperties(staffOnJobParams,job,ignoreProperties);
-        job.setContractExpireTime(staffOnJobParams.getContractEndTime());
-        return staffOnJobMapper.updateById(job);
-    }
-
-    //鍒犻櫎鍏ヨ亴
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int delStaffOnJobs(List<Integer> ids) {
-        // 鍒犻櫎鍏ヨ亴鏁版嵁
-        staffOnJobMapper.deleteBatchIds(ids);
-        // 鍒犻櫎绂昏亴鏁版嵁
-        staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
-        // 鍒犻櫎鍚堝悓鏁版嵁
-        return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
-    }
-
-    // 缁鍚堝悓
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int renewContract(Long id, StaffContract staffContract) {
-        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
-        StaffOnJob job = staffOnJobMapper.selectById(id);
-        if (job == null){
-            throw new BaseException("璇ュ憳宸ヤ笉瀛樺湪,鏃犳硶鏇存柊!!!");
-        }
-
-        // 澧炲姞鍚堝悓
-        StaffContract newStaffContract = new StaffContract();
-        newStaffContract.setStaffOnJobId(id);
-        newStaffContract.setContractTerm(staffContract.getContractTerm());
-        newStaffContract.setContractStartTime(staffContract.getContractStartTime());
-        newStaffContract.setContractEndTime(staffContract.getContractEndTime());
-        staffContractMapper.insert(newStaffContract);
-
-        // 鏇存柊鍛樺伐鍚堝悓杩囨湡鏃堕棿
-        job.setContractExpireTime(staffContract.getContractEndTime());
-        staffOnJobMapper.updateById(job);
-        return 0;
     }
 
     //鍦ㄨ亴鍛樺伐璇︽儏
     @Override
-    public StaffOnJobDto staffOnJobDetail(Long id) {
-        StaffOnJob staffOnJob  = staffOnJobMapper.selectById(id);
-        if (staffOnJob == null) {
-            throw new IllegalArgumentException("璇ュ憳宸ヤ笉瀛樺湪");
-        }
-
-        StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
-        BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
-        // 鏌ヨ宀椾綅鍚嶇О
-        SysPost post = sysPostMapper.selectPostById((long) staffOnJob.getSysPostId());
-        staffOnJobDto.setPostName(post.getPostName());
-
-        // 鏌ヨ鍚堝悓淇℃伅
-        StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
-                .eq(StaffContract::getStaffOnJobId, staffOnJob.getId())
-                .last("limit 1")
-                .orderByDesc(StaffContract::getId));
-        if (contract != null){
-            staffOnJobDto.setContractTerm(contract.getContractTerm());
-            staffOnJobDto.setContractStartTime(contract.getContractStartTime());
-            staffOnJobDto.setContractEndTime(contract.getContractEndTime());
-        }
-        return staffOnJobDto;
+    public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) {
+        return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
+                .eq(StaffJoinLeaveRecord::getStaffState,1)
+                .eq(StaffJoinLeaveRecord::getStaffNo,staffNo));
     }
 
     //鍦ㄨ亴鍛樺伐瀵煎嚭
     @Override
     public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) {
-        List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
-        ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class);
+        List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
+        ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class);
         util.exportExcel(response, staffOnJobs, "鍦ㄨ亴鍛樺伐鍙拌处瀵煎嚭");
     }
 
     @Override
-    public List<StaffOnJobDto> staffOnJobList(StaffOnJob staffOnJob) {
-        return staffOnJobMapper.staffOnJobList(staffOnJob);
+    public List<StaffJoinLeaveRecord> staffOnJobList() {
+        return staffJoinLeaveRecordMapper.staffOnJobList();
     }
 
     @Override
@@ -192,87 +67,6 @@
             return false;
         }
     }
-
-
-    @Override
-    public String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception {
-        String url = "/javaWork/product-inventory-management/file/prod/" + staffOnJob.getStaffName() + "-鍔冲姩鍚堝悓涔�.docx";
-        Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
-        // 璁剧疆妯℃澘鏂囦欢鎵�鍦ㄧ洰褰曪紙缁濆璺緞锛屼緥濡傦細/templates/锛�
-        cfg.setClassForTemplateLoading(StaffOnJobServiceImpl.class, "/static");
-        cfg.setDefaultEncoding("UTF-8");
-        //2.瀹氫箟闇�瑕佸~鍏呯殑鍙橀噷
-        // 鈶� 鏋勯�犲憳宸ヤ俊鎭紙瀹為檯椤圭洰涓彲浠庢暟鎹簱/Excel璇诲彇锛�
-        WordDateDto staff = new WordDateDto();
-        BeanUtils.copyProperties(staffOnJob, staff);
-        // 閫氳繃鍚堝悓骞撮檺锛屽悎鍚屽埌鏈熸棩鏈熻绠楀悎鍚屽紑濮嬫棩鏈燂紝鍦ㄨ幏鍙栧紑濮嬫棩鏈燂紝缁撴潫鏃ユ湡鐨勫勾鏈堟棩鏁板瓧
-        // 鍚堝悓鍒版湡鏃ユ湡 - 鍚堝悓骞撮檺锛圖ate绫诲瀷锛�
-        // 1. 灏咲ate杞崲涓篒nstant锛堟椂闂存埑锛�
-        Instant instant = staff.getContractExpireTime().toInstant();
-
-        // 涔熷彲浠ユ寚瀹氬叿浣撴椂鍖猴紝渚嬪Asia/Shanghai锛�
-        LocalDate localDate = instant.atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();  // 鍚堝悓缁撴潫鏃堕棿
-        LocalDate localDate1 = localDate.minusYears(Integer.parseInt(staff.getContractTerm()));// 鍚堝悓寮�濮嬫椂闂�
-
-        // 绛捐鏃ユ湡杞崲lcoaldate
-        LocalDate localDate2 = staff.getSignDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
-
-        // 璇曠敤鏃ユ湡杞崲lcoaldate
-        LocalDate localDate3 = staff.getTrialStartDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
-        LocalDate localDate4 = staff.getTrialEndDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
-
-        staff.setQyear(localDate2.getYear() + "");
-        staff.setQmoth(localDate2.getMonthValue() + "");
-        staff.setQday(localDate2.getDayOfMonth() + "");
-        if(staff.getDateSelect().equals("A")){
-            staff.setSyear(localDate1.getYear() + "");
-            staff.setSmoth(localDate1.getMonthValue() + "");
-            staff.setSday(localDate1.getDayOfMonth() + "");
-            staff.setEyear(localDate.getDayOfMonth() + "");
-            staff.setEmoth(localDate.getDayOfMonth() + "");
-            staff.setEday(localDate.getDayOfMonth() + "");
-
-            staff.setStyear(localDate3.getYear() + "");
-            staff.setStmoth(localDate3.getMonthValue() + "");
-            staff.setStday(localDate3.getDayOfMonth() + "");
-            staff.setSeyear(localDate4.getYear() + "");
-            staff.setSemoth(localDate4.getMonthValue() + "");
-            staff.setSeday(localDate4.getDayOfMonth() + "");
-        }else if (staff.getDateSelect().equals("B")){
-
-            staff.setBsyear(localDate1.getYear() + "");
-            staff.setBsmoth(localDate1.getMonthValue() + "");
-            staff.setBsday(localDate1.getDayOfMonth() + "");
-
-            staff.setBstyear(localDate3.getYear() + "");
-            staff.setBstmoth(localDate3.getMonthValue() + "");
-            staff.setBstday(localDate3.getDayOfMonth() + "");
-            staff.setBseyear(localDate4.getYear() + "");
-            staff.setBsemoth(localDate4.getMonthValue() + "");
-            staff.setBseday(localDate4.getDayOfMonth() + "");
-        }else if (staff.getDateSelect().equals("C")){
-            staff.setCsyear(localDate1.getYear() + "");
-            staff.setCsmoth(localDate1.getMonthValue() + "");
-            staff.setCsday(localDate1.getDayOfMonth() + "");
-        }
-
-        Map<String,Object> data = new HashMap<>();
-        data.put("item",staff);
-        //3.鍔犺浇XML 妯℃澘
-        Template template = cfg.getTemplate("鍔冲姩鍚堝悓涔�.xml");
-        //4.鐢熸垚濉厖鍚庣殑 XML 鍐呭
-        StringWriter out = new StringWriter();
-        template.process(data, out);
-        String filledXml = out.toString();
-        //5.灏哫ML鍐呭鍐欏叆浜や欢骞舵敼涓�.docx 鏍煎紡
-        File outputFile = new File(url);
-        try(FileOutputStream fos = new FileOutputStream(outputFile);
-            OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) {
-            osw.write(filledXml);
-        }
-        return url;
-    }
-
 
 
 }
diff --git a/src/main/resources/application-tide.yml b/src/main/resources/application-tide.yml
index 6f5c316..fd78d35 100644
--- a/src/main/resources/application-tide.yml
+++ b/src/main/resources/application-tide.yml
@@ -20,7 +20,7 @@
 # 寮�鍙戠幆澧冮厤缃�
 server:
   # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
-  port: 8034
+  port: 7003
   servlet:
     # 搴旂敤鐨勮闂矾寰�
     context-path: /
@@ -65,7 +65,7 @@
     druid:
       # 涓诲簱鏁版嵁婧�
       master:
-        url: jdbc:mysql://10.136.12.71:3306/zlglxt-ruoyi-xinlan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://10.136.12.71:3306/mis_ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: zttZTT123!
       # 浠庡簱鏁版嵁婧�
diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
index b8defca..dccbe88 100644
--- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
+++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -128,7 +128,7 @@
     <select id="getPaymentRecordList" resultType="com.ruoyi.purchase.dto.PaymentHistoryRecordVo">
         SELECT * FROM(
              SELECT
-                 T1.issue_date AS happenTime,
+                 T1.enter_date AS happenTime,
                  IFNULL(T1.invoice_amount,0) AS invoiceAmount,
                  '1' AS type,
                  0 AS currentPaymentAmount
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index 91fd041..a8e7826 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -73,6 +73,7 @@
         T1.update_user,
         T1.tenant_id,
         T2.tax_rate,
+        T2.sales_ledger_id,
         T3.sales_contract_no,
         T3.customer_contract_no,
         T3.customer_name,
@@ -133,7 +134,9 @@
             T1.invoice_total ,
             T2.tax_rate,
             T3.customer_name,
-            T3.sales_contract_no
+            T3.sales_contract_no,
+            T2.sales_ledger_id,
+            T2.sales_ledger_product_id
         FROM
             invoice_ledger T1
                 LEFT JOIN
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 2579a18..41a372f 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -40,7 +40,7 @@
         sl.sales_contract_no,
         sl.customer_contract_no
         from sales_ledger_product slp
-        left join sales_ledger sl on slp.sales_ledger_id = sl.id
+        inner join sales_ledger sl on slp.sales_ledger_id = sl.id
         <where>
             slp.type = 1
             <if test="req.salesContractNo != null and req.salesContractNo != '' ">
@@ -72,7 +72,7 @@
         sl.sales_contract_no,
         sl.purchase_contract_number
         from sales_ledger_product slp
-        left join purchase_ledger sl on slp.sales_ledger_id = sl.id
+        inner join purchase_ledger sl on slp.sales_ledger_id = sl.id
         <where>
             slp.type = 2
             <if test="req.purchaseContractNumber != null and req.purchaseContractNumber != '' ">
diff --git a/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
new file mode 100644
index 0000000..d720d37
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
@@ -0,0 +1,40 @@
+<?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.StaffJoinLeaveRecordMapper">
+    <select id="staffJoinLeaveRecordListPage" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
+        SELECT
+        *
+        FROM staff_join_leave_record
+        where
+        staff_state = #{staffJoinLeaveRecord.staffState}
+        <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' ">
+            AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%')
+        </if>
+        <if test="staffJoinLeaveRecord.entryDateStart != null and staffJoinLeaveRecord.entryDateStart != '' ">
+            and contract_start_time like concat('%',#{staffJoinLeaveRecord.entryDateStart},'%')
+        </if>
+        <if test="staffJoinLeaveRecord.entryDateEnd != null and staffJoinLeaveRecord.entryDateEnd != '' ">
+            and contract_end_time like concat('%',#{staffJoinLeaveRecord.entryDateEnd},'%')
+        </if>
+        order by create_time desc
+    </select>
+    <select id="staffJoinLeaveRecordList" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
+        SELECT
+        *
+        FROM staff_join_leave_record
+        where
+        staff_state = #{staffJoinLeaveRecord.staffState}
+        <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' ">
+            AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%')
+        </if>
+    </select>
+    <select id="staffOnJobList" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
+        select *
+        from (select *,
+                     ROW_NUMBER() over (PARTITION BY staff_no ORDER BY create_time DESC ) as rn
+              from staff_join_leave_record
+              where staff_state = 1) t
+        where rn = 1
+
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/staff/StaffOnJobMapper.xml b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
index a43bb37..c0ddadb 100644
--- a/src/main/resources/mapper/staff/StaffOnJobMapper.xml
+++ b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -3,40 +3,87 @@
 <mapper namespace="com.ruoyi.staff.mapper.StaffOnJobMapper">
     <select id="staffOnJobListPage" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
         SELECT
-        staff_on_job.*,
-        sp.post_name as postName,
-        sd.dept_name as deptName
+            id,
+            staff_state,
+            staff_no,
+            staff_name,
+            sex,
+            native_place,
+            adress,
+            first_study,
+            profession,
+            identity_card,
+            age,
+            phone,
+            emergency_contact,
+            emergency_contact_phone,
+            contract_term,
+            contract_expire_time,
+            trial_end_date,
+            trial_start_date,
+            salary_select,
+            pro_salary,
+            date_select,
+            remark,
+            sign_date,
+            create_time,
+            create_user,
+            update_time,
+            update_user,
+            tenant_id,
+            sys_post_id,
+            sys_dept_id
         FROM staff_on_job
-        LEFT JOIN
-        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
-        LEFT JOIN
-        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
-        where 1=1
-        <if test="staffOnJob.staffState != null">
-        AND staff_state = #{staffOnJob.staffState}
-        </if>
-        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
-            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
-        </if>
-        <if test="staffOnJob.entryDateStart != null and staffOnJob.entryDateStart != '' ">
-            AND contract_expire_time &gt;= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d')
-        </if>
-        <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
-            AND  contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
-        </if>
+        <where>
+            <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
+                AND staff_state = #{staffOnJob.staffState}
+            </if>
+            <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
+                AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
+            </if>
+            <if test="staffOnJob.entryDateStart != null and staffOnJob.entryDateStart != '' ">
+                AND contract_expire_time &gt;= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d')
+            </if>
+            <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
+                AND contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
+            </if>
+        </where>
     </select>
     <select id="staffOnJobList" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
         SELECT
-        staff_on_job.*,
-        sp.post_name as postName,
-        sd.dept_name as deptName
+        id,
+        staff_state,
+        staff_no,
+        staff_name,
+        sex,
+        native_place,
+        adress,
+        first_study,
+        profession,
+        identity_card,
+        age,
+        phone,
+        emergency_contact,
+        emergency_contact_phone,
+        contract_term,
+        contract_expire_time,
+        trial_end_date,
+        trial_start_date,
+        salary_select,
+        pro_salary,
+        date_select,
+        remark,
+        sign_date,
+        create_time,
+        create_user,
+        update_time,
+        update_user,
+        tenant_id,
+        sys_post_id,
+        sys_dept_id
         FROM staff_on_job
-        LEFT JOIN
-        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
-        LEFT JOIN
-        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
         where 1=1
-        <if test="staffOnJob.staffState != null">
+        <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
             AND staff_state = #{staffOnJob.staffState}
         </if>
         <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">

--
Gitblit v1.9.3