Commit 5212d10a2b68e70552ef0a12824493d5415a1f8e

Authored by 房远帅
1 parent 58ce32a4

楚江ERP:延期发货-消息通知

@@ -117,6 +117,12 @@ public class DelayedShipmentDetail extends BaseEntity implements BaseDto { @@ -117,6 +117,12 @@ public class DelayedShipmentDetail extends BaseEntity implements BaseDto {
117 private String delayReason; 117 private String delayReason;
118 118
119 /** 119 /**
  120 + * 合同创建人
  121 + */
  122 + @TableField(exist = false)
  123 + private String contractCreateById;
  124 +
  125 + /**
120 * 创建人ID 126 * 创建人ID
121 */ 127 */
122 @TableField(fill = FieldFill.INSERT) 128 @TableField(fill = FieldFill.INSERT)
@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
6 import com.lframework.starter.bpm.service.FlowInstanceWrapperService; 6 import com.lframework.starter.bpm.service.FlowInstanceWrapperService;
7 import com.lframework.starter.common.utils.CollectionUtil; 7 import com.lframework.starter.common.utils.CollectionUtil;
8 import com.lframework.starter.common.utils.StringUtil; 8 import com.lframework.starter.common.utils.StringUtil;
  9 +import com.lframework.starter.mq.core.service.MqProducerService;
9 import com.lframework.starter.web.core.components.security.SecurityUtil; 10 import com.lframework.starter.web.core.components.security.SecurityUtil;
10 import com.lframework.starter.web.core.impl.BaseMpServiceImpl; 11 import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
11 import com.lframework.starter.web.core.utils.PageResultUtil;; 12 import com.lframework.starter.web.core.utils.PageResultUtil;;
@@ -20,16 +21,22 @@ import com.lframework.starter.web.core.utils.PageHelperUtil; @@ -20,16 +21,22 @@ import com.lframework.starter.web.core.utils.PageHelperUtil;
20 import com.lframework.starter.common.utils.Assert; 21 import com.lframework.starter.common.utils.Assert;
21 import com.lframework.starter.web.inner.bo.usercenter.UserInfoBo; 22 import com.lframework.starter.web.inner.bo.usercenter.UserInfoBo;
22 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; 23 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  24 +import com.lframework.starter.web.inner.dto.message.SysSiteMessageDto;
23 import com.lframework.starter.web.inner.dto.system.UserInfoDto; 25 import com.lframework.starter.web.inner.dto.system.UserInfoDto;
  26 +import com.lframework.starter.web.inner.entity.SysRole;
  27 +import com.lframework.starter.web.inner.service.system.SysRoleService;
  28 +import com.lframework.starter.web.inner.service.system.SysUserRoleService;
24 import com.lframework.starter.web.inner.service.system.SysUserService; 29 import com.lframework.starter.web.inner.service.system.SysUserService;
25 import com.lframework.xingyun.sc.entity.DelayedShipment; 30 import com.lframework.xingyun.sc.entity.DelayedShipment;
26 import com.lframework.xingyun.sc.entity.DelayedShipmentDetail; 31 import com.lframework.xingyun.sc.entity.DelayedShipmentDetail;
  32 +import com.lframework.xingyun.sc.handlers.TransactorHandler;
27 import com.lframework.xingyun.sc.mappers.DelayedShipmentMapper; 33 import com.lframework.xingyun.sc.mappers.DelayedShipmentMapper;
28 import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService; 34 import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
29 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService; 35 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService;
30 import com.lframework.xingyun.sc.service.shipments.delay.DelayedShipmentDetailService; 36 import com.lframework.xingyun.sc.service.shipments.delay.DelayedShipmentDetailService;
31 import com.lframework.xingyun.sc.service.shipments.delay.DelayedShipmentService; 37 import com.lframework.xingyun.sc.service.shipments.delay.DelayedShipmentService;
32 import com.lframework.xingyun.sc.vo.shipments.delay.*; 38 import com.lframework.xingyun.sc.vo.shipments.delay.*;
  39 +import org.apache.commons.collections.CollectionUtils;
33 import org.springframework.transaction.annotation.Transactional; 40 import org.springframework.transaction.annotation.Transactional;
34 import org.springframework.stereotype.Service; 41 import org.springframework.stereotype.Service;
35 import javax.annotation.Resource; 42 import javax.annotation.Resource;
@@ -51,6 +58,12 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen @@ -51,6 +58,12 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen
51 private SysUserService sysUserService; 58 private SysUserService sysUserService;
52 @Resource 59 @Resource
53 private PurchaseOrderLineService purchaseOrderLineService; 60 private PurchaseOrderLineService purchaseOrderLineService;
  61 + @Resource
  62 + private MqProducerService mqProducerService;
  63 + @Resource
  64 + private SysUserRoleService sysUserRoleService;
  65 + @Resource
  66 + private TransactorHandler transactorHandler;
54 67
55 @Override 68 @Override
56 public PageResult<DelayedShipment> query(Integer pageIndex, Integer pageSize, QueryDelayedShipmentVo vo) { 69 public PageResult<DelayedShipment> query(Integer pageIndex, Integer pageSize, QueryDelayedShipmentVo vo) {
@@ -160,9 +173,9 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen @@ -160,9 +173,9 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen
160 newRoleCodes.add("sfcsckjhy"); 173 newRoleCodes.add("sfcsckjhy");
161 newRoleCodes.add("ztfcsckjhy"); 174 newRoleCodes.add("ztfcsckjhy");
162 boolean hasAny = newRoleCodes.stream().anyMatch(roleCodes::contains); 175 boolean hasAny = newRoleCodes.stream().anyMatch(roleCodes::contains);
  176 + DelayedShipmentDetail delayedShipmentDetail = delayedShipmentDetailService.findById(id);
163 if (delayedExceedOneDay && !hasAny) { 177 if (delayedExceedOneDay && !hasAny) {
164 //开启审核 178 //开启审核
165 - DelayedShipmentDetail delayedShipmentDetail = delayedShipmentDetailService.findById(id);  
166 vo.setWorkshopCode(delayedShipmentDetail.getWorkshopCode()); 179 vo.setWorkshopCode(delayedShipmentDetail.getWorkshopCode());
167 180
168 flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, vo); 181 flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, vo);
@@ -174,14 +187,68 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen @@ -174,14 +187,68 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen
174 vo1.setDelayedShipmentId(data.getId()); 187 vo1.setDelayedShipmentId(data.getId());
175 List<DelayedShipmentDetail> query = delayedShipmentDetailService.query(vo1); 188 List<DelayedShipmentDetail> query = delayedShipmentDetailService.query(vo1);
176 if (CollectionUtil.isNotEmpty(query)) { 189 if (CollectionUtil.isNotEmpty(query)) {
177 - for (DelayedShipmentDetail delayedShipmentDetail : query) {  
178 - purchaseOrderLineService.updateDeliveryDate(delayedShipmentDetail.getOrderSpecId(),  
179 - delayedShipmentDetail.getApplyShipmentDate()); 190 + for (DelayedShipmentDetail detail : query) {
  191 + purchaseOrderLineService.updateDeliveryDate(detail.getOrderSpecId(), detail.getApplyShipmentDate());
180 } 192 }
181 } 193 }
182 } 194 }
183 - //todo 消息通知  
184 - 195 + //todo 消息通知经营办计划员、经营办发货员、业务员、办事处内勤和经营办主管。
  196 + List<String> userIdList = new ArrayList<>();
  197 + List<String> codeList = new ArrayList<>();
  198 + String workshopCode = delayedShipmentDetail.getWorkshopCode();
  199 + //业务员
  200 + String contractCreateById = delayedShipmentDetail.getContractCreateById();
  201 + userIdList.add(contractCreateById);
  202 + //办事处内勤
  203 + List<String> list1 = transactorHandler.listTransactorsByRoleCode("bscnq", contractCreateById);
  204 + if (CollectionUtils.isNotEmpty(list1)) {
  205 + userIdList.addAll(list1);
  206 + }
  207 + if ("yfc".equals(workshopCode)) {
  208 + //经营办计划员、经营办发货员、经营办主管
  209 + codeList.add("yfcjybjhy");
  210 + codeList.add("yfcjybfhy");
  211 + codeList.add("yfcjybzg");
  212 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  213 + if (CollectionUtils.isNotEmpty(userIds)) {
  214 + userIdList.addAll(userIds);
  215 + }
  216 + } else if ("efc".equals(workshopCode)) {
  217 + //经营办计划员、经营办发货员、经营办主管
  218 + codeList.add("efcjybjhy");
  219 + codeList.add("efcjybfhy");
  220 + codeList.add("efcjybzg");
  221 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  222 + if (CollectionUtils.isNotEmpty(userIds)) {
  223 + userIdList.addAll(userIds);
  224 + }
  225 + } else if ("sfc".equals(workshopCode)) {
  226 + //经营办计划员、经营办发货员、经营办主管
  227 + codeList.add("sfcjybjhy");
  228 + codeList.add("sfcjybfhy");
  229 + codeList.add("sfcjybzg");
  230 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  231 + if (CollectionUtils.isNotEmpty(userIds)) {
  232 + userIdList.addAll(userIds);
  233 + }
  234 + } else if ("sfc".equals(workshopCode)) {
  235 + //经营办计划员、经营办发货员、经营办主管
  236 + codeList.add("ztfcjybjhy");
  237 + codeList.add("ztfcjybfhy");
  238 + codeList.add("ztcjybzg");
  239 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  240 + if (CollectionUtils.isNotEmpty(userIds)) {
  241 + userIdList.addAll(userIds);
  242 + }
  243 + }
  244 + SysSiteMessageDto messageDto = new SysSiteMessageDto();
  245 + messageDto.setUserIdList(userIdList);
  246 + messageDto.setTitle("延期发货通知");
  247 + messageDto.setContent("延期发货通知!");
  248 + messageDto.setBizKey(IdUtil.getId());
  249 + //如果是空表示由系统自动发起
  250 + messageDto.setCreateUserId(null);
  251 + mqProducerService.createSysSiteMessage(messageDto);
185 return data.getId(); 252 return data.getId();
186 } 253 }
187 254
@@ -256,9 +323,9 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen @@ -256,9 +323,9 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen
256 newRoleCodes.add("sfcsckjhy"); 323 newRoleCodes.add("sfcsckjhy");
257 newRoleCodes.add("ztfcsckjhy"); 324 newRoleCodes.add("ztfcsckjhy");
258 boolean hasAny = newRoleCodes.stream().anyMatch(roleCodes::contains); 325 boolean hasAny = newRoleCodes.stream().anyMatch(roleCodes::contains);
  326 + DelayedShipmentDetail delayedShipmentDetail = delayedShipmentDetailService.findById(id);
