diff --git a/src/main/java/com/bonus/boot/manager/basic/controller/DownloadController.java b/src/main/java/com/bonus/boot/manager/basic/controller/DownloadController.java index 9ee8409..9f98466 100644 --- a/src/main/java/com/bonus/boot/manager/basic/controller/DownloadController.java +++ b/src/main/java/com/bonus/boot/manager/basic/controller/DownloadController.java @@ -23,6 +23,7 @@ import java.net.URLConnection; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Objects; @Api(tags = "下载") @RestController @@ -53,6 +54,11 @@ public class DownloadController { response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.addHeader("charset", "utf-8"); response.addHeader("Pragma", "no-cache"); + if(Objects.equals(filename,"zh_model.xlsx")){ // 招行新模版 + filename = "招商银行工资导入模板(新).xlsx"; + }else if(Objects.equals(filename,"jh_gy_gzc.xlsx")){ // 建行(贵阳)新模版 + filename = "建设银行工资导入模板(贵阳).xlsx"; + } String encodeName = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString()); response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName); diff --git a/src/main/java/com/bonus/boot/manager/ca/bm/entity/PayAccountInfoBean.java b/src/main/java/com/bonus/boot/manager/ca/bm/entity/PayAccountInfoBean.java index 85f7fb2..bc198e3 100644 --- a/src/main/java/com/bonus/boot/manager/ca/bm/entity/PayAccountInfoBean.java +++ b/src/main/java/com/bonus/boot/manager/ca/bm/entity/PayAccountInfoBean.java @@ -16,4 +16,33 @@ public class PayAccountInfoBean { */ String accountNumber; + /** + * 账户名 + */ + String accountName; + + /** + * 农民工工资代发账户 + */ + String specialAccountSuffix; + + /** + * 专户属地 + */ + String accountTerritory; + + /** + * 开户行 + */ + String openingBank; + + /** + * 开户行地址 + */ + String openingBankAddress; + + /** + * 开户日期 + */ + String openingAccountDate; } diff --git a/src/main/java/com/bonus/boot/manager/ca/bm/service/impl/PayAccountInfoServiceImpl.java b/src/main/java/com/bonus/boot/manager/ca/bm/service/impl/PayAccountInfoServiceImpl.java index 434bace..786d4f4 100644 --- a/src/main/java/com/bonus/boot/manager/ca/bm/service/impl/PayAccountInfoServiceImpl.java +++ b/src/main/java/com/bonus/boot/manager/ca/bm/service/impl/PayAccountInfoServiceImpl.java @@ -93,30 +93,40 @@ public class PayAccountInfoServiceImpl implements PayAccountInfoService { } // 导出标题 ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true); - writer.merge(5, fileName,false); + writer.merge(8, fileName,false); // 合并二级表头 writer.writeCellValue(0,1,"序号"); writer.setColumnWidth(0, 8); - writer.writeCellValue(1,1,"付款账户名称"); + writer.writeCellValue(1,1,"付账户名称"); writer.setColumnWidth(1, 25); writer.writeCellValue(2,1,"账户"); writer.setColumnWidth(2, 35); - writer.writeCellValue(3,1,"备注"); + writer.writeCellValue(3,1,"开户行"); writer.setColumnWidth(3, 35); - writer.writeCellValue(4,1,"操作人"); - writer.setColumnWidth(4, 10); - writer.writeCellValue(5,1,"操作时间"); - writer.setColumnWidth(5, 25); + writer.writeCellValue(4,1,"开户行地址"); + writer.setColumnWidth(4, 35); + writer.writeCellValue(5,1,"开户时间"); + writer.setColumnWidth(4, 35); + writer.writeCellValue(6,1,"备注"); + writer.setColumnWidth(5, 35); + writer.writeCellValue(7,1,"操作人"); + writer.setColumnWidth(6, 10); + writer.writeCellValue(8,1,"操作时间"); + writer.setColumnWidth(8, 45); + // 设置表头高度、单元格宽度 writer.setRowHeight(0, 35); for (int i = 0; i < list.size(); i++) { writer.writeCellValue(0, 2 + i, i + 1); writer.writeCellValue(1, 2 + i, list.get(i).getName()==null?"":list.get(i).getName()); writer.writeCellValue(2, 2 + i, list.get(i).getAccountNumber()==null?"":list.get(i).getAccountNumber()); - writer.writeCellValue(3, 2 + i, list.get(i).getRemarks()==null?"":list.get(i).getRemarks()); - writer.writeCellValue(4, 2 + i, list.get(i).getCzyName()==null?"":list.get(i).getCzyName()); - writer.writeCellValue(5, 2 + i, list.get(i).getCzsj()==null?"":list.get(i).getCzsj()); + writer.writeCellValue(3, 2 + i, list.get(i).getOpeningBank()==null?"":list.get(i).getOpeningBank()); + writer.writeCellValue(4, 2 + i, list.get(i).getOpeningBankAddress()==null?"":list.get(i).getOpeningBankAddress()); + writer.writeCellValue(5, 2 + i, list.get(i).getOpeningAccountDate()==null?"":list.get(i).getOpeningAccountDate()); + writer.writeCellValue(6, 2 + i, list.get(i).getRemarks()==null?"":list.get(i).getRemarks()); + writer.writeCellValue(7, 2 + i, list.get(i).getCzyName()==null?"":list.get(i).getCzyName()); + writer.writeCellValue(8, 2 + i, list.get(i).getCzsj()==null?"":list.get(i).getCzsj()); writer.setRowHeight(2 + i, 35); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); diff --git a/src/main/java/com/bonus/boot/manager/ca/im/controller/PayableController.java b/src/main/java/com/bonus/boot/manager/ca/im/controller/PayableController.java index 3320ebb..87ba394 100644 --- a/src/main/java/com/bonus/boot/manager/ca/im/controller/PayableController.java +++ b/src/main/java/com/bonus/boot/manager/ca/im/controller/PayableController.java @@ -104,6 +104,13 @@ public class PayableController { return dao.getFKZH(); } + @LogAnnotation + @GetMapping("/getBankAccount") + @ApiOperation(value = "银行账号下拉选") + public List getBankAccount() { + return dao.getBankAccount(); + } + @PostMapping("/getUnit") @ApiOperation(value = "查询") @PreAuthorize("hasAuthority('sys:unit:query')") diff --git a/src/main/java/com/bonus/boot/manager/ca/im/dao/PayableDao.java b/src/main/java/com/bonus/boot/manager/ca/im/dao/PayableDao.java index 47a1235..c7af1e4 100644 --- a/src/main/java/com/bonus/boot/manager/ca/im/dao/PayableDao.java +++ b/src/main/java/com/bonus/boot/manager/ca/im/dao/PayableDao.java @@ -83,4 +83,6 @@ public interface PayableDao { List getHTIDByMC(String htmc); + + List getBankAccount(); } diff --git a/src/main/java/com/bonus/boot/manager/ca/im/entity/PayableBean.java b/src/main/java/com/bonus/boot/manager/ca/im/entity/PayableBean.java index ae4c45e..e336ea1 100644 --- a/src/main/java/com/bonus/boot/manager/ca/im/entity/PayableBean.java +++ b/src/main/java/com/bonus/boot/manager/ca/im/entity/PayableBean.java @@ -52,5 +52,8 @@ public class PayableBean { String gyssl;//供应商数量 String ht;//对应的合同id String department;//组织机构 + Integer accountId;//应付款账号 + String accountName;//应付款账号 + Integer personNum;//人次 } diff --git a/src/main/java/com/bonus/boot/manager/ca/im/service/PayableService.java b/src/main/java/com/bonus/boot/manager/ca/im/service/PayableService.java index 13ce1a1..c9a0b10 100644 --- a/src/main/java/com/bonus/boot/manager/ca/im/service/PayableService.java +++ b/src/main/java/com/bonus/boot/manager/ca/im/service/PayableService.java @@ -1,6 +1,7 @@ package com.bonus.boot.manager.ca.im.service; +import com.bonus.boot.manager.ca.bm.entity.PayAccountInfoBean; import com.bonus.boot.manager.ca.bm.entity.SupplierInfoBean; import com.bonus.boot.manager.ca.im.entity.PayableBean; diff --git a/src/main/java/com/bonus/boot/manager/ca/im/service/impl/PayableServiceImpl.java b/src/main/java/com/bonus/boot/manager/ca/im/service/impl/PayableServiceImpl.java index bf65fb7..c8c148b 100644 --- a/src/main/java/com/bonus/boot/manager/ca/im/service/impl/PayableServiceImpl.java +++ b/src/main/java/com/bonus/boot/manager/ca/im/service/impl/PayableServiceImpl.java @@ -2,6 +2,7 @@ package com.bonus.boot.manager.ca.im.service.impl; import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelWriter; +import com.bonus.boot.manager.ca.bm.entity.PayAccountInfoBean; import com.bonus.boot.manager.ca.bm.entity.SupplierInfoBean; import com.bonus.boot.manager.ca.im.dao.PayableDao; import com.bonus.boot.manager.ca.im.entity.PayableBean; @@ -71,7 +72,6 @@ public class PayableServiceImpl implements PayableService { List integerList = new ArrayList<>(); collect.forEach((k,v) -> integerList.add(v)); - String fileName = "应付录入信息"; //记录用于合并的rowIndex ArrayList> mergeRows = new ArrayList<>(); @@ -90,7 +90,7 @@ public class PayableServiceImpl implements PayableService { } // 导出标题 ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true); - writer.merge(12, fileName,false); + writer.merge(14, fileName,false); // 合并二级表头 writer.writeCellValue(0,1,"序号"); @@ -109,16 +109,20 @@ public class PayableServiceImpl implements PayableService { writer.setColumnWidth(6, 15); writer.writeCellValue(7,1,"商品名称"); writer.setColumnWidth(7, 15); - writer.writeCellValue(8,1,"金额"); + writer.writeCellValue(8,1,"付款账号"); writer.setColumnWidth(8, 15); - writer.writeCellValue(9,1,"发票号码"); - writer.setColumnWidth(9, 20); - writer.writeCellValue(10,1,"开票金额"); + writer.writeCellValue(9,1,"金额"); + writer.setColumnWidth(9, 15); + writer.writeCellValue(10,1,"人次"); writer.setColumnWidth(10, 15); - writer.writeCellValue(11,1,"制单人"); - writer.setColumnWidth(11, 15); - writer.writeCellValue(12,1,"摘要"); - writer.setColumnWidth(12, 20); + writer.writeCellValue(11,1,"发票号码"); + writer.setColumnWidth(11, 20); + writer.writeCellValue(12,1,"开票金额"); + writer.setColumnWidth(12, 15); + writer.writeCellValue(13,1,"制单人"); + writer.setColumnWidth(13, 15); + writer.writeCellValue(14,1,"摘要"); + writer.setColumnWidth(14, 20); // 设置表头高度、单元格宽度 writer.setRowHeight(0, 35); for (int i = 0; i < list.size(); i++) { @@ -130,11 +134,13 @@ public class PayableServiceImpl implements PayableService { writer.writeCellValue(5, 2 + i, list.get(i).getGysmc()==null?"":list.get(i).getGysmc()); writer.writeCellValue(6, 2 + i, list.get(i).getSpbh()==null?"":list.get(i).getSpbh()); writer.writeCellValue(7, 2 + i, list.get(i).getSpmc()==null?"":list.get(i).getSpmc()); - writer.writeCellValue(8, 2 + i, list.get(i).getJe()); - writer.writeCellValue(9, 2 + i, list.get(i).getFphm()==null?"":list.get(i).getFphm()); - writer.writeCellValue(10, 2 + i, list.get(i).getKpje()); - writer.writeCellValue(11, 2 + i, list.get(i).getZdr()==null?"":list.get(i).getZdr()); - writer.writeCellValue(12, 2 + i, list.get(i).getSpzy()==null?"":list.get(i).getSpzy()); + writer.writeCellValue(8, 2 + i, list.get(i).getAccountName()); + writer.writeCellValue(9, 2 + i, list.get(i).getJe()); + writer.writeCellValue(10, 2 + i, list.get(i).getPersonNum()); + writer.writeCellValue(11, 2 + i, list.get(i).getFphm()==null?"":list.get(i).getFphm()); + writer.writeCellValue(12, 2 + i, list.get(i).getKpje()); + writer.writeCellValue(13, 2 + i, list.get(i).getZdr()==null?"":list.get(i).getZdr()); + writer.writeCellValue(14, 2 + i, list.get(i).getSpzy()==null?"":list.get(i).getSpzy()); writer.setRowHeight(2 + i, 35); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); @@ -584,4 +590,5 @@ public class PayableServiceImpl implements PayableService { writer.close(); IoUtil.close(out); } + } diff --git a/src/main/java/com/bonus/boot/manager/manager/utils/ImportNoPhotoExcelHelper.java b/src/main/java/com/bonus/boot/manager/manager/utils/ImportNoPhotoExcelHelper.java index ba46be7..226bc6d 100644 --- a/src/main/java/com/bonus/boot/manager/manager/utils/ImportNoPhotoExcelHelper.java +++ b/src/main/java/com/bonus/boot/manager/manager/utils/ImportNoPhotoExcelHelper.java @@ -104,12 +104,21 @@ public class ImportNoPhotoExcelHelper { private static boolean checkModal(Sheet sheet, String className) { int colNum = 0; + // 是否是招行新模板 + boolean isNewModel = false; if (className.equals("UploadPayrollBean")){ colNum = sheet.getRow(1).getLastCellNum(); }else if (className.equals("CareerBean")){ colNum = sheet.getRow(1).getLastCellNum(); }else if (className.equals("WagesDetailsBean")){ - colNum = sheet.getRow(5).getLastCellNum(); + String applyDateTitle = sheet.getRow(4).getCell(0).getStringCellValue(); + if(Objects.equals(applyDateTitle,"申请时间")){ + isNewModel = true; + colNum = sheet.getRow(12).getLastCellNum(); + }else{ + colNum = sheet.getRow(5).getLastCellNum(); + } + }else{ colNum = sheet.getRow(0).getLastCellNum(); } @@ -123,7 +132,11 @@ public class ImportNoPhotoExcelHelper { case "CareerBean": return colNum == 12; case "WagesDetailsBean": - return colNum == 19; + if(isNewModel){ + return colNum >= 7; + }else{ + return colNum >= 18; + } case "VoucherDetailsBean": return colNum == 28; case "CCBWagesDetailsBean": @@ -140,8 +153,17 @@ public class ImportNoPhotoExcelHelper { } List list = new ArrayList<>(); int last = 0; + // 是否是招行新模板 + boolean isNewModel = false; + Map zhDataMap = new HashMap<>(); // 存放招行新模板通用数据 if (className.equals("WagesDetailsBean")){ - last = sheet.getRow(5).getLastCellNum(); + String applyDateTitle = sheet.getRow(4).getCell(0).getStringCellValue(); + if(Objects.equals(applyDateTitle,"申请时间")){ + isNewModel = true; + last = sheet.getRow(12).getLastCellNum(); + }else{ + last = sheet.getRow(5).getLastCellNum(); + } }else{ last = sheet.getRow(0).getLastCellNum(); } @@ -193,7 +215,54 @@ public class ImportNoPhotoExcelHelper { if (row.getRowNum() < 2) continue; break; case "WagesDetailsBean": - if (row.getRowNum() < 6) continue; + if(isNewModel){ + if (row.getRowNum() < 3) { + continue; + }else if(row.getRowNum() == 4){ + // 申请时间、主账号 + row.getCell(1).setCellType(CellType.STRING); + row.getCell(3).setCellType(CellType.STRING); + String applyDate = row.getCell(1).getStringCellValue(); + String mainNumber = row.getCell(3).getStringCellValue(); + if(StringUtils.isEmpty(applyDate)){ + return R.fail("申请时间不能为空"); + } + if(StringUtils.isEmpty(mainNumber)){ + return R.fail("主账号不能为空"); + } + zhDataMap.put("applyDate",applyDate); + zhDataMap.put("mainNumber",mainNumber); + continue; + }else if(row.getRowNum() == 7){ + // 业务参考号、批次摘要/备注 + row.getCell(1).setCellType(CellType.STRING); + row.getCell(3).setCellType(CellType.STRING); + String serviceReferenceNumber = row.getCell(1).getStringCellValue(); + String batchSummary = row.getCell(3).getStringCellValue(); + if(StringUtils.isEmpty(serviceReferenceNumber)){ + return R.fail("业务参考号不能为空"); + } + if(StringUtils.isEmpty(batchSummary)){ + return R.fail("批次摘要/备注不能为空"); + } + zhDataMap.put("serviceReferenceNumber",serviceReferenceNumber); + zhDataMap.put("batchSummary",batchSummary); + continue; + }else if(row.getRowNum() == 8){ + row.getCell(1).setCellType(CellType.STRING); + // 主账户名称 + String masterAccountName = row.getCell(1).getStringCellValue(); + if(StringUtils.isEmpty(masterAccountName)){ + return R.fail("主账户名称不能为空"); + } + zhDataMap.put("masterAccountName",masterAccountName); + continue; + }else if(row.getRowNum() == 3 || row.getRowNum() == 5 || row.getRowNum() == 6 || (row.getRowNum() > 8 && row.getRowNum() <= 12)){ + continue; + } + }else{ + if (row.getRowNum() < 5) continue; + } break; case "CCBWagesDetailsBean": if (row.getRowNum() < 1) continue; @@ -351,45 +420,88 @@ public class ImportNoPhotoExcelHelper { obj.put("suggest", row.getCell(11).getStringCellValue()); break; case "WagesDetailsBean": - setExcleTString(19, row, 0); - if (row.getCell(0) != null) - obj.put("zh", row.getCell(0).getStringCellValue()); - if (row.getCell(1) != null) - obj.put("hm", row.getCell(1).getStringCellValue()); - if (row.getCell(2) != null) - obj.put("je", row.getCell(2).getStringCellValue()); - if (row.getCell(3) != null) - obj.put("sjdkje", row.getCell(3).getStringCellValue()); - if (row.getCell(4) != null) - obj.put("zt", row.getCell(4).getStringCellValue()); - if (row.getCell(5) != null) - obj.put("zs", row.getCell(5).getStringCellValue()); - if (row.getCell(6) != null) - obj.put("ckh", row.getCell(6).getStringCellValue()); - if (row.getCell(7) != null) - obj.put("ts", row.getCell(7).getStringCellValue()); - if (row.getCell(8) != null) - obj.put("khh", row.getCell(8).getStringCellValue()); - if (row.getCell(9) != null) - obj.put("khd", row.getCell(9).getStringCellValue()); - if (row.getCell(10) != null) - obj.put("jbr", row.getCell(10).getStringCellValue()); - if (row.getCell(11) != null) - obj.put("qwr", row.getCell(11).getStringCellValue()); - if (row.getCell(12) != null) - obj.put("sfkzhm", row.getCell(12).getStringCellValue()); - if (row.getCell(13) != null) - obj.put("sfkzh", row.getCell(13).getStringCellValue()); - if (row.getCell(14) != null) - obj.put("yt", row.getCell(14).getStringCellValue()); - if (row.getCell(15) != null) - obj.put("ywckh", row.getCell(15).getStringCellValue()); - if (row.getCell(16) != null) - obj.put("lx", row.getCell(16).getStringCellValue()); - if (row.getCell(17) != null) - obj.put("qdbz", row.getCell(17).getStringCellValue()); - if (row.getCell(18) != null) - obj.put("hnbz", row.getCell(18).getStringCellValue()); + int dynamicColumnCount = row.getLastCellNum(); + setExcleTString(dynamicColumnCount, row, 0); + if(!isNewModel){ + if (row.getCell(0) != null) + obj.put("zh", row.getCell(0).getStringCellValue()); + if (row.getCell(1) != null) + obj.put("hm", row.getCell(1).getStringCellValue()); + if (row.getCell(2) != null) + obj.put("je", row.getCell(2).getStringCellValue()); + if (row.getCell(3) != null) + obj.put("sjdkje", row.getCell(3).getStringCellValue()); + if (row.getCell(4) != null) + obj.put("zt", row.getCell(4).getStringCellValue()); + if (row.getCell(5) != null) + obj.put("zs", row.getCell(5).getStringCellValue()); + if (row.getCell(6) != null) + obj.put("ckh", row.getCell(6).getStringCellValue()); + if (row.getCell(7) != null) + obj.put("ts", row.getCell(7).getStringCellValue()); + if (row.getCell(8) != null) + obj.put("khh", row.getCell(8).getStringCellValue()); + if (row.getCell(9) != null) + obj.put("khd", row.getCell(9).getStringCellValue()); + if (row.getCell(10) != null) + obj.put("jbr", row.getCell(10).getStringCellValue()); + if (row.getCell(11) != null) + obj.put("qwr", row.getCell(11).getStringCellValue()); + if (row.getCell(12) != null) + obj.put("sfkzhm", row.getCell(12).getStringCellValue()); + if (row.getCell(13) != null) + obj.put("sfkzh", row.getCell(13).getStringCellValue()); + if (row.getCell(14) != null) + obj.put("yt", row.getCell(14).getStringCellValue()); + if (row.getCell(15) != null) + obj.put("ywckh", row.getCell(15).getStringCellValue()); + if (row.getCell(16) != null) + obj.put("lx", row.getCell(16).getStringCellValue()); + if (row.getCell(17) != null) + obj.put("qdbz", row.getCell(17).getStringCellValue()); +// if (row.getCell(18) != null) +// obj.put("hnbz", row.getCell(18).getStringCellValue()); + // 处理第18列之后的所有列 + StringBuilder additionalData = new StringBuilder(); + for (int i = 18; i < dynamicColumnCount; i++) { + Cell cell = row.getCell(i); + if (cell != null) { + String columnName = sheet.getRow(5).getCell(i).getStringCellValue(); + String cellValue = cell.getStringCellValue(); + if (additionalData.length() > 0) { + additionalData.append("; "); + } + additionalData.append(columnName).append(": ").append(cellValue); + } + } + if (additionalData.length() > 0) { + obj.put("additionalData", additionalData.toString()); + } + }else{ + if (row.getCell(0) != null) // 员工姓名 + obj.put("hm", row.getCell(0).getStringCellValue()); + if (row.getCell(1) != null) // 个人账号 + obj.put("zh", row.getCell(1).getStringCellValue()); + if (row.getCell(2) != null) // 开户行 + obj.put("khh", row.getCell(2).getStringCellValue()); + if (row.getCell(3) != null) // 代发金额(元) + obj.put("je", row.getCell(3).getStringCellValue()); + if (row.getCell(4) != null) // 代发状态 + obj.put("zt", row.getCell(4).getStringCellValue()); + if (row.getCell(5) != null) // 失败原因 + obj.put("ts", row.getCell(5).getStringCellValue()); + if (row.getCell(6) != null) // 备注 + obj.put("additionalData", row.getCell(6).getStringCellValue()); + obj.put("zs", "网上代发代扣"); + obj.put("jbr", zhDataMap.get("applyDate")); + obj.put("qwr", zhDataMap.get("applyDate")); + obj.put("sfkzhm", zhDataMap.get("masterAccountName")); + obj.put("sfkzh", zhDataMap.get("mainNumber")); + obj.put("yt", zhDataMap.get("batchSummary")); + obj.put("ywckh", zhDataMap.get("serviceReferenceNumber")); + obj.put("lx", "代发其他"); + obj.put("qdbz", "超网代发"); + } break; case "CCBWagesDetailsBean": setExcleTString(12, row, -1); diff --git a/src/main/java/com/bonus/boot/manager/wages/entity/WagesDetailsBean.java b/src/main/java/com/bonus/boot/manager/wages/entity/WagesDetailsBean.java index b54a76a..7cb938a 100644 --- a/src/main/java/com/bonus/boot/manager/wages/entity/WagesDetailsBean.java +++ b/src/main/java/com/bonus/boot/manager/wages/entity/WagesDetailsBean.java @@ -58,4 +58,6 @@ public class WagesDetailsBean { private String cbi; private String zc; + private String additionalData; + } diff --git a/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesServiceImpl.java b/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesServiceImpl.java index 808777a..77f999b 100644 --- a/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesServiceImpl.java +++ b/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesServiceImpl.java @@ -108,10 +108,10 @@ public class WagesServiceImpl implements WagesService { lstError = lstError + "第" + obj.getString("rowNo") + "行,用途不能为空;"; continue; } - if (StringUtils.isBlank(ywckh)) { - lstError = lstError + "第" + obj.getString("rowNo") + "行,业务参考号不能为空;"; - continue; - } +// if (StringUtils.isBlank(ywckh)) { +// lstError = lstError + "第" + obj.getString("rowNo") + "行,业务参考号不能为空;"; +// continue; +// } WagesDetailsBean bean = new WagesDetailsBean(); bean.setMonth(month); @@ -156,6 +156,7 @@ public class WagesServiceImpl implements WagesService { bean.setYwckh(ywckh); bean.setLx(obj.getString("lx")); bean.setQdbz(obj.getString("qdbz")); + bean.setAdditionalData(obj.getString("additionalData")); list.add(bean); } }else { @@ -380,7 +381,7 @@ public class WagesServiceImpl implements WagesService { } // 导出标题 ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true); - writer.merge(24, fileName,false); + writer.merge(25, fileName,false); // 合并二级表头 writer.writeCellValue(0,1,"序号"); @@ -433,6 +434,8 @@ public class WagesServiceImpl implements WagesService { writer.setColumnWidth(23, 25); writer.writeCellValue(24,1,"渠道标志"); writer.setColumnWidth(24, 25); + writer.writeCellValue(25,1,"额外数据"); + writer.setColumnWidth(25, 25); // 设置表头高度、单元格宽度 writer.setRowHeight(0, 35); for (int i = 0; i < list.size(); i++) { @@ -461,6 +464,7 @@ public class WagesServiceImpl implements WagesService { writer.writeCellValue(22, 2 + i, list.get(i).getYwckh()==null?"":list.get(i).getYwckh()); writer.writeCellValue(23, 2 + i, list.get(i).getLx()==null?"":list.get(i).getLx()); writer.writeCellValue(24, 2 + i, list.get(i).getQdbz()==null?"":list.get(i).getQdbz()); + writer.writeCellValue(25, 2 + i, list.get(i).getAdditionalData() == null ? "" : list.get(i).getAdditionalData().replace("; ", "\n")); writer.setRowHeight(2 + i, 35); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); diff --git a/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesStaticsServiceImpl.java b/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesStaticsServiceImpl.java index 3430fd0..754ade5 100644 --- a/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesStaticsServiceImpl.java +++ b/src/main/java/com/bonus/boot/manager/wages/service/impl/WagesStaticsServiceImpl.java @@ -113,6 +113,8 @@ public class WagesStaticsServiceImpl implements WagesStaticsService { writer.setColumnWidth(23, 25); writer.writeCellValue(24,1,"渠道标志"); writer.setColumnWidth(24, 25); + writer.writeCellValue(25,1,"额外数据"); + writer.setColumnWidth(25, 25); // 设置表头高度、单元格宽度 writer.setRowHeight(0, 35); for (int i = 0; i < list.size(); i++) { @@ -141,6 +143,8 @@ public class WagesStaticsServiceImpl implements WagesStaticsService { writer.writeCellValue(22, 2 + i, list.get(i).getYwckh()==null?"":list.get(i).getYwckh()); writer.writeCellValue(23, 2 + i, list.get(i).getLx()==null?"":list.get(i).getLx()); writer.writeCellValue(24, 2 + i, list.get(i).getQdbz()==null?"":list.get(i).getQdbz()); + writer.writeCellValue(25, 2 + i, list.get(i).getAdditionalData() == null ? "" : list.get(i).getAdditionalData().replace("; ", "\n")); + writer.setRowHeight(2 + i, 35); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 0a4cc19..02c9ccb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,9 +2,9 @@ server.port=2002 #????·?? server.servlet.context-path=/yncw #mysql????????? -spring.datasource.url=jdbc:mysql://192.168.0.14:1103/yncw1?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true +spring.datasource.url=jdbc:mysql://192.168.0.14:4418/yncw1?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true spring.datasource.username=root -spring.datasource.password=dszadmin@ynreal14! +spring.datasource.password=Bonus@admin123! #spring.datasource.url=jdbc:mysql://127.0.0.1:3306/yncw_real?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true #spring.datasource.username=mroot #spring.datasource.password=bonus@admin123 @@ -21,13 +21,13 @@ mybatis.type-aliases-package=com.bonus.boot.manager.*.entity # ????????????????????? mybatis.configuration.map-underscore-to-camel-case=true #redis config -#spring.redis.host=127.0.0.1 -#spring.redis.port=6379 -#spring.redis.password= +spring.redis.host=127.0.0.1 +spring.redis.port=6379 +spring.redis.password= -spring.redis.host=192.168.0.14 -spring.redis.port=2001 -spring.redis.password=Dszbns@Redis123! +#spring.redis.host=192.168.0.14 +#spring.redis.port=2001 +#spring.redis.password=Dszbns@Redis123! # ??? logging.config=classpath:logback-boot.xml log.level.root=info diff --git a/src/main/resources/download/jh_gy_gzc.xlsx b/src/main/resources/download/jh_gy_gzc.xlsx new file mode 100644 index 0000000..e59b015 Binary files /dev/null and b/src/main/resources/download/jh_gy_gzc.xlsx differ diff --git a/src/main/resources/download/zh_model.xlsx b/src/main/resources/download/zh_model.xlsx new file mode 100644 index 0000000..f95f741 Binary files /dev/null and b/src/main/resources/download/zh_model.xlsx differ diff --git a/src/main/resources/download/招商银行工资导入模板.xlsx b/src/main/resources/download/招商银行工资导入模板.xlsx index d6b615f..e81f798 100644 Binary files a/src/main/resources/download/招商银行工资导入模板.xlsx and b/src/main/resources/download/招商银行工资导入模板.xlsx differ diff --git a/src/main/resources/mappers/ca/PayAccountInfoMapper.xml b/src/main/resources/mappers/ca/PayAccountInfoMapper.xml index 3d8dc7d..eadc5d5 100644 --- a/src/main/resources/mappers/ca/PayAccountInfoMapper.xml +++ b/src/main/resources/mappers/ca/PayAccountInfoMapper.xml @@ -4,13 +4,14 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into ca_bm_pay_account_info (name,remark,oper_user,oper_time,is_active, account_number) - values (#{name},#{remarks},#{czy},now(),'1', #{accountNumber}) + insert into ca_bm_pay_account_info (name,remark,oper_user,oper_time,is_active, account_number,opening_bank,opening_bank_address,opening_account_date) + values (#{name},#{remarks},#{czy},now(),'1', #{accountNumber},#{openingBank},#{openingBankAddress},#{openingAccountDate}) update ca_bm_pay_account_info - set name = #{name},remark = #{remarks},oper_user = #{czy},oper_time = now(), account_number = #{accountNumber} + set name = #{name},remark = #{remarks},oper_user = #{czy},oper_time = now(), account_number = #{accountNumber}, + opening_bank = #{openingBank},opening_bank_address = #{openingBankAddress},opening_account_date = #{openingAccountDate} where id = #{id} @@ -30,25 +31,37 @@ @@ -192,7 +203,9 @@ su.username as zdr, su.id as zdrid, cip.spzy, - cip.htmc as htmcid + cip.htmc as htmcid, + cip.account_id as accountId, + cip.person_num as personNum from ca_im_payable cip left join ca_bm_supplier_info cbsi on cbsi.is_active = '1' and cbsi.id = cip.htmc left join ca_bm_goods_info cbgi on cbgi.is_active = '1' and cbgi.id = cip.spbh @@ -291,11 +304,15 @@ su.username as zdr, cip.spzy, cip.htmc as htmcid, - po.name as department + po.name as department, + cbpa.id as accountId, + cbpa.name as accountName, + cip.person_num as personNum from ca_im_payable cip left join ca_bm_supplier_info cbsi on cbsi.is_active = '1' and cbsi.id = cip.htmc left join pm_organization po on po.id = cbsi.department and po.is_active = '1' left join ca_bm_goods_info cbgi on cbgi.is_active = '1' and cbgi.id = cip.spbh + left join ca_bm_pay_account_info cbpa on cbpa.id = cip.account_id and cbgi.is_active = '1' left join sys_user su on su.is_active = '1' and su.id = cip.zdr where cip.is_active = '1') a where '1' = '1' @@ -317,6 +334,9 @@ and a.rq between #{params.startTime} and #{params.endTime} + + and a.accountId = #{params.accountId} + ORDER BY a.rq asc @@ -735,6 +755,10 @@ select id from ca_bm_supplier_info where IS_ACTIVE = '1' and CONTRACT_OR_PRO_NAME = #{htmc} + \ No newline at end of file diff --git a/src/main/resources/mappers/logs/SysLogsMapper.xml b/src/main/resources/mappers/logs/SysLogsMapper.xml index 8b1a875..6d630c0 100644 --- a/src/main/resources/mappers/logs/SysLogsMapper.xml +++ b/src/main/resources/mappers/logs/SysLogsMapper.xml @@ -36,10 +36,11 @@ sl.operation_function, sl.operation_record, sl.operation_status, - sl.createTime + sl.createTime, + su.username FROM sys_logs sl - + LEFT JOIN sys_user su ON sl.userId = su.id and ( diff --git a/src/main/resources/mappers/wages/WagesMapper.xml b/src/main/resources/mappers/wages/WagesMapper.xml index 68a0f99..76bbf7b 100644 --- a/src/main/resources/mappers/wages/WagesMapper.xml +++ b/src/main/resources/mappers/wages/WagesMapper.xml @@ -71,10 +71,10 @@ - insert into vw_wages_details (ZH, HM, JE, SJDKJE, ZT, ZS, CKH, TS, KHH, KHD, JBR, QWR, SFKZHM, SFKZH, YT, YT_SZ, YWCKH, LX, QDBZ,VW_ID,MONTH) + insert into vw_wages_details (ZH, HM, JE, SJDKJE, ZT, ZS, CKH, TS, KHH, KHD, JBR, QWR, SFKZHM, SFKZH, YT, YT_SZ, YWCKH, LX, QDBZ,VW_ID,MONTH,additionalData) VALUES - (#{bean.zh},#{bean.hm},#{bean.je},#{bean.sjdkje},#{bean.zt},#{bean.zs},#{bean.ckh},#{bean.ts},#{bean.khh},#{bean.khd},#{bean.jbr},#{bean.qwr},#{bean.sfkzhm},#{bean.sfkzh},#{bean.yt},#{bean.ytSz},#{bean.ywckh},#{bean.lx},#{bean.qdbz},#{bean.vwId},#{bean.month}) + (#{bean.zh},#{bean.hm},#{bean.je},#{bean.sjdkje},#{bean.zt},#{bean.zs},#{bean.ckh},#{bean.ts},#{bean.khh},#{bean.khd},#{bean.jbr},#{bean.qwr},#{bean.sfkzhm},#{bean.sfkzh},#{bean.yt},#{bean.ytSz},#{bean.ywckh},#{bean.lx},#{bean.qdbz},#{bean.vwId},#{bean.month},#{bean.additionalData}) @@ -104,7 +104,8 @@ select vwd.id,vwd.zh, vwd.hm, vwd.je, vwd.sjdkje, vwd.zt, vwd.zs, vwd.ckh, vwd.ts, vwd.khh, vwd.khd, vwd.jbr, vwd.qwr, vwd.sfkzhm, vwd.sfkzh, vwd.yt, vwd.yt_sz, vwd.ywckh, vwd.lx, vwd.qdbz, vvd.ZQ, vvd.PZBH, vvd.zy as - summary, vvd.zgldx as sub, vvd.fzgldx1 as project, vvd.fzgldx2 as company + summary, vvd.zgldx as sub, vvd.fzgldx1 as project, vvd.fzgldx2 as company, vwd.additionalData from vw_wages_details vwd left join vw_voucher_details vvd on vvd.PZBH_SZ = vwd.YT_SZ where 1=1 diff --git a/src/main/resources/static/pages/finance/addPayable.html b/src/main/resources/static/pages/finance/addPayable.html index 487ffa6..c67dcfe 100644 --- a/src/main/resources/static/pages/finance/addPayable.html +++ b/src/main/resources/static/pages/finance/addPayable.html @@ -52,12 +52,27 @@ + +
+ + +
+
- +
+
+ +
+ +
+
+
@@ -67,7 +82,7 @@
- +
@@ -137,6 +152,7 @@ layui.form.render('select') } }) + getBankAccount(""); } @@ -189,6 +205,29 @@ }) } + function getBankAccount(id) { + $("#accountId").empty(); + $.ajax({ + url: ctxPath + '/payable/getBankAccount', + method: 'get', + success: function (data) { + var str = ''; + if (data.length > 0) { + str += ''; + for (var i = 0; i < data.length; i++) { + if (id == data[i].id) { + str += ''; + } else { + str += ''; + } + } + } + $("#accountId").append(str); + layui.form.render('select') + } + }) + } + function spbh(spid) { $("#spbh").empty(); $.ajax({ @@ -249,7 +288,9 @@ spbh: [/^(?!-1).*$/, '请选择商品名称'], zdr: [/^(?!-1).*$/, '请选择制单人'], je: [/(^$)|^[0-9]+(\.[0-9]{1,2})?$/,'请输入正确金额,小数点后二位'], - kpje: [/(^$)|^[0-9]+(\.[0-9]{1,2})?$/,'请输入正确开票金额,小数点后二位'] + kpje: [/(^$)|^[0-9]+(\.[0-9]{1,2})?$/,'请输入正确开票金额,小数点后二位'], + personNum: [/^[1-9]\d{0,5}$/,"请输入1-999999之间的正整数"], + accountId: [/^(?!-1).*$/, '请选择银行账号'] }) @@ -294,6 +335,8 @@ gysbh(data.gysmc,data.htmc); //$("#gysmc").val(data.gysmc); spbh(data.spid); + getBankAccount(data.accountId); + $("#personNum").val(data.personNum); //$("#spbh").val(data.spbh); $("#je").val(data.je); $("#fphm").val(data.fphm); diff --git a/src/main/resources/static/pages/finance/addPaymentAccount.html b/src/main/resources/static/pages/finance/addPaymentAccount.html index 7296af8..0058415 100644 --- a/src/main/resources/static/pages/finance/addPaymentAccount.html +++ b/src/main/resources/static/pages/finance/addPaymentAccount.html @@ -19,7 +19,7 @@
- +
@@ -32,6 +32,27 @@
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
@@ -59,6 +80,11 @@ layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function(){ var layer = layui.layer; form = layui.form; + var laydate = layui.laydate; + // 渲染 + laydate.render({ + elem: '#openingAccountDate' + }); initData(); form.render(); }); @@ -74,6 +100,9 @@ $("#name").val(data.name); $("#accountNumber").val(data.accountNumber); $("#remarks").val(data.remarks); + $("#openingBank").val(data.openingBank); + $("#openingBankAddress").val(data.openingBankAddress); + $("#openingAccountDate").val(data.openingAccountDate); } }); } @@ -90,10 +119,12 @@ }else{ formdata.id = id; } - formdata.name = $("#name").val(); formdata.accountNumber = $("#accountNumber").val(); formdata.remarks = $("#remarks").val(); + formdata.openingBank = $("#openingBank").val(); + formdata.openingBankAddress = $("#openingBankAddress").val(); + formdata.openingAccountDate = $("#openingAccountDate").val(); $.ajax({ type : 'post', url : ctxPath + '/payAccountInfo', diff --git a/src/main/resources/static/pages/finance/payable.html b/src/main/resources/static/pages/finance/payable.html index 799f1e2..d3fa1bf 100644 --- a/src/main/resources/static/pages/finance/payable.html +++ b/src/main/resources/static/pages/finance/payable.html @@ -22,6 +22,11 @@ .wrap { word-wrap: break-word; } + .layui-input, .layui-textarea { + display: block; + width: 100%; + padding-left: 10px; + } @@ -36,27 +41,33 @@
- +
- +
- +
- +
- + +
+
+
+
+
@@ -140,6 +151,8 @@ format: 'yyyy-MM-dd' }); + getBankAccount(""); + table.render({ elem: '#demo' , url: ctxPath + '/payable/getList' //数据接口 @@ -165,7 +178,9 @@ , {field: 'gysmc', width: 200, align: 'center',title:'往来单位',templet: '#gysmcView'} , {field: 'spbh', width: 200, align: 'center', title: '商品编号'} , {field: 'spmc', width: 200, align: 'center', title: '商品名称'} + , {field: 'accountName', width: 200, align: 'center', title: '付款账号'} , {field: 'je', width: 200, align: 'center', title: '金额'} + , {field: 'personNum', width: 200, align: 'center', title: '人次'} , {field: 'fphm', width: 200, align: 'center', title: '发票号码'} , {field: 'kpje', width: 200, align: 'center', title: '开票金额'} , {field: 'zdr', width: 200, align: 'center', title: '制单人'} @@ -215,6 +230,29 @@ openForms("","新增"); } + function getBankAccount(id) { + $("#accountId").empty(); + $.ajax({ + url: ctxPath + '/payable/getBankAccount', + method: 'get', + success: function (data) { + var str = ''; + if (data.length > 0) { + str += ''; + for (var i = 0; i < data.length; i++) { + if (id == data[i].id) { + str += ''; + } else { + str += ''; + } + } + } + $("#accountId").append(str); + layui.form.render('select') + } + }) + } + /** * 新增功能 */ @@ -307,6 +345,7 @@ spbh :$('#spbh').val(), pzh :$('#pzh').val(), zdr :$('#zdr').val(), + accountId :$('#accountId').val(), startTime :$('#startTime').val(), endTime :$('#endTime').val() } //设定异步数据接口的额外参数 @@ -317,7 +356,7 @@ $("#exportBt").click(function () { var token = localStorage.getItem("token"); var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0}); - var url = ctxPath + "/payable/exp?htmc=" + $("#htmc").val().trim()+"&gysmc=" + $("#gysmc").val().trim()+ "&spbh=" + $("#spbh").val().trim()+"&pzh=" + $("#pzh").val().trim()+"&zdr=" + $("#zdr").val().trim()+"&startTime=" + $("#startTime").val().trim()+"&endTime=" + $("#endTime").val().trim()+"&token=" + token; + var url = ctxPath + "/payable/exp?htmc=" + $("#htmc").val().trim()+"&gysmc=" + $("#gysmc").val().trim()+ "&spbh=" + $("#spbh").val().trim()+"&pzh=" + $("#pzh").val().trim()+"&zdr=" + $("#zdr").val().trim()+"&accountId=" + $("#accountId").val().trim()+"&startTime=" + $("#startTime").val().trim()+"&endTime=" + $("#endTime").val().trim()+"&token=" + token; var xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.responseType = "blob"; // 转换流 diff --git a/src/main/resources/static/pages/finance/paymentAccount.html b/src/main/resources/static/pages/finance/paymentAccount.html index b921248..4529786 100644 --- a/src/main/resources/static/pages/finance/paymentAccount.html +++ b/src/main/resources/static/pages/finance/paymentAccount.html @@ -39,6 +39,11 @@ placeholder="请输入账户名称">
+
+
+ +
+
+
@@ -190,6 +191,13 @@ function downloadWages() { window.open(ctxPath + "/download/download?filename=招商银行工资导入模板.xlsx") } + + /** + * 下载工资册模板(新) + * */ + function downloadNewWages() { + window.open(ctxPath + "/download/download?filename=zh_model.xlsx") + } \ No newline at end of file diff --git a/src/main/resources/static/pages/wages/uploadWagesTwo.html b/src/main/resources/static/pages/wages/uploadWagesTwo.html index 8b4398d..2f4e3ba 100644 --- a/src/main/resources/static/pages/wages/uploadWagesTwo.html +++ b/src/main/resources/static/pages/wages/uploadWagesTwo.html @@ -48,6 +48,7 @@
+
@@ -190,6 +191,14 @@ function downloadWages() { window.open(ctxPath + "/download/download?filename=建设银行工资导入模板.xlsx") } + + /** + * 下载工资册模板(贵阳) + * */ + function downloadNewWages() { + window.open(ctxPath + "/download/download?filename=jh_gy_gzc.xlsx") + } + \ No newline at end of file diff --git a/src/main/resources/static/pages/wages/wagesStaticsList.html b/src/main/resources/static/pages/wages/wagesStaticsList.html index 4758f5e..9ec1eba 100644 --- a/src/main/resources/static/pages/wages/wagesStaticsList.html +++ b/src/main/resources/static/pages/wages/wagesStaticsList.html @@ -164,6 +164,20 @@ , {field: 'ywckh', width: 200, align: 'center', title: '业务参考号'} , {field: 'lx', width: 200, align: 'center', title: '类型'} , {field: 'qdbz', width: 200, align: 'center', title: '渠道标志'} + , {field: 'additionalData', width: 200, align: 'center', title: '额外数据',templet: function (d) { + const additionalData = d.additionalData; + if (additionalData != null && additionalData !== '' && additionalData !== 'null') { + var additionalDataArr = additionalData.split(';'); + var additionalDataHtml = ''; + for (var i = 0; i < additionalDataArr.length; i++) { + additionalDataHtml += additionalDataArr[i] + '
'; + } + return additionalDataHtml; + } else { + return ''; + } + + }} , {width: 200, align: 'center',title:'凭证附件', templet: '#voucher'} , {width: 200, align: 'center',title:'工资附件', templet: '#wages'} ]] diff --git a/src/main/resources/static/pages/work/SysLogManage.html b/src/main/resources/static/pages/work/SysLogManage.html index 2b17bc6..3bfb969 100644 --- a/src/main/resources/static/pages/work/SysLogManage.html +++ b/src/main/resources/static/pages/work/SysLogManage.html @@ -81,13 +81,16 @@ {field:'ano', width:80, title: '序号' ,templet:function(res){ return res.LAY_INDEX; }} - ,{field: 'userid', width: 190, title: '用户名'} + ,{field: 'username', width: 190, title: '用户名'} ,{field: 'isApp', title: '操作子系统'} ,{field: 'module', width:190, title: '操作模块'} - ,{field: 'operationFunction', title: '操作功能'} - ,{field: 'operationRecord', title: '操作记录'} + // ,{field: 'operationFunction', title: '操作功能'} + // ,{field: 'operationRecord', title: '操作记录'} ,{field: 'createtime', title: '操作时间'} - ,{field: 'operationStatus', title: '操作状态'} + ,{field: 'operationStatus', title: '操作状态', + templet: function (d) { + return '成功'; + }} ]], id : 'menuTable' });