Commit ca29250634c4ffc343ce4282ddc22f11f81ba10e
1 parent
5d08aa73
更新邮件模块,解决尾期验货日期发送邮件到对应生产科
Showing
4 changed files
with
167 additions
and
63 deletions
src/main/java/com/order/erp/common/constant/Constant.java
@@ -329,5 +329,9 @@ public class Constant { | @@ -329,5 +329,9 @@ public class Constant { | ||
329 | * 缓存导入excel错误信息 redis key | 329 | * 缓存导入excel错误信息 redis key |
330 | */ | 330 | */ |
331 | public static final String EXCEL_IMPORT_ERROR_PREFIX = "excel:import:error:"; | 331 | public static final String EXCEL_IMPORT_ERROR_PREFIX = "excel:import:error:"; |
332 | + /** | ||
333 | + * redis过期时间。 | ||
334 | + */ | ||
335 | + public static final long REDIS_EMAIL_TIME = 90; | ||
332 | 336 | ||
333 | } | 337 | } |
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
1 | package com.order.erp.common.utils; | 1 | package com.order.erp.common.utils; |
2 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 2 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
3 | +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | ||
4 | +import com.order.erp.common.constant.ServerResultCode; | ||
5 | +import com.order.erp.common.exception.BusinessException; | ||
3 | import com.order.erp.domain.EmailTemplateEnum; | 6 | import com.order.erp.domain.EmailTemplateEnum; |
4 | import com.order.erp.domain.email.OrderProductEmailVO; | 7 | import com.order.erp.domain.email.OrderProductEmailVO; |
5 | import com.order.erp.domain.vo.order.OrderEventJobVO; | 8 | import com.order.erp.domain.vo.order.OrderEventJobVO; |
@@ -28,7 +31,7 @@ import java.util.Map; | @@ -28,7 +31,7 @@ import java.util.Map; | ||
28 | @Component | 31 | @Component |
29 | public class EmailSendUtils { | 32 | public class EmailSendUtils { |
30 | @Value("${spring.mail.username}") | 33 | @Value("${spring.mail.username}") |
31 | - public String sendEmail; | 34 | + public String sendEmail; |
32 | @Resource | 35 | @Resource |
33 | private JavaMailSender javaMailSender; | 36 | private JavaMailSender javaMailSender; |
34 | @Resource | 37 | @Resource |
@@ -43,28 +46,35 @@ public class EmailSendUtils { | @@ -43,28 +46,35 @@ public class EmailSendUtils { | ||
43 | * @throws IOException | 46 | * @throws IOException |
44 | */ | 47 | */ |
45 | 48 | ||
46 | - public void sendEmail(EmailTemplateEnum emailTemplateEnum, List<String> receiveemailList, OrderEventJobVO orderEventJobVO) throws MessagingException, IOException, TemplateException { | ||
47 | - MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | ||
48 | - if(CollectionUtils.isNotEmpty(receiveemailList)){ | ||
49 | - MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true); | ||
50 | - //设置邮件的主题 | ||
51 | - helper.setSubject(emailTemplateEnum.getTitle()); | ||
52 | - //设置发件人 | ||
53 | - helper.setFrom(sendEmail); | ||
54 | - //设置收件人 | ||
55 | - String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | ||
56 | - helper.setTo(receiveemailListArray); | ||
57 | - helper.setSentDate(new Date()); | 49 | + public void sendEmail(EmailTemplateEnum emailTemplateEnum, List<String> receiveemailList, OrderEventJobVO orderEventJobVO) { |
50 | + if(CollectionUtils.isEmpty(receiveemailList) && emailTemplateEnum ==null && ObjectUtils.isNull(orderEventJobVO)){ | ||
51 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
52 | + } | ||
53 | + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | ||
54 | + MimeMessageHelper helper= null; | ||
58 | Map<String, Object> map = new HashMap<>(); | 55 | Map<String, Object> map = new HashMap<>(); |
59 | map.put("context",emailTemplateEnum.getContent()); | 56 | map.put("context",emailTemplateEnum.getContent()); |
60 | map.put("title",emailTemplateEnum.getTitle()); | 57 | map.put("title",emailTemplateEnum.getTitle()); |
61 | map.put("data",orderEventJobVO); | 58 | map.put("data",orderEventJobVO); |
62 | - Template template = freeMarkerConfigurer.getConfiguration().getTemplate("mail.ftl"); | ||
63 | - StringWriter stringWriter = new StringWriter(); | ||
64 | - template.process(map,stringWriter); | ||
65 | - helper.setText(stringWriter.toString(),true); | ||
66 | - javaMailSender.send(mimeMessage); | 59 | + Template template = null; |
60 | + //设置收件人 | ||
61 | + String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | ||
62 | + try { | ||
63 | + helper = new MimeMessageHelper(mimeMessage,true); | ||
64 | + //设置邮件的主题 | ||
65 | + helper.setSubject(emailTemplateEnum.getTitle()); | ||
66 | + //设置发件人 | ||
67 | + helper.setFrom(sendEmail); | ||
68 | + helper.setTo(receiveemailListArray); | ||
69 | + helper.setSentDate(new Date()); | ||
70 | + template = freeMarkerConfigurer.getConfiguration().getTemplate("mail.ftl"); | ||
71 | + StringWriter stringWriter = new StringWriter(); | ||
72 | + template.process(map,stringWriter); | ||
73 | + helper.setText(stringWriter.toString(),true); | ||
74 | + } catch (TemplateException | IOException | MessagingException e) { | ||
75 | + throw new RuntimeException("邮件发送失败!"); | ||
67 | } | 76 | } |
77 | + javaMailSender.send(mimeMessage); | ||
68 | } | 78 | } |
69 | /** | 79 | /** |
70 | * @Description: 发送生产指示书邮件 | 80 | * @Description: 发送生产指示书邮件 |
@@ -75,19 +85,27 @@ public class EmailSendUtils { | @@ -75,19 +85,27 @@ public class EmailSendUtils { | ||
75 | * @throws IOException | 85 | * @throws IOException |
76 | */ | 86 | */ |
77 | //生产指示书以附件方式发送。 | 87 | //生产指示书以附件方式发送。 |
78 | - public void sendEmail(EmailTemplateEnum emailTemplateEnum, List<String> receiveemailList, File pdfFile) throws MessagingException { | ||
79 | - MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | ||
80 | - MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true); | ||
81 | - //设置邮件的主题 | ||
82 | - helper.setSubject(emailTemplateEnum.getTitle()); | ||
83 | - //设置发件人 | ||
84 | - helper.setFrom(sendEmail); | ||
85 | - //设置收件人 | ||
86 | - String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | ||
87 | - helper.setTo(receiveemailListArray); | ||
88 | - helper.setSentDate(new Date()); | ||
89 | - helper.setText(emailTemplateEnum.getContent()); | ||
90 | - helper.addAttachment(pdfFile.getName(),pdfFile); | ||
91 | - javaMailSender.send(mimeMessage); | ||
92 | - } | 88 | + public void sendEmail(EmailTemplateEnum emailTemplateEnum, List<String> receiveemailList, File pdfFile) { |
89 | + if (CollectionUtils.isEmpty(receiveemailList) && emailTemplateEnum == null && ObjectUtils.isNull(pdfFile)) { | ||
90 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
91 | + } | ||
92 | + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | ||
93 | + //设置收件人 | ||
94 | + String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | ||
95 | + MimeMessageHelper helper = null; | ||
96 | + try { | ||
97 | + helper = new MimeMessageHelper(mimeMessage, true); | ||
98 | + //设置邮件的主题 | ||
99 | + helper.setSubject(emailTemplateEnum.getTitle()); | ||
100 | + //设置发件人 | ||
101 | + helper.setFrom(sendEmail); | ||
102 | + helper.setTo(receiveemailListArray); | ||
103 | + helper.setSentDate(new Date()); | ||
104 | + helper.setText(emailTemplateEnum.getContent()); | ||
105 | + helper.addAttachment(pdfFile.getName(), pdfFile); | ||
106 | + } catch (MessagingException e) { | ||
107 | + throw new RuntimeException("邮件发送失败!"); | ||
108 | + } | ||
109 | + javaMailSender.send(mimeMessage); | ||
110 | + } | ||
93 | } | 111 | } |
94 | \ No newline at end of file | 112 | \ No newline at end of file |
src/main/java/com/order/erp/job/OrderOverTimeEventJob.java
@@ -8,11 +8,14 @@ import com.order.erp.common.constant.Constant; | @@ -8,11 +8,14 @@ import com.order.erp.common.constant.Constant; | ||
8 | import com.order.erp.common.utils.*; | 8 | import com.order.erp.common.utils.*; |
9 | import com.order.erp.domain.EmailTemplateEnum; | 9 | import com.order.erp.domain.EmailTemplateEnum; |
10 | import com.order.erp.domain.OrderEventEnum; | 10 | import com.order.erp.domain.OrderEventEnum; |
11 | +import com.order.erp.domain.dto.BaseDO; | ||
12 | +import com.order.erp.domain.dto.admin.AdminUserDO; | ||
11 | import com.order.erp.domain.dto.order.OrderBaseInfoDO; | 13 | import com.order.erp.domain.dto.order.OrderBaseInfoDO; |
12 | import com.order.erp.domain.dto.order.OrderInspectionStageDO; | 14 | import com.order.erp.domain.dto.order.OrderInspectionStageDO; |
13 | import com.order.erp.domain.dto.order.OrderTrackStageDO; | 15 | import com.order.erp.domain.dto.order.OrderTrackStageDO; |
14 | import com.order.erp.domain.dto.order.ReceiveEmailMappingDO; | 16 | import com.order.erp.domain.dto.order.ReceiveEmailMappingDO; |
15 | import com.order.erp.domain.vo.order.*; | 17 | import com.order.erp.domain.vo.order.*; |
18 | +import com.order.erp.service.admin.AdminUserService; | ||
16 | import com.order.erp.service.order.*; | 19 | import com.order.erp.service.order.*; |
17 | import freemarker.template.TemplateException; | 20 | import freemarker.template.TemplateException; |
18 | import lombok.extern.slf4j.Slf4j; | 21 | import lombok.extern.slf4j.Slf4j; |
@@ -71,6 +74,9 @@ public class OrderOverTimeEventJob { | @@ -71,6 +74,9 @@ public class OrderOverTimeEventJob { | ||
71 | @Resource | 74 | @Resource |
72 | private RedisUtils redisUtils; | 75 | private RedisUtils redisUtils; |
73 | 76 | ||
77 | + @Resource | ||
78 | + private AdminUserService adminUserService; | ||
79 | + | ||
74 | /** | 80 | /** |
75 | * 凌晨1点执行,一天一次 | 81 | * 凌晨1点执行,一天一次 |
76 | */ | 82 | */ |
@@ -98,48 +104,80 @@ public class OrderOverTimeEventJob { | @@ -98,48 +104,80 @@ public class OrderOverTimeEventJob { | ||
98 | * @param eventJobVOS | 104 | * @param eventJobVOS |
99 | */ | 105 | */ |
100 | //发送邮件。 | 106 | //发送邮件。 |
101 | - private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) throws MessagingException, TemplateException, IOException { | 107 | + private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) { |
102 | 108 | ||
103 | - HashSet<String> strings = new HashSet<>(); | 109 | + HashSet<String> customerCodeList = new HashSet<>(); |
104 | for (OrderEventJobVO orderEventJob : eventJobVOS) { | 110 | for (OrderEventJobVO orderEventJob : eventJobVOS) { |
105 | if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate( | 111 | if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate( |
106 | eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId())) { | 112 | eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId())) { |
107 | - strings.add(orderEventJob.getBaseInfo().getCustomerCode()); | 113 | + customerCodeList.add(orderEventJob.getBaseInfo().getCustomerCode()); |
108 | } | 114 | } |
109 | } | 115 | } |
110 | LambdaQueryWrapper<ReceiveEmailMappingDO> queryWrapper = new LambdaQueryWrapper<>(); | 116 | LambdaQueryWrapper<ReceiveEmailMappingDO> queryWrapper = new LambdaQueryWrapper<>(); |
111 | queryWrapper.eq(ReceiveEmailMappingDO::getEnableFlag, Constant.ENABLE_TEN); | 117 | queryWrapper.eq(ReceiveEmailMappingDO::getEnableFlag, Constant.ENABLE_TEN); |
112 | - if (strings == null || strings.isEmpty()) { | 118 | + if (CollectionUtils.isEmpty(customerCodeList)) { |
113 | queryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, ""); | 119 | queryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, ""); |
114 | } else { | 120 | } else { |
115 | - queryWrapper.in(ReceiveEmailMappingDO::getTypeValue, strings); | 121 | + queryWrapper.in(ReceiveEmailMappingDO::getTypeValue, customerCodeList); |
116 | } | 122 | } |
117 | - queryWrapper.apply("JSON_CONTAINS(JSON_EXTRACT(config_infos,'$[*].event'),JSON_QUOTE({0}),'$')", eventEnum.getEvent()); | ||
118 | - List<ReceiveEmailMappingDO> receiveEmailMappingDOList = receiveEmailMappingService.list(queryWrapper); | 123 | +// queryWrapper.apply("JSON_CONTAINS(JSON_EXTRACT(config_infos,'$[*].event'),JSON_QUOTE({0}),'$')", eventEnum.getEvent()); |
119 | 124 | ||
120 | - Set<Map<String, List<String>>> set = receiveEmailMappingDOList.stream().map(x -> { | ||
121 | - Map<String, List<String>> map = new HashMap<>(); | ||
122 | - String customerCode = x.getTypeValue(); | ||
123 | -// ReceiveEmailConfigItemVO receiveEmailConfigItemVO = JSON.parseObject(x.getConfigInfos(), ReceiveEmailConfigItemVO.class); | ||
124 | - List<ReceiveEmailConfigItemVO> receiveEmailConfigItemVOList = JSON.parseObject( | ||
125 | - x.getConfigInfos(), new TypeReference<List<ReceiveEmailConfigItemVO>>() { | 125 | + List<ReceiveEmailMappingDO> receiveEmailMappingDOList = receiveEmailMappingService.list(queryWrapper); |
126 | + List<ReceiveEmailMappingDO> receiveEmailMappingDOS = receiveEmailMappingDOList.stream().map(x -> { | ||
127 | + List<ReceiveEmailConfigItemVO> receiveEmailConfigItemVOList = JSON.parseObject(x.getConfigInfos(), new TypeReference<List<ReceiveEmailConfigItemVO>>() { | ||
126 | }); | 128 | }); |
127 | - List<String> strings1 = new ArrayList<>(); | ||
128 | - for (ReceiveEmailConfigItemVO item : receiveEmailConfigItemVOList) { | ||
129 | - strings1 = item.getEmails(); | 129 | + for (ReceiveEmailConfigItemVO receiveEmailConfigItemVO : receiveEmailConfigItemVOList) { |
130 | + if (eventEnum.getEvent().equals(receiveEmailConfigItemVO.getEvent())) { | ||
131 | + return x; | ||
132 | + } | ||
133 | + } | ||
134 | + return null; | ||
135 | + }).filter(Objects::nonNull) | ||
136 | + .collect(Collectors.toList()); | ||
137 | + //如果为尾期验货事件的话,需要从订单中的生产科角色中得到邮箱。而不是从邮件配置中得到邮箱。 | ||
138 | + if (OrderEventEnum.END_CHECK_DATE_EVENT.equals(eventEnum)) { | ||
139 | + for (OrderEventJobVO orderEventJob : eventJobVOS) { | ||
140 | + String productionDepartment = orderEventJob.getBaseInfo().getProductionDepartment(); | ||
141 | + //根据订单的生产科得到生产科用户信息。 | ||
142 | + AdminUserDO productionDepartmentUser = adminUserService.getOne(new LambdaQueryWrapper<AdminUserDO>() | ||
143 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
144 | + .eq(AdminUserDO::getUserName, productionDepartment)); | ||
145 | + List<String> productionEmail = Arrays.asList(productionDepartmentUser.getEmail().split("[,,]+")) | ||
146 | + .stream().map(String::trim) | ||
147 | + .collect(Collectors.toList()); | ||
148 | + emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()), | ||
149 | + productionEmail, orderEventJob); | ||
150 | + redisUtils.set(EmailTemplateEnum.byTemplate( | ||
151 | + eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId(), | ||
152 | + orderEventJob, 90, TimeUnit.DAYS); | ||
130 | } | 153 | } |
131 | - List<String> emails = strings1; | ||
132 | - map.put(customerCode, emails); | ||
133 | - return map; | ||
134 | - }).collect(Collectors.toSet()); | ||
135 | - for (OrderEventJobVO orderEventJob : eventJobVOS) { | ||
136 | - for (Map<String, List<String>> map : set) { | ||
137 | - if (orderEventJob.getBaseInfo().getCustomerCode().equals(map.keySet().iterator().next())) { | ||
138 | - emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()), | ||
139 | - map.get(map.keySet().iterator().next()), orderEventJob); | ||
140 | - redisUtils.set(EmailTemplateEnum.byTemplate( | ||
141 | - eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId(), | ||
142 | - orderEventJob, 90, TimeUnit.DAYS); | 154 | + } else { |
155 | + Set<Map<String, List<String>>> set = receiveEmailMappingDOS.stream().map(x -> { | ||
156 | + Map<String, List<String>> map = new HashMap<>(); | ||
157 | + String customerCode = x.getTypeValue(); | ||
158 | +// ReceiveEmailConfigItemVO receiveEmailConfigItemVO = JSON.parseObject(x.getConfigInfos(), ReceiveEmailConfigItemVO.class); | ||
159 | + List<ReceiveEmailConfigItemVO> receiveEmailConfigItemVOList = JSON.parseObject( | ||
160 | + x.getConfigInfos(), new TypeReference<List<ReceiveEmailConfigItemVO>>() { | ||
161 | + }); | ||
162 | + List<String> emailList = new ArrayList<>(); | ||
163 | + for (ReceiveEmailConfigItemVO item : receiveEmailConfigItemVOList) { | ||
164 | + if (eventEnum.getEvent().equals(item.getEvent())) { | ||
165 | + emailList = item.getEmails(); | ||
166 | + } | ||
167 | + } | ||
168 | + List<String> emails = emailList; | ||
169 | + map.put(customerCode, emails); | ||
170 | + return map; | ||
171 | + }).collect(Collectors.toSet()); | ||
172 | + for (OrderEventJobVO orderEventJob : eventJobVOS) { | ||
173 | + for (Map<String, List<String>> map : set) { | ||
174 | + if (orderEventJob.getBaseInfo().getCustomerCode().equals(map.keySet().iterator().next())) { | ||
175 | + emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()), | ||
176 | + map.get(map.keySet().iterator().next()), orderEventJob); | ||
177 | + redisUtils.set(EmailTemplateEnum.byTemplate( | ||
178 | + eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId(), | ||
179 | + orderEventJob, Constant.REDIS_EMAIL_TIME, TimeUnit.DAYS); | ||
180 | + } | ||
143 | } | 181 | } |
144 | } | 182 | } |
145 | } | 183 | } |
src/main/resources/templates/mail.ftl
@@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
34 | <h3>${context}</h3> | 34 | <h3>${context}</h3> |
35 | <table border="1"> | 35 | <table border="1"> |
36 | <tr id="title1"> | 36 | <tr id="title1"> |
37 | - <#if title=="中期验货报告" || title=="尾期验货报告"> | 37 | + <#if title=="中期验货报告"> |
38 | <td> 项目号</td> | 38 | <td> 项目号</td> |
39 | <td> 生产科</td> | 39 | <td> 生产科</td> |
40 | <td> 内部编号</td> | 40 | <td> 内部编号</td> |
@@ -42,12 +42,34 @@ | @@ -42,12 +42,34 @@ | ||
42 | <td> 客户SYSTEM</td> | 42 | <td> 客户SYSTEM</td> |
43 | <td> PO COLOR</td> | 43 | <td> PO COLOR</td> |
44 | <td> 订单图片</td> | 44 | <td> 订单图片</td> |
45 | + <td> 生产要求</td> | ||
45 | <td> 数量 </td> | 46 | <td> 数量 </td> |
46 | <td> 生产科拖货时间</td> | 47 | <td> 生产科拖货时间</td> |
47 | <td> 包装类型</td> | 48 | <td> 包装类型</td> |
48 | <td> 中期验货申请时间</td> | 49 | <td> 中期验货申请时间</td> |
49 | <td> 中期验货(功能性-拉力/跌落等、外观性-颜色/规格等、耐力性-烤厅等)</td> | 50 | <td> 中期验货(功能性-拉力/跌落等、外观性-颜色/规格等、耐力性-烤厅等)</td> |
50 | <td> 中期验货结果PASS/FALL</td> | 51 | <td> 中期验货结果PASS/FALL</td> |
52 | + <#elseif title=="尾期验货报告"> | ||
53 | + <td> 项目号</td> | ||
54 | + <td> 生产科</td> | ||
55 | + <td> 内部编号</td> | ||
56 | + <td> 客户PO号</td> | ||
57 | + <td> 客户SYSTEM</td> | ||
58 | + <td> PO COLOR</td> | ||
59 | + <td> 订单图片</td> | ||
60 | + <td> 生产要求</td> | ||
61 | + <td> 数量 </td> | ||
62 | + <td> 生产科拖货时间</td> | ||
63 | + <td> 包装类型</td> | ||
64 | + <td> 尾期验货申请时间</td> | ||
65 | + <td> 长度/规格 </td> | ||
66 | + <td> 功能性不良</td> | ||
67 | + <td> 电镀不良 </td> | ||
68 | + <td> 不良1 </td> | ||
69 | + <td> 不良2 </td> | ||
70 | + <td> 不良3 </td> | ||
71 | + <td> 包装:卡片、条码、箱贴、箱单 </td> | ||
72 | + <td> 中期验货结果PASS/FALL </td> | ||
51 | <#elseif title=="尾期验货日期"> | 73 | <#elseif title=="尾期验货日期"> |
52 | <td> 客户编码</td> | 74 | <td> 客户编码</td> |
53 | <td> 项目号</td> | 75 | <td> 项目号</td> |
@@ -77,7 +99,7 @@ | @@ -77,7 +99,7 @@ | ||
77 | </#if> | 99 | </#if> |
78 | </tr> | 100 | </tr> |
79 | <tr id="title2"> | 101 | <tr id="title2"> |
80 | - <#if title=="中期验货报告" || title=="尾期验货报告"> | 102 | + <#if title=="中期验货报告" > |
81 | <td>${data.baseInfo.projectNo! " "}</td> | 103 | <td>${data.baseInfo.projectNo! " "}</td> |
82 | <td>${data.baseInfo.productionDepartment! " "}</td> | 104 | <td>${data.baseInfo.productionDepartment! " "}</td> |
83 | <td>${data.baseInfo.internalNo! " "}</td> | 105 | <td>${data.baseInfo.internalNo! " "}</td> |
@@ -85,12 +107,34 @@ | @@ -85,12 +107,34 @@ | ||
85 | <td>${data.baseInfo.customerStyle! " "}</td> | 107 | <td>${data.baseInfo.customerStyle! " "}</td> |
86 | <td>${data.baseInfo.poColor! " "}</td> | 108 | <td>${data.baseInfo.poColor! " "}</td> |
87 | <td><img src="${data.baseInfo.smallPicUrl! " "}" alt="Image"></td> | 109 | <td><img src="${data.baseInfo.smallPicUrl! " "}" alt="Image"></td> |
110 | + <td>${data.baseInfo.productionComment! " "}</td> | ||
88 | <td>${data.baseInfo.orderCount! " "}</td> | 111 | <td>${data.baseInfo.orderCount! " "}</td> |
89 | <td>${data.baseInfo.productionDepartmentConsignTime! " "}</td> | 112 | <td>${data.baseInfo.productionDepartmentConsignTime! " "}</td> |
90 | <td>${data.baseInfo.packetType! " "}</td> | 113 | <td>${data.baseInfo.packetType! " "}</td> |
91 | <td>${data.inspectionStageInfo.midCheckApplyTime! " "}</td> | 114 | <td>${data.inspectionStageInfo.midCheckApplyTime! " "}</td> |
92 | <td>${data.inspectionStageInfo.midCheckComment! " "}</td> | 115 | <td>${data.inspectionStageInfo.midCheckComment! " "}</td> |
93 | <td>${data.inspectionStageInfo.midCheckResult! " "}</td> | 116 | <td>${data.inspectionStageInfo.midCheckResult! " "}</td> |
117 | + <#elseif title=="尾期验货报告"> | ||
118 | + <td>${data.baseInfo.projectNo! " "}</td> | ||
119 | + <td>${data.baseInfo.productionDepartment! " "}</td> | ||
120 | + <td>${data.baseInfo.internalNo! " "}</td> | ||
121 | + <td>${data.baseInfo.customerPo! " "}</td> | ||
122 | + <td>${data.baseInfo.customerStyle! " "}</td> | ||
123 | + <td>${data.baseInfo.poColor! " "}</td> | ||
124 | + <td><img src="${data.baseInfo.smallPicUrl! " "}" alt="Image"></td> | ||
125 | + <td>${data.baseInfo.productionComment! " "}</td> | ||
126 | + <td>${data.baseInfo.orderCount! " "}</td> | ||
127 | + <td>${data.baseInfo.productionDepartmentConsignTime! " "}</td> | ||
128 | + <td>${data.baseInfo.packetType! " "}</td> | ||
129 | + <td> ${data.inspectionStageInfo.endCheckApplyTime! " "}</td> | ||
130 | + <td> ${data.inspectionStageInfo.specification! " "} </td> | ||
131 | + <td> ${data.inspectionStageInfo.functionality! " "}</td> | ||
132 | + <td> ${data.inspectionStageInfo.electroplate! " "} </td> | ||
133 | + <td> ${data.inspectionStageInfo.value1! " "}</td> | ||
134 | + <td> ${data.inspectionStageInfo.value2! " "}</td> | ||
135 | + <td> ${data.inspectionStageInfo.value3! " "}</td> | ||
136 | + <td> ${data.inspectionStageInfo.boxPacket! " "} </td> | ||
137 | + <td> ${data.inspectionStageInfo.endCheckResult! " "} </td> | ||
94 | <#elseif title=="尾期验货日期"> | 138 | <#elseif title=="尾期验货日期"> |
95 | <td>${data.baseInfo.customerCode! " "}</td> | 139 | <td>${data.baseInfo.customerCode! " "}</td> |
96 | <td>${data.baseInfo.projectNo! " "}</td> | 140 | <td>${data.baseInfo.projectNo! " "}</td> |