259 if (delayedExceedOneDay && !hasAny) { 327 if (delayedExceedOneDay && !hasAny) {
260 //开启审核 328 //开启审核
261 - DelayedShipmentDetail delayedShipmentDetail = delayedShipmentDetailService.findById(id);  
262 vo.setWorkshopCode(delayedShipmentDetail.getWorkshopCode()); 329 vo.setWorkshopCode(delayedShipmentDetail.getWorkshopCode());
263 330
264 flowInstanceWrapperService.startInstance(BPM_FLAG, vo.getId(), BPM_FLAG, vo); 331 flowInstanceWrapperService.startInstance(BPM_FLAG, vo.getId(), BPM_FLAG, vo);
@@ -270,13 +337,68 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen @@ -270,13 +337,68 @@ public class DelayedShipmentServiceImpl extends BaseMpServiceImpl<DelayedShipmen
270 vo1.setDelayedShipmentId(data.getId()); 337 vo1.setDelayedShipmentId(data.getId());
271 List<DelayedShipmentDetail> query = delayedShipmentDetailService.query(vo1); 338 List<DelayedShipmentDetail> query = delayedShipmentDetailService.query(vo1);
272 if (CollectionUtil.isNotEmpty(query)) { 339 if (CollectionUtil.isNotEmpty(query)) {
273 - for (DelayedShipmentDetail delayedShipmentDetail : query) {  
274 - purchaseOrderLineService.updateDeliveryDate(delayedShipmentDetail.getOrderSpecId(),  
275 - delayedShipmentDetail.getApplyShipmentDate()); 340 + for (DelayedShipmentDetail detail : query) {
  341 + purchaseOrderLineService.updateDeliveryDate(detail.getOrderSpecId(), detail.getApplyShipmentDate());
276 } 342 }
277 } 343 }
278 } 344 }
279 - //todo 消息通知 345 + //todo 消息通知经营办计划员、经营办发货员、业务员、办事处内勤和经营办主管。
  346 + List<String> userIdList = new ArrayList<>();
  347 + List<String> codeList = new ArrayList<>();
  348 + String workshopCode = delayedShipmentDetail.getWorkshopCode();
  349 + //业务员
  350 + String contractCreateById = delayedShipmentDetail.getContractCreateById();
  351 + userIdList.add(contractCreateById);
  352 + //办事处内勤
  353 + List<String> list1 = transactorHandler.listTransactorsByRoleCode("bscnq", contractCreateById);
  354 + if (CollectionUtils.isNotEmpty(list1)) {
  355 + userIdList.addAll(list1);
  356 + }
  357 + if ("yfc".equals(workshopCode)) {
  358 + //经营办计划员、经营办发货员、经营办主管
  359 + codeList.add("yfcjybjhy");
  360 + codeList.add("yfcjybfhy");
  361 + codeList.add("yfcjybzg");
  362 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  363 + if (CollectionUtils.isNotEmpty(userIds)) {
  364 + userIdList.addAll(userIds);
  365 + }
  366 + } else if ("efc".equals(workshopCode)) {
  367 + //经营办计划员、经营办发货员、经营办主管
  368 + codeList.add("efcjybjhy");
  369 + codeList.add("efcjybfhy");
  370 + codeList.add("efcjybzg");
  371 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  372 + if (CollectionUtils.isNotEmpty(userIds)) {
  373 + userIdList.addAll(userIds);
  374 + }
  375 + } else if ("sfc".equals(workshopCode)) {
  376 + //经营办计划员、经营办发货员、经营办主管
  377 + codeList.add("sfcjybjhy");
  378 + codeList.add("sfcjybfhy");
  379 + codeList.add("sfcjybzg");
  380 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  381 + if (CollectionUtils.isNotEmpty(userIds)) {
  382 + userIdList.addAll(userIds);
  383 + }
  384 + } else if ("ztfc".equals(workshopCode)) {
  385 + //经营办计划员、经营办发货员、经营办主管
  386 + codeList.add("ztfcjybjhy");
  387 + codeList.add("ztfcjybfhy");
  388 + codeList.add("ztcjybzg");
  389 + List<String> userIds = sysUserRoleService.listUserIdByRoleCodes(codeList);
  390 + if (CollectionUtils.isNotEmpty(userIds)) {
  391 + userIdList.addAll(userIds);
  392 + }
  393 + }
  394 + SysSiteMessageDto messageDto = new SysSiteMessageDto();
  395 + messageDto.setUserIdList(userIdList);
  396 + messageDto.setTitle("延期发货通知");
  397 + messageDto.setContent("延期发货通知!");
  398 + messageDto.setBizKey(IdUtil.getId());
  399 + //如果是空表示由系统自动发起
  400 + messageDto.setCreateUserId(null);
  401 + mqProducerService.createSysSiteMessage(messageDto);
