From ca1a095612fcd3de785af6a1d9b6c44d73695467 Mon Sep 17 00:00:00 2001 From: lSun <15893999301@qq.com> Date: Tue, 3 Jun 2025 18:10:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=87=BA=E5=85=A5=E5=9C=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86-=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/bmw/pom.xml | 6 +++ .../person/controller/ContractController.java | 4 +- .../person/dao/PersonComprehensiveDao.java | 4 ++ .../bonus/bmw/person/entity/ContractBean.java | 1 + .../person/service/ContractServiceImpl.java | 45 +++++++++++++++++- .../PersonComprehensiveServiceImp.java | 47 ++++++++++++++----- .../mapper/person/ContractMapper.xml | 1 + .../person/PersonComprehensiveMapper.xml | 9 ++++ .../src/main/resources/static/js/publicJs.js | 5 +- .../PersonContract/ContractManageList.js | 12 +++-- .../PersonContract/ContractSignUploadFrom.js | 2 + .../AttendanceMachine/personEntryFrom.html | 2 +- .../AttendanceMachine/personEntryFrom.js | 11 +++-- .../AttendanceMachine/personEntryUpd.html | 2 +- .../ContractSignUploadFrom.html | 4 +- 15 files changed, 123 insertions(+), 32 deletions(-) diff --git a/modules/bmw/pom.xml b/modules/bmw/pom.xml index 2aed08c..73aabdb 100644 --- a/modules/bmw/pom.xml +++ b/modules/bmw/pom.xml @@ -213,6 +213,12 @@ 4.12.0 + + com.belerweb + pinyin4j + 2.5.1 + + diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/controller/ContractController.java b/modules/bmw/src/main/java/com/bonus/bmw/person/controller/ContractController.java index 3f4ce69..5324f44 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/controller/ContractController.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/controller/ContractController.java @@ -135,7 +135,9 @@ public class ContractController { int count = service.addContractInfo(bean); if (count == 1){ ar = R.ok(); - }else { + }else if(count == -1){ + ar = R.fail("合同编号要根据工程名称去生成,请先选择工程名称"); + } else { ar = R.fail(Constants.INSERT_FAIL); } return ar; diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java b/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java index f87d849..07d6d95 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java @@ -168,4 +168,8 @@ public interface PersonComprehensiveDao { List exportWorkerRoster(@Param("params") PersonComprehensiveBean bean); List exportWorkerRosterList(@Param("params")PersonComprehensiveBean queryDTO); + + String getProNme(String proId); + + int getContractNum(); } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ContractBean.java b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ContractBean.java index c3f013e..22a2ab0 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ContractBean.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ContractBean.java @@ -39,6 +39,7 @@ public class ContractBean { private String endowmentInsurance; private String isActive; private String stauts; + private String proId;// private String proName;// private String teamName;// private String subName;// diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/service/ContractServiceImpl.java b/modules/bmw/src/main/java/com/bonus/bmw/person/service/ContractServiceImpl.java index 8b1a857..3ff421c 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/service/ContractServiceImpl.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/service/ContractServiceImpl.java @@ -1,6 +1,8 @@ package com.bonus.bmw.person.service; +import cn.hutool.core.date.DateUtil; import com.bonus.bmw.person.dao.ContractDao; +import com.bonus.bmw.person.dao.PersonComprehensiveDao; import com.bonus.bmw.person.dao.RedListDao; import com.bonus.bmw.person.entity.ContractBean; import com.bonus.bmw.person.entity.RedLightHisBean; @@ -9,8 +11,10 @@ import com.bonus.bmw.team.service.IntegratedQueryService; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.bean.ContractExportBean; +import net.sourceforge.pinyin4j.PinyinHelper; import org.springframework.stereotype.Service; + import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -27,6 +31,9 @@ public class ContractServiceImpl implements ContractService { @Resource(name = "integratedQueryService") private IntegratedQueryService integratedQueryService; + @Resource(name = "PersonComprehensiveDao") + private PersonComprehensiveDao personComprehensiveDao; + //添加合同照片 public int addContractPhoto(List list) { @@ -44,7 +51,20 @@ public class ContractServiceImpl implements ContractService { i = delContract(bean); } if(i>0){ - i = dao.addContractInfo(bean); + String proId = bean.getProId(); + if(!StringUtils.isEmpty(proId)){ + String proName = personComprehensiveDao.getProNme(proId); + String abbreviation = getInitialsUpperCaseWithPinyin(proName); + int contractNum =personComprehensiveDao.getContractNum(); + String dateStr = DateUtil.format(DateUtil.date(), "yyyyMMdd"); // 使用 Hutool 的 DateUtil + String contractCode = abbreviation + dateStr + contractNum; + bean.setContractCode(contractCode); + i = dao.addContractInfo(bean); + }else{ + i = -1; + return i; + } + } //将合同id存入 出入场表 //1.0先查 最新出入场记录 @@ -186,4 +206,27 @@ public class ContractServiceImpl implements ContractService { public List downloadFullContractFile(String proId) { return dao.downloadFullContractFile(proId); } + + public static String getInitialsUpperCaseWithPinyin(String str) { + if (str == null || str.isEmpty()) { + return ""; + } + + StringBuilder initials = new StringBuilder(); + char[] chars = str.trim().toCharArray(); + + for (char c : chars) { + // 如果是中文,尝试获取拼音首字母 + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c); + if (pinyinArray != null && pinyinArray.length > 0) { + String firstLetter = pinyinArray[0].charAt(0) + ""; + initials.append(firstLetter.toUpperCase()); + } + } catch (Exception e) { + // 忽略异常字符 + } + } + return initials.toString(); + } } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java index 0f46e00..4295bee 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java @@ -24,6 +24,7 @@ import com.bonus.common.core.table.PageTableResponse; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.TrimUtil; import com.bonus.common.security.utils.SecurityUtils; +import net.sourceforge.pinyin4j.PinyinHelper; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -38,19 +39,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import javax.servlet.ServletOutputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import javax.servlet.ServletOutputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -190,6 +179,15 @@ public class PersonComprehensiveServiceImp implements PersonComprehensiveService } //第四页数据添加 上传合同 if (i > 0 && StringUtils.isNotEmpty(o.getContractCode())) { + String proId = o.getProId(); + if(!StringUtils.isEmpty(proId)){ + String proName = dao.getProNme(proId); + String abbreviation = getInitialsUpperCaseWithPinyin(proName); + int contractNum =dao.getContractNum(); + String dateStr = DateUtil.format(DateUtil.date(), "yyyyMMdd"); // 使用 Hutool 的 DateUtil + String contractCode = abbreviation + dateStr + contractNum; + o.setContractCode(contractCode); + } dao.insertPersonContractData(o); } if (o.getLightStatus().equals("0")) { @@ -535,7 +533,7 @@ public class PersonComprehensiveServiceImp implements PersonComprehensiveService if (StringUtils.isNotEmpty(o.getCheckupFilePath())) { //先删除之前体检报告 int jk = dao.deleteCheckupFilePath(o); - //在添加新的体检报告 + // dao.insertCheckupFilePath(o); } else { //直接删除体检报告 @@ -1070,4 +1068,27 @@ public class PersonComprehensiveServiceImp implements PersonComprehensiveService return list; } + public static String getInitialsUpperCaseWithPinyin(String str) { + if (str == null || str.isEmpty()) { + return ""; + } + + StringBuilder initials = new StringBuilder(); + char[] chars = str.trim().toCharArray(); + + for (char c : chars) { + // 如果是中文,尝试获取拼音首字母 + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c); + if (pinyinArray != null && pinyinArray.length > 0) { + String firstLetter = pinyinArray[0].charAt(0) + ""; + initials.append(firstLetter.toUpperCase()); + } + } catch (Exception e) { + // 忽略异常字符 + } + } + return initials.toString(); + } + } \ No newline at end of file diff --git a/modules/bmw/src/main/resources/mapper/person/ContractMapper.xml b/modules/bmw/src/main/resources/mapper/person/ContractMapper.xml index d916f3b..41582da 100644 --- a/modules/bmw/src/main/resources/mapper/person/ContractMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/ContractMapper.xml @@ -25,6 +25,7 @@ bwc.contractType AS miurInsurance, IF ( bwc.sub_contract_url IS NULL, bwc.person_contract_url, bwc.sub_contract_url ) AS url, + bp.id as proId, bp.NAME AS proName, bst.team_name AS teamName, bwc.is_audit as isAudit, diff --git a/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml b/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml index 7287011..ba8d4fb 100644 --- a/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml @@ -1188,5 +1188,14 @@ bpg.id, bp.id + + + + diff --git a/modules/bmw/src/main/resources/static/js/publicJs.js b/modules/bmw/src/main/resources/static/js/publicJs.js index a8967be..f543258 100644 --- a/modules/bmw/src/main/resources/static/js/publicJs.js +++ b/modules/bmw/src/main/resources/static/js/publicJs.js @@ -2,7 +2,7 @@ var ctxPath = getContextPath(); var currentHostname = window.location.hostname; -// //测试 +//测试 var loginPath = "http://" + currentHostname + ":39200";//auth var systemPath = "http://" + currentHostname + ":31910";//system var fileUrl = "http://" + currentHostname + ":31909/file"; @@ -18,8 +18,7 @@ var oiPlanUrl = "http://" + currentHostname + ":31914/oiPlan"; // var oiPlanUrl = "http://" + currentHostname + ":1914/oiPlan"; //文件预览 -let filePreviewUrl = "http://192.168.0.14:8012/onlinePreview?url="; -// let filePreviewUrl = "http://" + currentHostname + ":8012/onlinePreview?url="; +let filePreviewUrl = "http://" + currentHostname + ":8012/onlinePreview?url="; function getContextPath() { var pathName = document.location.pathname; diff --git a/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractManageList.js b/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractManageList.js index 3ab4342..01af6b9 100644 --- a/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractManageList.js +++ b/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractManageList.js @@ -236,10 +236,11 @@ function init() { var workerPostId = row['postId']; var contractType = row['contractType']; var status = row['stauts']; + var proId = row['proId']; var html = ''; if(status != '无数据' && status != '未签订' && status != null){ //存在但重新上传,合同见证上传 - html += uploadContractWitness(idNumber, id, workerName, workerPostId,"sys:personContract:add", pers); + html += uploadContractWitness(proId,idNumber, id, workerName, workerPostId,"sys:personContract:add", pers); //详情页面 html += particularsContractWitness(idNumber,"sys:personContract:query", pers); //纸质合同可以删除 @@ -249,7 +250,7 @@ function init() { } if(status == '未签订' && (contractType == '' || contractType == null)){ //不存在,上传新的合同见证上传 - html += uploadContractWitness(idNumber,id,workerName, workerPostId,"", pers); + html += uploadContractWitness(proId,idNumber,id,workerName, workerPostId,"", pers); //详情页面 html += particularsContractWitness(idNumber,"sys:personContract:query", pers); } @@ -316,22 +317,23 @@ function particularsContractWitnessPage(idNumber) { } //合同见证上传 -function uploadContractWitness(idNumber, id, workerName, workerPostId, permission, pers){ +function uploadContractWitness(proId,idNumber, id, workerName, workerPostId, permission, pers){ if (permission != "") { if ($.inArray(permission, pers) < 0) { return ""; } } - var btn = $(""); + var btn = $(""); return btn.prop("outerHTML"); } //合同见证上传 -function uploadContractWitnessView(idNumber,id,workerName, workerPostId) { +function uploadContractWitnessView(proId,idNumber,id,workerName, workerPostId) { var contractId = getUuid(); //以前有合同,则须通过id删除,并添加新的。无合同删除用-1 if(id!==null && id!=='null'){ let confirm = layer.confirm("合同见证已存在,是否删除并重新上传?",function () { + localStorage.setItem("proId", proId); localStorage.setItem("idNumber", idNumber); localStorage.setItem("workerName", workerName); localStorage.setItem("workerPostId", workerPostId); diff --git a/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractSignUploadFrom.js b/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractSignUploadFrom.js index 92623c6..4263ad0 100644 --- a/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractSignUploadFrom.js +++ b/modules/bmw/src/main/resources/static/js/work/Person/PersonContract/ContractSignUploadFrom.js @@ -1,5 +1,6 @@ var element; var layer; +var proId = localStorage.getItem("proId"); var idNumber = localStorage.getItem("idNumber"); var workerName = localStorage.getItem("workerName"); var workerPostId = localStorage.getItem("workerPostId"); @@ -192,6 +193,7 @@ function addData() { formData.field.idNumber = idNumber; formData.field.workerName = workerName; formData.field.workerPostId = workerPostId; + formData.field.proId = proId; var formUrl = ctxPath + "/contract/addContract"; $.ajax({ type: 'POST', diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/personEntryFrom.html b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/personEntryFrom.html index e8671e9..fd39b5c 100644 --- a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/personEntryFrom.html +++ b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/personEntryFrom.html @@ -546,7 +546,7 @@ -
+
diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/PersonContract/ContractSignUploadFrom.html b/modules/bmw/src/main/resources/static/pages/work/Person/PersonContract/ContractSignUploadFrom.html index cbd2be3..4ea71e4 100644 --- a/modules/bmw/src/main/resources/static/pages/work/Person/PersonContract/ContractSignUploadFrom.html +++ b/modules/bmw/src/main/resources/static/pages/work/Person/PersonContract/ContractSignUploadFrom.html @@ -62,10 +62,10 @@
-
+