Commit b91814d480eee3f0440abe8e4a93b1246ef781b0

Authored by chenhang4442024
1 parent fd3c0b52

fix:1.审核通过之后,也需要给财务发送邮件。

2.对于质检信息,跟单信息遇到相同的style号的订单采用填写任何一个订单,会自动把相同style号的订单的跟单和质检信息复制过去,无需填写多个。  产生的问题:扫描最近三个月的订单,要是扫描不到就会产生查询不到数据的错误, 更新之后,要是扫描不到,就
    只对于当前修改的订单进行更新,不对于其它相同style的订单进行跟单或者质检信息的复制。
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
@@ -12,6 +12,7 @@ import com.order.erp.domain.dto.admin.AdminUserDO; @@ -12,6 +12,7 @@ import com.order.erp.domain.dto.admin.AdminUserDO;
12 import com.order.erp.domain.dto.admin.AdminUserRoleDO; 12 import com.order.erp.domain.dto.admin.AdminUserRoleDO;
13 import com.order.erp.domain.dto.order.InvoiceBillOrderDO; 13 import com.order.erp.domain.dto.order.InvoiceBillOrderDO;
14 import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; 14 import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO;
  15 +//import com.order.erp.domain.vo.order.DeductionUrlFieldVO;
15 import com.order.erp.domain.vo.order.FinanceEventJobVO; 16 import com.order.erp.domain.vo.order.FinanceEventJobVO;
16 import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO; 17 import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO;
17 import com.order.erp.domain.vo.order.OrderEventJobVO; 18 import com.order.erp.domain.vo.order.OrderEventJobVO;
@@ -312,7 +313,9 @@ public class EmailSendUtils { @@ -312,7 +313,9 @@ public class EmailSendUtils {
312 .toArray(String[]::new); // 转换为 String[] 数组 313 .toArray(String[]::new); // 转换为 String[] 数组
313 } 314 }
314 invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo(); 315 invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo();
315 - }else{ 316 + }
  317 +// else if(invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO()!=null){
  318 + else {
316 ProducePaymentCheckBillOrderDO checkBillOrderDO = invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO(); 319 ProducePaymentCheckBillOrderDO checkBillOrderDO = invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO();
317 Set<Long> userIds = null; 320 Set<Long> userIds = null;
318 //得到跟单员和业务员和财务。 321 //得到跟单员和业务员和财务。
@@ -329,10 +332,46 @@ public class EmailSendUtils { @@ -329,10 +332,46 @@ public class EmailSendUtils {
329 queryWrapper.or().in(AdminUserDO::getId,userIds); 332 queryWrapper.or().in(AdminUserDO::getId,userIds);
330 } 333 }
331 List<AdminUserDO> adminUserDOList = adminUserService.list(queryWrapper); 334 List<AdminUserDO> adminUserDOList = adminUserService.list(queryWrapper);
332 - email = adminUserDOList.stream().map(AdminUserDO::getEmail).filter(Objects::nonNull).flatMap(emails -> Arrays.asList(emails.split("[,,]+")) 335 + List<AdminUserDO> distinctUserList = adminUserDOList.stream()
  336 + .collect(Collectors.toMap(AdminUserDO::getUserName, user -> user, (existing, replacement) -> existing))
  337 + .values()
  338 + .stream()
  339 + .collect(Collectors.toList());
  340 +
  341 + email = distinctUserList.stream().map(AdminUserDO::getEmail).filter(Objects::nonNull).flatMap(emails -> Arrays.asList(emails.split("[,,]+"))
333 .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new); 342 .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new);
334 invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo(); 343 invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo();
335 - } 344 + }/*else{
  345 + DeductionUrlFieldVO deductionUrlFieldVO = invoiceAndCheckBillSendEmailVO.getDeductionUrlFieldVO();
  346 + Set<Long> userIds = null;
  347 + //得到跟单员和业务员和财务。
  348 + if(isTrue){
  349 + List<AdminUserRoleDO> list = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>()
  350 + .eq(AdminUserRoleDO::getRoleId, Constant.SEVEN));
  351 + userIds= list.stream().map(AdminUserRoleDO::getUserId).collect(Collectors.toSet());
  352 + }
  353 + LambdaQueryWrapper<AdminUserDO> queryWrapper = new LambdaQueryWrapper<AdminUserDO>()
  354 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  355 + .and(wrapper -> wrapper
  356 + .in(AdminUserDO::getUserName, Arrays.asList(deductionUrlFieldVO.getTrackerUser(), deductionUrlFieldVO.getBusinesPerson())));
  357 + if(CollectionUtils.isNotEmpty(userIds)){
  358 + queryWrapper.or().in(AdminUserDO::getId,userIds);
  359 + }
  360 + List<AdminUserDO> adminUserDOList = adminUserService.list(queryWrapper);
  361 + List<AdminUserDO> distinctUserList = adminUserDOList.stream()
  362 + .collect(Collectors.toMap(AdminUserDO::getUserName, user -> user, (existing, replacement) -> existing))
  363 + .values()
  364 + .stream()
  365 + .collect(Collectors.toList());
  366 +
  367 + email = distinctUserList.stream().map(AdminUserDO::getEmail).filter(Objects::nonNull).flatMap(emails -> Arrays.asList(emails.split("[,,]+"))
  368 + .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new);
  369 + if(StringUtils.isEmpty(deductionUrlFieldVO.getCheckNo())){
  370 + invoiceNoOrCheckNo=deductionUrlFieldVO.getInvoiceNo();
  371 + }else{
  372 + invoiceNoOrCheckNo=deductionUrlFieldVO.getCheckNo();
  373 + }
  374 + }*/
