| src/main/java/com/ruoyi/account/pojo/AccountExpense.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application-newTest.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/account/pojo/AccountExpense.java
@@ -35,7 +35,7 @@ private Long businessId; /** * ä¸å¡ç±»å 1-仿¬¾ 2-è¿æ¬¾ * ä¸å¡ç±»å 1-仿¬¾ 2-è¿æ¬¾ 3-èªèµåæ¾ */ private Integer businessType; src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
@@ -4,6 +4,7 @@ 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.CalculateSalaryDto; import com.ruoyi.staff.pojo.StaffSalaryMain; import com.ruoyi.staff.service.StaffSalaryMainService; import io.swagger.annotations.Api; @@ -39,8 +40,8 @@ @ApiOperation("éè¿é¨é¨idsè·åç¨æ·ä¿¡æ¯è®¡ç®æ¯ä¸ªåå·¥çå·¥èµ") @PostMapping("/calculateSalary") public AjaxResult calculateSalary(@RequestBody List<Long> ids) { return staffSalaryMainService.calculateSalary(ids); public AjaxResult calculateSalary(@RequestBody CalculateSalaryDto calculateSalaryDto) { return staffSalaryMainService.calculateSalary(calculateSalaryDto); } @PostMapping("/add") src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.staff.dto; import lombok.Data; import java.util.List; /** * @author :yys * @date : 2026/3/9 11:53 */ @Data public class CalculateSalaryDto { private List<Long> ids; private String date; } src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.staff.dto.CalculateSalaryDto; import com.ruoyi.staff.pojo.StaffSalaryMain; import com.baomidou.mybatisplus.extension.service.IService; @@ -25,5 +26,5 @@ AjaxResult delete(List<Long> ids); AjaxResult calculateSalary(List<Long> ids); AjaxResult calculateSalary(CalculateSalaryDto calculateSalaryDto); } src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.UserAccountDto; import com.ruoyi.production.dto.UserProductionAccountingDto; import com.ruoyi.production.service.SalesLedgerProductionAccountingService; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.domain.SysUserDept; @@ -58,6 +61,9 @@ @Autowired private StaffOnJobMapper staffOnJobMapper; @Autowired private SalesLedgerProductionAccountingService salesLedgerProductionAccountingService; @Override @@ -160,7 +166,7 @@ * éè¿åå·¥id计ç®ç¤¾ä¿æ¹æ¡ * @param id */ public void calculateByEmployeeId(Integer id,Map<String, Object> map) { public void calculateByEmployeeId(Integer id,Map<String, Object> map,String date) { // 1. å ¥åæ ¡éª if (id == null) { return; // æè¿å空åè¡¨ï¼æ ¹æ®ä¸å¡éæ±è°æ´ @@ -211,6 +217,20 @@ // 个ç¨éé¢ï¼æ 社ä¿çï¼ BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, schemeAmount, gjj); map.put("salaryTax", bigDecimal); // 计æ¶å·¥èµ è®¡ä»¶å·¥èµ UserProductionAccountingDto userProductionAccountingDto = new UserProductionAccountingDto(); userProductionAccountingDto.setUserId(getUidByStaffId(staffId)); userProductionAccountingDto.setDate(date); UserAccountDto byUserId = salesLedgerProductionAccountingService.getByUserId(userProductionAccountingDto); if(byUserId != null){ map.put("pieceSalary", byUserId.getAccountBalance()); map.put("hourlySalary", byUserId.getAccount()); // åºå å®åå¢å grossSalary = grossSalary.add(byUserId.getAccountBalance()).add(byUserId.getAccount()); map.put("grossSalary", grossSalary); netSalary = netSalary.add(byUserId.getAccountBalance()).add(byUserId.getAccount()); map.put("netSalary", netSalary); } // 2. æ¥è¯¢è¯¥äººå对åºçç¤¾ä¿æ¹æ¡ List<SchemeApplicableStaff> schemeList = schemeApplicableStaffMapper.selectSchemeByStaffId(staffId); if (CollectionUtils.isEmpty(schemeList)) { @@ -244,6 +264,26 @@ } /** * éè¿åå·¥Idè·åç¨æ·id * @param staffId * @return */ public Long getUidByStaffId(Long staffId){ StaffOnJob staffOnJob = staffOnJobMapper.selectById(staffId); if(staffOnJob == null){ return -1L; // è¿åä¸åå¨Id } SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getUserName, staffOnJob.getStaffNo()) .eq(SysUser::getDelFlag, "0") .last("limit 1")); if(sysUser == null){ return -1L; // è¿åä¸åå¨Id } return sysUser.getUserId(); } /** * è®¡ç® * @param type * @param bigDecimal src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -2,14 +2,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.mapper.AccountExpenseMapper; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysUserDeptMapper; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.staff.dto.CalculateSalaryDto; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.mapper.StaffSalaryDetailMapper; import com.ruoyi.staff.pojo.SchemeApplicableStaff; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.pojo.StaffSalaryDetail; import com.ruoyi.staff.pojo.StaffSalaryMain; import com.ruoyi.staff.mapper.StaffSalaryMainMapper; @@ -52,6 +58,12 @@ @Autowired private SysUserMapper sysUserMapper; @Autowired private StaffOnJobMapper staffOnJobMapper; @Autowired private AccountExpenseMapper accountExpenseMapper; @Override public AjaxResult listPage(Page page, StaffSalaryMain staffSalaryMain) { @@ -104,6 +116,21 @@ detail.setMainId(staffSalaryMain.getId()); }); staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList()); // åè´¢å¡èå¨ï¼æ°å¢æ¯åº if(staffSalaryMain.getStatus().equals(5)){ AccountExpense accountExpense = new AccountExpense(); accountExpense.setBusinessType(3); accountExpense.setExpenseMoney(staffSalaryMain.getTotalSalary()); accountExpense.setBusinessId(staffSalaryMain.getId()); accountExpense.setExpenseDate(new Date()); accountExpense.setExpenseMethod("2"); accountExpense.setExpenseType("1"); accountExpense.setExpenseDescribed(staffSalaryMain.getSalaryTitle()); accountExpense.setNote(staffSalaryMain.getRemark()); accountExpense.setInputUser(SecurityUtils.getLoginUser().getNickName()); accountExpense.setInputTime(new Date()); accountExpenseMapper.insert(accountExpense); } return AjaxResult.success("ä¿®æ¹æå"); } @@ -118,16 +145,16 @@ } @Override public AjaxResult calculateSalary(List<Long> ids) { if(CollectionUtils.isEmpty(ids)){ public AjaxResult calculateSalary(CalculateSalaryDto calculateSalaryDto) { if(CollectionUtils.isEmpty(calculateSalaryDto.getIds())){ return AjaxResult.error("åæ°é误"); } List<Map<String, Object>> longs = setSchemeApplicableStaffUserInfo(ids); // éè¿é¨é¨idsè·åç¨æ·ä¿¡æ¯ List<Map<String, Object>> longs = setSchemeApplicableStaffUserInfo(calculateSalaryDto.getIds()); // éè¿é¨é¨idsè·åç¨æ·ä¿¡æ¯ if(CollectionUtils.isEmpty(longs)){ return AjaxResult.error("æ åå·¥"); } for (Map<String, Object> id : longs) { schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id); schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id,calculateSalaryDto.getDate()); } return AjaxResult.success(longs); } @@ -139,4 +166,5 @@ // éè¿é¨é¨è·å人åid return sysUserDeptMapper.setSchemeApplicableStaffUserInfo(ids); } } src/main/resources/application-newTest.yml
@@ -15,6 +15,14 @@ captchaType: math # åå审æ¹ç¼å·åç¼(é ç½®æä»¶åç¼å½å) approvalNumberPrefix: NEWTEST # ä¸ªæ¨ Unipush é ç½® getui: appId: PfjyAAE0FK64FaO1w2CMb1 appKey: zTMb831OEL6J4GK1uE3Ob4 masterSecret: K1GFtsv42v61tXGnF7SGE5 domain: https://restapi.getui.cn/v2/ # 离线æ¨é使ç¨çå å/ç»ä»¶å intentComponent: uni.app.UNI099A590/io.dcloud.PandoraEntry # å¼åç¯å¢é ç½® server: # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080