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> 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(); 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)); } 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); } 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); /** * ä¿®æ¹ä»æ¬¾ç»è®° 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; } 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) { //æ¯å¦æ¨éè´¨æ£ï¼å¦ætrue就添å if (saleProduct.getIsChecked()) { if (Objects.nonNull(saleProduct.getIsChecked()) && saleProduct.getIsChecked()) { addQualityInspect(purchaseLedger, saleProduct); } } 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(); } 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(); } src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
@@ -53,5 +53,8 @@ @ApiModelProperty(value = "éå®ååID") private Integer salesLedgerId; @ApiModelProperty(value = "å ³èsales_ledger_product主é®") private Integer salesLedgerProductId; private String paymentMethod; } 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); /** * 忬¾ç»è®°ä¿®æ¹ 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; } 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); } } 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)); } 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(); } 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); } 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; } 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); } 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; } 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())); // 妿æé£å¨èè¡¨ä» åæ´æ°ä¸å é¤,å¦ææ²¡æå ¶ä»å ¥èä¿¡æ¯,é£ä¹å¨è表é忥å é¤ 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 { //å¦ææ²¡æç¦»èä¿¡æ¯é£ä¹å°±æ¯è¾å°ææ¥æ,è¿ééç¨å°ææ¥ææä¹ ç 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); } } 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); // éè¿ååå¹´éï¼ååå°ææ¥æè®¡ç®ååå¼å§æ¥æï¼å¨è·åå¼å§æ¥æï¼ç»ææ¥æçå¹´ææ¥æ°å // ååå°ææ¥æ - ååå¹´éï¼Dateç±»åï¼ // 1. å°Date转æ¢ä¸ºInstantï¼æ¶é´æ³ï¼ 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.å°XMLå 容åå ¥äº¤ä»¶å¹¶æ¹ä¸º.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; } } 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! # ä»åºæ°æ®æº 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 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 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 != '' "> 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> 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 >= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d') </if> <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' "> AND contract_expire_time <= 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 >= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d') </if> <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' "> AND contract_expire_time <= 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 != '' ">