336 if(Objects.nonNull(email)){ 375 if(Objects.nonNull(email)){
337 try { 376 try {
338 helper = new MimeMessageHelper(mimeMessage); 377 helper = new MimeMessageHelper(mimeMessage);
src/main/java/com/order/erp/mapper/order/OrderBaseInfoMapper.java
@@ -64,5 +64,12 @@ public interface OrderBaseInfoMapper extends BaseMapper&lt;OrderBaseInfoDO&gt; { @@ -64,5 +64,12 @@ public interface OrderBaseInfoMapper extends BaseMapper&lt;OrderBaseInfoDO&gt; {
64 long countAllDayvalueByOrderStatus(Integer orderStatus, LocalDate startDate, LocalDate endDate); 64 long countAllDayvalueByOrderStatus(Integer orderStatus, LocalDate startDate, LocalDate endDate);
65 @Select("SELECT count(*) AS count FROM order_base_info WHERE enable_flag=10 AND create_time >= #{startDate} AND create_time < #{endDate};") 65 @Select("SELECT count(*) AS count FROM order_base_info WHERE enable_flag=10 AND create_time >= #{startDate} AND create_time < #{endDate};")
66 long countRecentDayByOrderInit(LocalDate startDate, LocalDate endDate); 66 long countRecentDayByOrderInit(LocalDate startDate, LocalDate endDate);
  67 + List<OrderBaseInfoDO> sameAttributeOrder(@Param("customerStyle") String customerStyle,
  68 + @Param("innerNo") String innerNo,
  69 + @Param("isReturnOrder") String isReturnOrder,
  70 + @Param("monthsAgo") LocalDateTime monthsAgo,
  71 + @Param("now") LocalDateTime now);
  72 +
  73 +
67 } 74 }
68 75
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -2201,28 +2201,24 @@ end @@ -2201,28 +2201,24 @@ end
2201 redisUtils.set(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText, "1", 90, TimeUnit.DAYS); 2201 redisUtils.set(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText, "1", 90, TimeUnit.DAYS);
2202 } 2202 }
2203 } 2203 }
2204 - //查询最近三个月的数据 2204 + //查询最近四个月的数据。(之前设置三个月太少了!)
2205 private List<OrderBaseInfoDO> getTwoMonthOrderBaseInfo(OrderBaseInfoDO orderBaseInfoDo){ 2205 private List<OrderBaseInfoDO> getTwoMonthOrderBaseInfo(OrderBaseInfoDO orderBaseInfoDo){
2206 LocalDateTime now = LocalDateTime.now(); 2206 LocalDateTime now = LocalDateTime.now();
2207 - LocalDateTime twoMonthsAgo = now.minusMonths(3);  
2208 - LambdaQueryWrapper<OrderBaseInfoDO> orderBaseInfoDOLambdaQueryWrapper; 2207 + LocalDateTime twoMonthsAgo = now.minusMonths(4);
  2208 + List<OrderBaseInfoDO> orderBaseInfoDOList;
2209 //这部分代码的目的是,遇到相同style的订单,他们只需要填写其中任何一个订单的跟单信息,就会填写的跟单信息复制到其他订单上。 2209 //这部分代码的目的是,遇到相同style的订单,他们只需要填写其中任何一个订单的跟单信息,就会填写的跟单信息复制到其他订单上。
2210 if(Constant.STRING_ZERO.equals(orderBaseInfoDo.getReturnOrder())){ 2210 if(Constant.STRING_ZERO.equals(orderBaseInfoDo.getReturnOrder())){
2211 //查询所有相同的style的并且不是返单的订单。 2211 //查询所有相同的style的并且不是返单的订单。
2212 - orderBaseInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)  
2213 - .eq(OrderBaseInfoDO::getCustomerStyle, orderBaseInfoDo.getCustomerStyle())  
2214 - .eq(OrderBaseInfoDO::getInnerNo, orderBaseInfoDo.getInnerNo())  
2215 - .eq(OrderBaseInfoDO::getReturnOrder, Constant.STRING_ZERO)  
2216 - .between(OrderBaseInfoDO::getCreateTime, twoMonthsAgo, now); 2212 + orderBaseInfoDOList = baseMapper.sameAttributeOrder(orderBaseInfoDo.getCustomerStyle(), orderBaseInfoDo.getInnerNo(), Constant.STRING_ZERO, twoMonthsAgo, now);
2217 }else{ 2213 }else{
2218 //查询所有相同的style的并且是返单的订单。 2214 //查询所有相同的style的并且是返单的订单。
2219 - orderBaseInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)  
2220 - .eq(OrderBaseInfoDO::getCustomerStyle, orderBaseInfoDo.getCustomerStyle())  
2221 - .eq(OrderBaseInfoDO::getInnerNo, orderBaseInfoDo.getInnerNo())  
2222 - .eq(OrderBaseInfoDO::getReturnOrder, Constant.STRING_ONE)  
2223 - .between(OrderBaseInfoDO::getCreateTime, twoMonthsAgo, now); 2215 + orderBaseInfoDOList = baseMapper.sameAttributeOrder(orderBaseInfoDo.getCustomerStyle(), orderBaseInfoDo.getInnerNo(), Constant.STRING_ONE, twoMonthsAgo, now);
2224 } 2216 }
2225 - return list(orderBaseInfoDOLambdaQueryWrapper); 2217 + //如果一个都没有查询出来,就说明创建订单时创建质检信息,到现在已经距离四个月了,所以连自己都没有查询出来,这个时候就把自己传过去,避免一个都没有。
  2218 + if(CollectionUtils.isEmpty(orderBaseInfoDOList)){
  2219 + orderBaseInfoDOList.add(orderBaseInfoDo);
  2220 + }
  2221 + return orderBaseInfoDOList;
