Browse Source

2024.10.29 审批业务类型

java8
yuejiayang 1 year ago
parent
commit
111dc20ab3
  1. 2
      src/main/java/com/xujie/sys/modules/pms/mapper/EamProjectMapper.java
  2. 163
      src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java
  3. 3
      src/main/resources/application-dev.yml
  4. 64
      src/main/resources/mapper/pms/EamProjectMapper.xml

2
src/main/java/com/xujie/sys/modules/pms/mapper/EamProjectMapper.java

@ -121,4 +121,6 @@ public interface EamProjectMapper {
List<ProofDocumentData> getAutoSendMailAddress(String site);
IPage<SysOssEntity> searchSopFileList(Page<SysOssEntity> sysOssEntityPage,@Param("query") SysOssEntity inData);
List<ProofingInformationData> getEmailsByUsernames(@Param("usernames")List<String> userNames, @Param("site") String site);
}

163
src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java

@ -431,7 +431,7 @@ public class EamProjectServiceImpl implements EamProjectService {
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void sendMailHandle(ProofingInformationData inData) throws MessagingException, UnsupportedEncodingException {
// 创建一个用于区分邮件类型的标识符
String type;
String type = null;
// 创建 SimpleDateFormat 对象并设置目标格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
@ -454,67 +454,126 @@ public class EamProjectServiceImpl implements EamProjectService {
return;
}
} else {
emailAddress = EamProjectMapper.getSendMassProductionMailAddress(inData);
if (!emailAddress.isEmpty()) {
type = "项目物料立项";
s.append("<li>你有一个新的项目物料立项,需要上传转量产文件 - 项目编码:" + emailAddress.get(0).getProjectNo() + " 名称:" +
emailAddress.get(0).getProjectDesc() + "</li>");
if (Objects.equals(inData.getStatus(), "进行中")) {
String r1 = null;
String r2 = null;
String r3 = null;
String r4 = null;
String r5 = null;
String r6 = null;
String r7 = null;
String r8 = null;
String r9 = null;
List<String> userNames = new ArrayList<>();
r1 = inData.getcManufactureEngineer().split("-")[0];
r2 = inData.getcQualityEngineer1().split("-")[0];
r3 = inData.getcQualityEngineer2().split("-")[0];
r4 = inData.getcQualityEngineer3().split("-")[0];
r9 = inData.getEngineer().split("-")[0];
userNames.add(r1);
userNames.add(r2);
userNames.add(r3);
userNames.add(r4);
userNames.add(r9);
if (inData.getcQualityEngineer4() != null && !inData.getcQualityEngineer4().equals("")){
r5 = inData.getcQualityEngineer4().split("-")[0];
userNames.add(r5);
}
if (inData.getcQualityEngineer5() != null && !inData.getcQualityEngineer5().equals("")){
r6 = inData.getcQualityEngineer5().split("-")[0];
userNames.add(r6);
}
if (inData.getcQualityEngineer6() != null && !inData.getcQualityEngineer6().equals("")){
r7 = inData.getcQualityEngineer6().split("-")[0];
userNames.add(r7);
}
if (inData.getDocEngineer() != null && !inData.getDocEngineer().equals("")){
r8 = inData.getDocEngineer().split("-")[0];
userNames.add(r8);
}
// 将所有username存储在一个集合中
emailAddress = EamProjectMapper.getEmailsByUsernames(userNames, inData.getSite());
if (!emailAddress.isEmpty()) {
type = "项目物料立项";
s.append("<li>你有一个新的项目物料立项 - 项目编码:" + inData.getProjectNo() + " 名称:" +
inData.getProjectDesc() + " 项目分类:" + inData.getProjectCategory() + " 优先级:" + inData.getPriority() + " 预计完成日期:" + formatter.format(inData.getNeedDate()) + "</li>");
} else {
// 退出整个方法
return;
}
} else if (Objects.equals(inData.getStatus(), "已量产")) {
emailAddress = EamProjectMapper.getSendMassProductionMailAddress(inData);
if (!emailAddress.isEmpty()) {
type = "项目物料转量产";
s.append("<li>你有一个新的项目物料转量产,需要上传转量产文件 - 项目编码:" + emailAddress.get(0).getProjectNo() + " 名称:" +
emailAddress.get(0).getProjectDesc() + "</li>");
} else {
// 退出整个方法
return;
}
} else {
// 退出整个方法
return;
}
}
// 邮件内容模板
s.append("<table style='border-collapse: collapse; width: 100%;'>");
s.append("<tr style='background-color: #f2f2f2;'>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目编码</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目名称</th>");
if (Objects.equals(type, "打样订单")) {
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>样品单号</th>");
}
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目分类</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>优先级</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目阶段</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>预计完成日期</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>待上传文档</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>文档负责人</th>");
s.append("</tr>");
// 遍历 emailAddress
Integer lastProjectId = null;
for (ProofingInformationData proofingInformationData : emailAddress) {// 判断如果与上一个email的project_id不同
if (!Objects.equals(lastProjectId, proofingInformationData.getProjectId())) {
lastProjectId = proofingInformationData.getProjectId();
s.append("<tr>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectNo()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectDesc()).append("</td>");
if (Objects.equals(type, "打样订单")) {
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProofingNo()).append("</td>");
}
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectCategory()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getPriority()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>").append(proofingInformationData.getStatus()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>").append(formatter.format(proofingInformationData.getDueDate())).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getDocumentType()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getUserDisplay()).append("</td>");
s.append("</tr>");
} else {
s.append("<tr>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
if (Objects.equals(type, "打样订单")) {
if (!Objects.equals(type, "项目物料立项")) {
s.append("<table style='border-collapse: collapse; width: 100%;'>");
s.append("<tr style='background-color: #f2f2f2;'>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目编码</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目名称</th>");
if (Objects.equals(type, "打样订单")) {
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>样品单号</th>");
}
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目分类</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>优先级</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>项目阶段</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>预计完成日期</th>");
if (!Objects.equals(type, "项目物料立项")) {
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>待上传文档</th>");
s.append("<th style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>文档负责人</th>");
}
s.append("</tr>");
// 遍历 emailAddress
Integer lastProjectId = null;
for (ProofingInformationData proofingInformationData : emailAddress) {// 判断如果与上一个email的project_id不同
if (!Objects.equals(lastProjectId, proofingInformationData.getProjectId())) {
lastProjectId = proofingInformationData.getProjectId();
s.append("<tr>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectNo()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectDesc()).append("</td>");
if (Objects.equals(type, "打样订单")) {
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProofingNo()).append("</td>");
}
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getProjectCategory()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getPriority()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>").append(proofingInformationData.getStatus()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; text-align: center; padding: 8px;'>").append(formatter.format(proofingInformationData.getDueDate())).append("</td>");
if (!Objects.equals(type, "项目物料立项")) {
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getDocumentType()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getUserDisplay()).append("</td>");
}
s.append("</tr>");
} else {
s.append("<tr>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
if (Objects.equals(type, "打样订单")) {
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
}
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
if (!Objects.equals(type, "项目物料立项")) {
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getDocumentType()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getUserDisplay()).append("</td>");
}
s.append("</tr>");
}
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'></td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getDocumentType()).append("</td>");
s.append("<td style='border: 1px solid #dddddd; padding: 8px;'>").append(proofingInformationData.getUserDisplay()).append("</td>");
s.append("</tr>");
}
s.append("</table>");
}
s.append("</table>");
s.append("</ol>");
//设置邮件内容
String text = "<!DOCTYPE>" +

3
src/main/resources/application-dev.yml

@ -53,8 +53,7 @@ task:
# sendEmail: 0 0/5 * * * ? #每5分钟执行一次
# sendEmail: 0 30 12 1/15 * ? #每15天的中午12:30执行一次
#发送邮件,每周一到周五中午12点执行一次
# sendEmail: 0 0 12 ? * MON-FRI
sendEmail: 0 0 12 ? * MON-FRI
#--------------------------------------------接口地址和开关控制-------------------------------------------------
toacc:

64
src/main/resources/mapper/pms/EamProjectMapper.xml

@ -290,33 +290,33 @@
FROM plm_project_document_confirm as a
WHERE a.site = #{site} and a.Order_Ref1 = #{orderRef1} and a.document_type = '产品文档' and a.Order_Ref2 = #{orderRef2}
</select>
<!-- &#45;&#45; SELECT-->
<!-- &#45;&#45; (SELECT TOP 1 proofing_no FROM plm_proofing_information WHERE project_id = ppi.project_id and test_part_id = ppi.id) AS proofing_no,-->
<!-- &#45;&#45; ppi.id AS project_part_id,-->
<!-- &#45;&#45; ppi.project_id,-->
<!-- &#45;&#45; STUFF(-->
<!-- &#45;&#45; COALESCE(-->
<!-- &#45;&#45; CASE WHEN pu1.email IS NOT NULL AND pu1.email != '' THEN ';' + pu1.email ELSE '' END +-->
<!-- &#45;&#45; CASE WHEN pu2.email IS NOT NULL AND pu2.email != '' THEN ';' + pu2.email ELSE '' END +-->
<!-- &#45;&#45; CASE WHEN pu3.email IS NOT NULL AND pu3.email != '' THEN ';' + pu3.email ELSE '' END +-->
<!-- &#45;&#45; CASE WHEN pu4.email IS NOT NULL AND pu4.email != '' THEN ';' + pu4.email ELSE '' END +-->
<!-- &#45;&#45; CASE WHEN pu5.email IS NOT NULL AND pu5.email != '' THEN ';' + pu5.email ELSE '' END +-->
<!-- &#45;&#45; CASE WHEN pu6.email IS NOT NULL AND pu6.email != '' THEN ';' + pu6.email ELSE '' END,-->
<!-- &#45;&#45; ''-->
<!-- &#45;&#45; ),-->
<!-- &#45;&#45; 1, 1, ''-->
<!-- &#45;&#45; ) AS email-->
<!-- &#45;&#45; FROM-->
<!-- &#45;&#45; plm_project_part ppi-->
<!-- &#45;&#45; LEFT JOIN sys_user pu1 ON LEFT ( ppi.c_quality_engineer1, CHARINDEX( '-', ppi.c_quality_engineer1 ) - 1 ) = pu1.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu2 ON LEFT ( ppi.c_quality_engineer2, CHARINDEX( '-', ppi.c_quality_engineer2 ) - 1 ) = pu2.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu3 ON LEFT ( ppi.c_quality_engineer3, CHARINDEX( '-', ppi.c_quality_engineer3 ) - 1 ) = pu3.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu7 ON LEFT ( ppi.c_quality_engineer4, CHARINDEX( '-', ppi.c_quality_engineer4 ) - 1 ) = pu7.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu4 ON LEFT ( ppi.c_manufacture_engineer, CHARINDEX( '-', ppi.c_manufacture_engineer ) - 1 ) = pu4.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu5 ON LEFT ( ppi.engineer, CHARINDEX( '-', ppi.engineer ) - 1 ) = pu5.username-->
<!-- &#45;&#45; LEFT JOIN sys_user pu6 ON LEFT ( ppi.doc_engineer, CHARINDEX( '-', ppi.doc_engineer ) - 1 ) = pu6.username-->
<!-- &#45;&#45; WHERE-->
<!-- &#45;&#45; ppi.id = #{projectPartId}-->
<!-- SELECT-->
<!-- (SELECT TOP 1 proofing_no FROM plm_proofing_information WHERE project_id = ppi.project_id and test_part_id = ppi.id) AS proofing_no,-->
<!-- ppi.id AS project_part_id,-->
<!-- ppi.project_id,-->
<!-- STUFF(-->
<!-- COALESCE(-->
<!-- CASE WHEN pu1.email IS NOT NULL AND pu1.email != '' THEN ';' + pu1.email ELSE '' END +-->
<!-- CASE WHEN pu2.email IS NOT NULL AND pu2.email != '' THEN ';' + pu2.email ELSE '' END +-->
<!-- CASE WHEN pu3.email IS NOT NULL AND pu3.email != '' THEN ';' + pu3.email ELSE '' END +-->
<!-- CASE WHEN pu4.email IS NOT NULL AND pu4.email != '' THEN ';' + pu4.email ELSE '' END +-->
<!-- CASE WHEN pu5.email IS NOT NULL AND pu5.email != '' THEN ';' + pu5.email ELSE '' END +-->
<!-- CASE WHEN pu6.email IS NOT NULL AND pu6.email != '' THEN ';' + pu6.email ELSE '' END,-->
<!-- ''-->
<!-- ),-->
<!-- 1, 1, ''-->
<!-- ) AS email-->
<!-- FROM-->
<!-- plm_project_part ppi-->
<!-- LEFT JOIN sys_user pu1 ON LEFT ( ppi.c_quality_engineer1, CHARINDEX( '-', ppi.c_quality_engineer1 ) - 1 ) = pu1.username-->
<!-- LEFT JOIN sys_user pu2 ON LEFT ( ppi.c_quality_engineer2, CHARINDEX( '-', ppi.c_quality_engineer2 ) - 1 ) = pu2.username-->
<!-- LEFT JOIN sys_user pu3 ON LEFT ( ppi.c_quality_engineer3, CHARINDEX( '-', ppi.c_quality_engineer3 ) - 1 ) = pu3.username-->
<!-- LEFT JOIN sys_user pu7 ON LEFT ( ppi.c_quality_engineer4, CHARINDEX( '-', ppi.c_quality_engineer4 ) - 1 ) = pu7.username-->
<!-- LEFT JOIN sys_user pu4 ON LEFT ( ppi.c_manufacture_engineer, CHARINDEX( '-', ppi.c_manufacture_engineer ) - 1 ) = pu4.username-->
<!-- LEFT JOIN sys_user pu5 ON LEFT ( ppi.engineer, CHARINDEX( '-', ppi.engineer ) - 1 ) = pu5.username-->
<!-- LEFT JOIN sys_user pu6 ON LEFT ( ppi.doc_engineer, CHARINDEX( '-', ppi.doc_engineer ) - 1 ) = pu6.username-->
<!-- WHERE-->
<!-- ppi.id = #{projectPartId}-->
<select id="getSendMailAddress" statementType="CALLABLE" resultType="com.xujie.sys.modules.pms.data.ProofingInformationData">
{call plm_get_to_email_list_proofing(
#{site, mode=IN, jdbcType=VARCHAR},
@ -560,6 +560,16 @@
</if>
</where>
</select>
<select id="getEmailsByUsernames" resultType="com.xujie.sys.modules.pms.data.ProofingInformationData">
SELECT email
FROM sys_user
WHERE site = #{site}
AND username IN
<foreach item="username" collection="usernames" open="(" separator="," close=")">
#{username}
</foreach>
</select>
<insert id="saveNewProjectPart" useGeneratedKeys="true" keyProperty="projectPartId">
INSERT INTO plm_project_part (
site,

Loading…
Cancel
Save