280 } 402 }
281 403
282 @OpLog(type = OtherOpLogType.class, name = "修改状态,ID:{}", params = {"#id"}) 404 @OpLog(type = OtherOpLogType.class, name = "修改状态,ID:{}", params = {"#id"})
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
20 <result column="apply_count" property="applyCount"/> 20 <result column="apply_count" property="applyCount"/>
21 <result column="quantity" property="quantity"/> 21 <result column="quantity" property="quantity"/>
22 <result column="delay_reason" property="delayReason"/> 22 <result column="delay_reason" property="delayReason"/>
  23 + <result column="contract_create_by_id" property="contractCreateById"/>
23 <result column="create_by_id" property="createById"/> 24 <result column="create_by_id" property="createById"/>
24 <result column="create_by" property="createBy"/> 25 <result column="create_by" property="createBy"/>
25 <result column="update_by_id" property="updateById"/> 26 <result column="update_by_id" property="updateById"/>
@@ -52,6 +53,7 @@ @@ -52,6 +53,7 @@
52 tb.apply_count, 53 tb.apply_count,
53 tb.quantity, 54 tb.quantity,
54 tb.delay_reason, 55 tb.delay_reason,
  56 + o.contract_create_by_id,
55 tb.create_by_id, 57 tb.create_by_id,
56 tb.create_by, 58 tb.create_by,
57 tb.update_by_id, 59 tb.update_by_id,