2226 } 2222 }
2227 2223
2228 private List<OrderOptLogDO> inspectionCopy(OrderBaseInfoDO orderBaseInfoDo,OrderUpdateVO updateVO,Long userId){ 2224 private List<OrderOptLogDO> inspectionCopy(OrderBaseInfoDO orderBaseInfoDo,OrderUpdateVO updateVO,Long userId){
src/main/resources/mapper/OrderBaseInfoMapper.xml
@@ -106,4 +106,31 @@ @@ -106,4 +106,31 @@
106 date; 106 date;
107 </select> 107 </select>
108 108
  109 +
  110 + <select id="sameAttributeOrder" resultType="com.order.erp.domain.dto.order.OrderBaseInfoDO">
  111 + SELECT
  112 + obi.*
  113 + FROM
  114 + order_base_info obi
  115 + JOIN
  116 + order_inspection_stage opa
  117 + ON
  118 + opa.order_id = obi.id
  119 + AND opa.enable_flag = 10
  120 + WHERE
  121 + obi.enable_flag = 10
  122 + AND
  123 + obi.customer_style = #{customerStyle}
  124 + AND
  125 + obi.inner_no = #{innerNo}
  126 + AND
  127 + obi.return_order = #{isReturnOrder}
  128 + AND
  129 + obi.create_time BETWEEN #{monthsAgo} AND #{now}
  130 + AND
  131 + (opa.mid_check_apply_time IS NULL
  132 + OR
  133 + opa.mid_check_result IS NULL)
  134 + </select>
  135 +
109 </mapper> 136 </mapper>