Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éè¼ÆģʽÔÚÒµÎñϵͳÖеÄÓ¦ÓÃ
 
×÷ÕߣºÐËÁÁ
  1396  次浏览      24
 2021-11-26
 
±à¼­ÍƼö:
±¾ÎĵÄÖصãÔÚÓÚ˵Ã÷¹¤×÷ÖÐËùʹÓõÄÉè¼Æģʽ£¬ÎªÁËÄܹ»¸üºÃµÄÀí½âÉè¼Æģʽ£¬Ê×Ïȼòµ¥½éÉÜÒ»ÏÂÒµÎñ³¡¾°¡£Ê¹ÓÃÉè¼Æģʽ£¬¿ÉÒÔ¼ò»¯´úÂë¡¢Ìá¸ßÀ©Õ¹ÐÔ¡¢¿Éά»¤ÐԺ͸´ÓÃÐÔ£¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ °¢Àï¼¼Êõ £¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Ò» Ïß·¼ì²é¹¤¾ß

1 ÒâÒå

ΪʲôÐèÒªÏß·¼ì²é¹¤¾ßÄØ£¬ÓÐÒÔϼ¸¸ö·½ÃæµÄÔ­Òò£º

  • ÿ·ê´ó´Ù¶¼ÐèÒª½øÐи÷ÍøÂçºÍ¸÷ÐÐÒµµÄÏß·µ÷Õû£¬µ÷ÕûÍê³ÉÖ®ºó£¬ÊÇ·ñµÃµ½ÆÚÍû״̬£¬ÐèÒª¼ì²éÈ·ÈÏ¡£
  • ÉÏÏÂÓÎÓ¦ÓÃÖ®¼äÊý¾ÝµÄÒ»ÖÂÐÔ¼ì²é£¬Èç¹û´æÔÚ²»Ò»Ö£¬¿ÉÄÜ»áÔÚ¶©µ¥ÂÄÐÐʱÔì³É¿¨µ¥¡£
  • ÓÐЩÎÊÌâ·¢Éúºó£¬ÒµÎñͬѧÐèҪȫÃæ¼ì²éÒ»±éÏß·Êý¾Ý£¬ÅжÏÊÇ·ñ·ûºÏÔ¤ÆÚ¡£
  • ¸÷ÁìÓòÖ®¼äµÄÊý¾Ý±ä¸üȱ·¦Áª¶¯ÐÔ£¬µ¼ÖÂ×ÊÔ´ºÍÏß·³öÏÖ²»Ò»Ö¡£

ΪʲôҪ°ÑÏß·¼ì²é¹¤¾ß²úÆ·»¯ÄØ£¬¿¼ÂÇÈçÏ£º

  • ÒÔǰÿ´Î´ó´Ù£¬¶¼ÊǼ¼ÊõͬѧÏÖ³¡±àд´úÂëÀÌÊý¾Ý¸øµ½ÒµÎñͬѧ£¬¶øÇÒÒòΪÈËÔ±Á÷¶¯ÐԽϴ󣬴úÂë¿É¸´ÓÃÐԽϵͣ¬µ¼ÖÂÖظ´ÀͶ¯¡£²úÆ·»¯ºó£¬¿ÉÒÔ·½±ãµØ´«³ÐÏÂÈ¥£¬±ÜÃâ²»±ØÒªµÄÖظ´ÀͶ¯¡£
  • ÿ´ÎÒòΪʱ¼ä½ô¼±£¬ÏÖ³¡Ð´µÄ´úÂ붼±È½Ï¼òµ¥£¬¾­³£ÊÇÖ±½Ó½«Êý¾Ý´òÓ¡µ½±ê×¼Êä³ö£¬È»ºó¸´ÖƳöÀ´£¬È˹¤²ð·Öת³ÉExcel¸ñʽ£»ÕâÑùµÄ¹ý³ÌÒª½øÐжà´Î£¬Õ¼ÓÃÌ«¶à¼¼ÊõͬѧµÄʱ¼ä¡£²úÆ·»¯ºó£¬½â·ÅÁ˼¼Êõͬѧ£¬ÒµÎñͬѧ¿ÉÒÔ×Ô¼ºÔÚÒ³Ãæ²Ù×÷¡£
  • ºÜ¶àÊý¾Ý¼ì²é£¬ÊÇÿ´Î´ó´Ù¶¼»á½øÐеģ¬ÒµÎñͬѧÓë¼¼Êõͬѧ֮¼äÀ´»Ø¹µÍ¨µÄ³É±¾½Ï¸ß¡£²úÆ·»¯ºó£¬¿ÉÒÔ±ÜÃâÕâЩºÄʱºÄÁ¦µÄ¹µÍ¨£¬´ó¼Ò¿ÉÒ԰Ѹü¶àµÄʱ¼ä·ÅÔÚÆäËûµÄ´ó´Ù±£ÕϹ¤×÷ÉÏ¡£

2 ¼ì²éÏî

¸ù¾Ý2020ÄêD11½øÐеÄÊý¾Ý¼ì²é£¬±¾´Î¹²ÊµÏÖ8ÏÏÂÃæÁоÙÁË4ÏÈçÏ£º

  • ʱЧ¶ÔÆë¼ì²é£ºÈ·±£ÂÄÐзֵ¥Õý³£¡£
  • Èõ¿ØÏß·Óë±í´ïÍøÂçÒ»ÖÂÐÔ£ºÈ·±£ÂÄÐкÍ·Óɲ»»áÒòΪÏß·ȱʧ¶ø¿¨µ¥¡£
  • ×ÊÔ´Ó³ÉäºÍ±àÂëÓ³ÉäÒ»Ö£ºÇ°ÕßÊDZí´ïÏß·ʱËùÓ㬺óÕßÊǶ©µ¥ÂÄԼʱËùÓã¬È·±£±í´ïºÍÂÄÔ¼Äܹ»Ò»Ö¡£
  • ¼ì²éÏß·ÊýÁ¿£ºÍ³¼ÆÏÖ´æÏß·µÄÇé¿ö¡£

ºÃÁË£¬Á˽âÁ˱³¾°ÖªÊ¶£¬ÏÂÃ濪ʼ½éÉÜËùÓõ½µÄÉè¼Æģʽ£¬ÒÔ¼°ÎªÊ²Ã´ÒªÓá¢ÔõôÓá£

¶þ Éè¼Æģʽ

1 Ä£°å·½·¨Ä£Ê½+·ºÐÍ

ÉÏÊö8ÏîÊý¾Ý¼ì²é¹¤¾ß£¬´óÖµĴ¦ÀíÁ÷³ÌÊÇÀàËƵģ¬ÈçÏ£º

Õë¶Ô²»Í¬µÄ¼ì²é¹¤¾ß£¬Ö»ÓС°Ïß·Êý¾Ý¼ì²é¡±ÕâÒ»²½ÊDz»Ò»ÑùµÄÂß¼­£¬ÆäËû²½Ö趼ÊÇÏàͬµÄ£¬Èç¹ûÿ¸ö¼ì²é¹¤¾ß¶¼ÊµÏÖÕâôһÌ×Âß¼­£¬±Ø¶¨Ôì³É´óÁ¿µÄÖظ´´úÂ룬ά»¤ÐԽϲ Ä£°å·½·¨Ä£Ê½Äܹ»ºÜºÃµØ½â¾öÕâ¸öÎÊÌâ¡£

Ä£°å·½·¨Éè¼Æģʽ°üº¬Ä£°å·½·¨ºÍ»ù±¾·½·¨£¬Ä£°å·½·¨°üº¬ÁËÖ÷ÒªÁ÷³Ì£»»ù±¾·½·¨ÊÇÁ÷³ÌÖй²ÓõÄÂß¼­£¬Èç´´½¨¼ì²éÈÎÎñ£¬½á¹ûÊä³öµÈµÈ¡£

ÏÂͼÊÇËùʵÏÖµÄÄ£°å·½·¨Ä£Ê½µÄÀà¼Ì³Ð¹Øϵ£º

·ÖÎöÈçÏ£º 1£©DataCheckProductService½Ó¿ÚΪ¶ÔÍâÌṩµÄ·þÎñ£¬dataCheck·½·¨ÎªÍ³Ò»µÄÊý¾Ý¼ì²é½Ó¿Ú¡£ 2£©AbstractDataCheckProductServiceÊÇÒ»¸ö³éÏóÀ࣬É趨ģ°å£¬¼´ÔÚdataCheck·½·¨ÖÐÉ趨ºÃÁ÷³Ì£¬°üÀ¨ÈçÏ£º

  • commonParamCheck·½·¨£º½øÐвÎÊýºÏ·¨ÐÔ¼ì²é£¬²»ºÏ·¨µÄÇé¿öÏ£¬Ö±½Ó·µ»Ø¡£
  • createFileName·½·¨£º´´½¨ÎļþÃû³Æ¡£
  • createTaskRecord·½·¨£º´´½¨¼ì²éÈÎÎñ¡£
  • runDataCheck·½·¨£º½øÐÐÊý¾Ý¼ì²é£¬ÕâÊÇÒ»¸ö³éÏó·½·¨£¬ËùÓмì²é¹¤¾ß¶¼ÒªÊµÏÖ´Ë·½·¨£¬ÒÔʵÏÖ×Ô¼ºµÄÂß¼­¡£
  • uploadToOSS·½·¨£º½«¼ì²é½á¹ûÉÏ´«µ½OSS£¬±ãÓÚÏÂÔØ¡£
  • updateRouteTask·½·¨£º½áÊøʱ¸üÐÂÈÎÎñΪÍê³É¡£

dataCheck·½·¨ÎªÄ£°å·½·¨£¬runDataCheck·½·¨Óɸ÷¸ö×ÓÀàȥʵÏÖ£¬ÆäËû·½·¨ÊÇ»ù±¾·½·¨¡£»¹ÓÐһЩÆäËû·½·¨£¬ÊǸ÷¸ö¼ì²é¹¤¾ß¶¼ÐèҪʹÓõģ¬ËùÒԾͷÅÔÚÁ˸¸ÀàÖС£ 3£©CheckSupplierAndCodeMappingServiceÀà¡¢CheckLandingCoverAreaServiceÀàºÍCheckAncPathNoServiceServiceÀàΪ¾ßÌåµÄ¼ì²é¹¤¾ß×ÓÀ࣬±ØÐëʵÏÖrunDataCheck·½·¨¡£ ÒòΪ²»Í¬¼ì²éÏî¼ìµÄ²é½á¹ûµÄ¸ñʽÊDz»Ò»ÑùµÄ£¬ËùÒÔʹÓÃÁË·ºÐÍ£¬Ê¹µÃ¿ÉÒÔ¼æÈݲ»Í¬µÄ¼ì²é½á¹û¡£ ¼ò»¯µÄ´úÂëÈçÏ£º

/**
* Êý¾Ý¼ì²é¹¤¾ß²úÆ·»¯¶ÔÍâ·þÎñ½Ó¿Ú
* @author xxx
* @since xxx
* */
public interface DataCheckProductService {
/**
* Êý¾Ý¼ì²é
* @param requestDTO ÇëÇó²ÎÊý
* */
< T> BaseResult< Long> dataCheck(DataCheckRequestDTO
requestDTO); }

/**
* Êý¾Ý¼ì²é¹¤¾ß²úÆ·»¯·þÎñ
*
* @author xxx
* @since xxx
* */
public abstract class AbstractDataCheckProductService
implements DataCheckProductService {
/**
* Êý¾Ý¼ì²é
* @param requestDTO ÇëÇó²ÎÊý
* @return
* */
@Override
public < T> BaseResult< Long> dataCheck
( DataCheckRequestDTO requestDTO ){
try{
//1. ²ÎÊýºÏ·¨ÐÔ¼ì²é
Pair< Boolean,String> paramCheckResult = commonParamCheck
( requestDTO);
if(!paramCheckResult.getLeft()){
return BaseResult.ofFail(paramCheckResult.getRight());
}

//2. ´´½¨µ¼³öÈÎÎñ
String fileName = createFileName(requestDTO);
RouteTaskRecordDO taskRecordDO = createTaskRecord(fileName,
requestDTO.getUserName());

//3. ½øÐÐÊý¾Ý¼ì²é
List< T> resultList = Collections.synchronizedList
( new ArrayList <>());
runDataCheck(resultList, requestDTO);

//4. дÈëÎļþ
String ossUrl = uploadToOSS(fileName,resultList);
//5. ¸üÐÂÈÎÎñΪÍê³É״̬
updateRouteTask(taskRecordDO.getId(),DDportTaskStatus
. FINISHED.intValue (), resultList.size()-1,"",ossUrl);

return BaseResult.ofSuccess(taskRecordDO.getId());
}catch (Exception e){
LogPrinter.errorLog("dataCheck-error, beanName= "
+getBeanName(),e);
return BaseResult.ofFail(e.getMessage());
}
}

/**
* ½øÐÐÊý¾Ý¼ì²é
* @param resultList ´æ·Å¼ì²é½á¹û
* @param requestDTO ÇëÇó²ÎÊý
* @return
* */
public abstract < T> void runDataCheck(List< T> resultList ,
DataCheckRequestDTO requestDTO);
}

/**
* ¼ì²é×ÊÔ´Ó³ÉäºÍ±àÂëÓ³ÉäÒ»ÖÂ
* @author xxx
* @since xxx
* */
public class CheckSupplierAndCodeMappingService extends
AbstractDataCheckProductService{
@Override
public < T> void runDataCheck(List< T>
resultList, DataCheckRequestDTO requestDTO){
//×Ô¼ºµÄ¼ì²éÂß¼­
}
}

/**
* ¼ì²éÇøÓòÄÚÂäµØÅä±ØÐëÈý¼¶È«¸²¸Ç
* @author xxx
* @since xxx
* */
public class CheckLandingCoverAreaService extends
AbstractDataCheckProductService{
@Override
public < T> void runDataCheck(List< T>
resultList, DataCheckRequestDTO requestDTO){
//×Ô¼ºµÄ¼ì²éÂß¼­
}
}

/**
* ¼ì²é×ÊÔ´Ó³ÉäºÍ±àÂëÓ³ÉäÒ»ÖÂ
* @author xxx
* @since xxx
* */
public class CheckAncPathNoServiceService extends
AbstractDataCheckProductService{
@Override
public < T> void runDataCheck(List< T> resultList,
DataCheckRequestDTO requestDTO){
//×Ô¼ºµÄ¼ì²éÂß¼­
}
}

ʹÓÃÄ£°å·½·¨Ä£Ê½µÄºÃ´¦ÊÇ£º

  • ¼ò»¯ÁË´úÂ룬ÿ¸ö¹¤¾ßÖ»ÐèÒª¹ØÐÄ×Ô¼ºµÄºËÐļì²éÂß¼­£¬²»ÐèÒª¹ØעǰÖúͺóÖòÙ×÷¡£
  • Ìá¸ßÁËÀ©Õ¹ÐÔ£¬¿ÉÒÔ·½±ãµØÔö¼Óеļì²é¹¤¾ß¡£
  • ͳһµÄÒì³£²¶»ñºÍ´¦ÀíÂß¼­£¬×ÓÀàÓÐÒì³££¬¾¡¹ÜÍùÍâÅ׳ö¡£

2 ²ßÂÔģʽ

Ö®ËùÒÔ»áÓõ½²ßÂÔģʽ£¬ÊÇÒòΪһЩ¼ì²é¹¤¾ßдÍêÖ®ºó£¬·¢ÏÖÅܳöÀ´µÄ½á¹ûÊý¾ÝÌ«¶à£¬Óм¸Íò¡¢¼¸Ê®ÍòµÈµÈ£¬Ò»·½Ã棬¼ì²é±È½ÏºÄʱ£¬½á¹ûÎļþ»áºÜ´ó£¬ÏÂÔغÄʱ£»ÁíÒ»·½Ã棬Õâô¶àÊý¾Ý¸øµ½ÒµÎñͬѧ£¬ËûÃÇÒ²ºÜÄÑ´¦ÀíºÍ·ÖÎö£¬Ò²ÐíËûÃÇÖ»ÊÇÏë¿´Ò»ÏÂ×ÜÌåÇé¿ö£¬²¢²»Ïë¿´¾ßÌåµÄµ½ÄĸöµØ·½µÄÏß·¡£Îª´Ë£¬ÔÚÔ­ÏÈ·½°¸Éè¼ÆµÄ»ù´¡ÉÏ£¬Ôö¼ÓÁË¡°Í³¼ÆÐÅÏ¢¡±µÄÑ¡ÏÈÃÓû§¿ÉÒÔ×ÔÐÐÑ¡Ôñ¡°ÏêϸÐÅÏ¢¡±»¹ÊÇ¡°Í³¼ÆÐÅÏ¢¡±£¬¶ÔÓ¦µ½Ò³ÃæÉϾÍÊÇÒ»¸öµ¥Ñ¡¿ò£¬ÈçÏ£º

ÏÖÔÚÔö¼ÓÁËÒ»ÖÖ¼ì²é·½Ê½£¬½ñºóÊÇ·ñ»¹»áÓÐÆäËûµÄ¼ì²é·½Ê½£¿ÍêÈ«ÓпÉÄܵġ£ËùÒԵÿ¼Âǵ½À©Õ¹ÐÔ£¬±ãÓÚºóÃæͬѧÔö¼Óеļì²é·½Ê½¡£ ´ËÍ⣬»¹ÓÐÒ»ÖÖ³¡¾°Ò²¿ÉÒÔʹÓòßÂÔģʽ£¬ÄǾÍÊÇÒµÎñϵͳÖÐÓкܶàÒµÎñÍøÂ磬²»Í¬ÍøÂçÖ®¼äÓÐһЩ²îÒ죻±¾´ÎËùʵÏֵļì²é¹¤¾ß£¬Óм¸¸öÉæ¼°µ½¶à¸öÍøÂ磬½ñºó¿ÉÄÜ»áÉæ¼°µ½ËùÓÐÍøÂç¡£ ×ÛºÏÒÔÉÏÁ½ÖÖ³¡¾°£¬×îºÏÊʵľÍÊDzßÂÔģʽÁË¡£¡°ÏêϸÐÅÏ¢¡±ºÍ¡°Í³¼ÆÐÅÏ¢¡±¸÷²ÉÓÃÒ»ÖÖ²ßÂÔ£¬²»Í¬ÍøÂçʹÓò»Í¬µÄ²ßÂÔ£¬¼È±ãÓÚ´úÂëÀí½â£¬ÓÖ±ãÓÚºóÐøÀ©Õ¹¡£ ¡°ÏêϸÐÅÏ¢¡±ºÍ¡°Í³¼ÆÐÅÏ¢¡±Á½ÖÖ¼ì²é½á¹ûµÄ²ßÂÔÀàͼÈçÏ£º

½âÎö£º

  • CompareModeStrategy¶ÔÍâÌṩͳһµÄ½á¹û´¦Àí½Ó¿ÚdoHandle£¬²ßÂÔ×ÓÀà±ØÐëʵÏִ˽ӿڡ£
  • SupplierAndCodeMappingStatisticsStrategyºÍ SupplierAndCodeMappingDetailStrategy ÊǼì²éÅäËÍ×ÊÔ´ºÍ±àÂëÓ³ÉäÒ»ÖÂÐÔµÄÁ½ÖÖ½á¹ûÐÅÏ¢·½Ê½£¬Ç°ÕßΪͳ¼Æ·½Ê½£¬ºóÕßΪÏêϸ·½Ê½¡£
  • LandingCoverAreaStatisticsStrategyºÍ LandingCoverAreaDetailStrategy ÊǼì²éÂäµØÅ串¸Ç·¶Î§µÄÁ½ÖÖ½á¹ûÐÅÏ¢·½Ê½£¬Ç°ÕßΪͳ¼Æ·½Ê½£¬ºóÕßΪÏêϸ·½Ê½¡£
  • ÄÇAbstractCompareModeStrategyÊǸÉʲôÓõģ¿ËüÊÇÒ»¸ö³éÏóÀ࣬¸ºÔð³Ð½ÓËùÓвßÂÔ×ÓÀ๲ÓõÄһЩ·½·¨¡£

¼ò»¯µÄ´úÂëÈçÏ£º

/**
* ¼ì²é½á¹û²ßÂÔ¶ÔÍâ½Ó¿Ú
* @author xxx
* @since xxx
* */
public interface CompareModeStrategy {
/**
* ¾ßÌå²Ù×÷
*
* @param list
* @param requestDTO
* @return ½á¹û¼¯
* */
< T> List< T> doHandle(List< CompareBO> list,
DataCheckRequestDTO requestDTO );
}

/**
* ²ßÂÔ¹«¹²¸¸Àà
*
* @author xxx
* @since xxx
* @apiNote Ö÷ÒªÊǽ«×ÓÀ๲Ó÷½·¨ºÍ³ÉÔ±³éÀë³öÀ´
* */
public abstract class AbstractCompareModeStrategy implements
CompareModeStrategy {
//×ÓÀàµÄ¹²Ó÷½·¨£¬¿ÉÒÔ·ÅÔÚ´ËÀàÖÐ
}

/**
* ¼ì²éÂäµØÅ串¸Ç·¶Î§ ÏêϸÐÅÏ¢ ²ßÂÔÀà
* @author xxx
* @since xxx
* */
public class LandingCoverAreaDetailStrategy extends
AbstractCompareModeStrategy{
@Override
public < T> List< T> doHandle(List< CompareBO>
list, DataCheckRequestDTO requestDTO){
List< T> resultList = new ArrayList<>();
//¼ì²é½á¹û´¦ÀíÂß¼­
return resultList;
}
}

/**
* ¼ì²éÂäµØÅ串¸Ç·¶Î§ ͳ¼ÆÐÅÏ¢ ²ßÂÔÀà
* @author xxx
* @since xxx
* */
public class LandingCoverAreaStatisticsStrategy extends
AbstractCompareModeStrategy{
@Override
public < T> List< T> doHandle(List< CompareBO>
list, DataCheckRequestDTO requestDTO){
List< T> resultList = new ArrayList<>();
//¼ì²é½á¹û´¦ÀíÂß¼­
return resultList;
}
}

/**
* ¼ì²éÅäËÍ×ÊÔ´ºÍ±àÂëÓ³ÉäÒ»Ö ÏêϸÐÅÏ¢ ²ßÂÔÀà
* @author xxx
* @since xxx
* */
public class SupplierAndCodeMappingDetailStrategy extends
AbstractCompareModeStrategy{
@Override
public < T> List< T> doHandle(List< CompareBO> list,
DataCheckRequestDTO requestDTO){
List< T> resultList = new ArrayList<>();
//¼ì²é½á¹û´¦ÀíÂß¼­
return resultList;
}
}

/**
* ¼ì²éÅäËÍ×ÊÔ´ºÍ±àÂëÓ³ÉäÒ»Ö ͳ¼ÆÐÅÏ¢ ²ßÂÔÀà
* @author xxx
* @since xxx
* */
public class SupplierAndCodeMappingStatisticsStrategy
extends AbstractCompareModeStrategy{
@Override
public < T> List< T> doHandle(List< CompareBO>
list, DataCheckRequestDTO requestDTO){
List< T> resultList = new ArrayList<>();
//¼ì²é½á¹û´¦ÀíÂß¼­
return resultList;
}
}

 

ͬÑù£¬²»Í¬ÍøÂçµÄ´¦Àí²ßÂÔÀàͼÈçÏ£º

´úÂëÓëÉÏÃæÀàËÆ£¬¾Í²»Õ¹Ê¾ÁË¡£

ʹÓòßÂÔģʽµÄºÃ´¦ÊÇ£º

  • Ìá¸ß´úÂëÀ©Õ¹ÐÔ£¬ºóÐøÔö¼Ó±ðµÄ½á¹û¸ñʽ»ò±ðµÄÍøÂç´¦ÀíÂß¼­£¬¿ÉÒÔÔÚ²»ÐÞ¸ÄÆäËû²ßÂÔµÄÇé¿öÏÂÖ±½ÓÐÂÔö¡£
  • Ìá¸ß´úÂë¿É¶ÁÐÔ£¬È¡´úÁËif...else£¬ÌõÀíÇåÎú¡£
  • ²»Í¬ÏµÁвÉÓò»Í¬µÄ²ßÂÔ£¬²ßÂÔÓë²ßÂÔÖ®¼ä¿ÉÒÔǶÌ×ʹÓã¬ÐγɲßÂԵĵþ¼ÓЧÓá£

3 ¹¤³§Ä£Ê½

¹¤³§Ä£Ê½½â¾öµÄÊÇbeanµÄÉú²úÎÊÌ⣬¼òµ¥¹¤³§Ä£Ê½¸ù¾ÝÈë²ÎÉú²ú²»Í¬µÄbean£¬ÆÕͨ¹¤³§Ä£Ê½Õë¶Ôÿ¸öbean¶¼¹¹½¨Ò»¸ö¹¤³§£¬´ËÁ½Õ߸÷ÓÐÓÅÁÓ£¬¿´ÐèÒª¡£±¾·½°¸²ÉÓõÄÊǼòµ¥¹¤³§Ä£Ê½¡£ Ö®ËùÒÔʹÓù¤³§Ä£Ê½£¬ÊÇÒòΪÓÐÌ«¶àµÄbeanÐèÒª¹¹Ô죬Èç¹ûÔÚÒµÎñÂß¼­Öй¹Ôì¸÷ÖÖbean£¬Ôò»áÏÔµÃÁèÂҺͷÖÉ¢£¬ËùÒÔÐèÒªÒ»¸öͳһÉú³ÉbeanµÄµØ·½£¬¸üºÃµØ¹ÜÀíºÍÀ©Õ¹¡£ ±¾·½°¸ÖÐÖ÷ÒªÓÐÈýÀàbeanÐèÒª¹¤³§À´Éú³É£º

  • Ä£°å·½·¨Ä£Ê½ÖÐËùÓõ½µÄ×ÓÀà¡£
  • ¼ì²é½á¹û¸ñʽ²ßÂÔÖÐËùÓõ½µÄ×ÓÀà¡£
  • ²»Í¬ÍøÂç´¦Àí²ßÂÔÖÐËùÓõ½µÄ×ÓÀà¡£

ËùÒÔ£¬Ê¹ÓÃÈý¸ö¹¤³§·Ö±ð¹¹ÔìÕâÈýÖÖÀàÐ͵Äbean¡£ÁíÍ⣬ÒòΪÿ¸öbeanÖ÷ÒªµÄ¹¦Äܶ¼ÔÚ·½·¨ÖУ¬²»Éæ¼°Àà±äÁ¿µÄʹÓã¬ËùÒÔ¿ÉÒÔÀûÓÃspringÈÝÆ÷Éú³ÉµÄbean£¬¶ø²»ÊÇÎÒÃÇ×Ô¼ºnew³öÀ´£¬ÕâÑù¾ÍʹµÃbean¿ÉÒÔÖظ´Ê¹Óá£Òò´Ë£¬ÕâÀïµÄ¹¤³§Ö»ÊÇbeanµÄ¾ö²ß£¨¸ù¾Ý²ÎÊý¾ö¶¨Ê¹ÓÃÄĸöbean£©£¬²»ÓÃ×Ô¼ºnewÁË¡£ Èý¸ö¹¤³§·Ö±ðÈçÏ£º

  • DataCheckProductFatory£ºÓÉgetDataCheckProductService·½·¨¸ù¾ÝÊäÈë²ÎÊý¾ö²ßʹÓÃÄĸöÊý¾Ý¼ì²é¹¤¾ß¡£
  • CompareModeStrategyFactory£ºÓÃÓÚ¾ö²ßʹÓÃÄÄÖÖ¸ñʽÊä³ö£¬ÒòΪ½«Êä³ö²ßÂÔ·ÖΪÁË2ÀࣨÏêϸÐÅÏ¢ºÍͳ¼ÆÐÅÏ¢£©£¬ËùÒÔÐèÒª´«ÈëÁ½¸ö²ÎÊý²ÅÄܾö¶¨Ê¹ÓÃÄÄÖÖ²ßÂÔ¡£
  • DataCheckNetworkStrategyFactory£ºÓÃÓÚ¾ö²ßʹÓÃÄÄÖÖÍøÂç´¦Àí²ßÂÔ£¬ÒòΪ½«²ßÂÔ·ÖΪÁË2Àࣨ4PLÍøÂçºÍÆäËûÍøÂ磩£¬ËùÒÔÐèÒª´«ÈëÁ½¸ö²ÎÊý²ÅÄܾö¶¨Ê¹ÓÃÄÄÖÖ²ßÂÔ¡£

ÕâÈý¸ö¹¤³§µÄ´úÂëÀàËÆ£¬ÕâÀï¾ÍÒÔCompareModeStrategyFactoryΪÀý£¬¼ò»¯µÄ´úÂëÈçÏ£º

/**
* ±È¶Ô½á¹û¼¯·½Ê½
* @author xxx
* @since xxx
* */
@Service
public class CompareModeStrategyFactory {

Ïêϸ½á¹ûµÄbean
@Resource
private LandingCoverAreaDetailStrategy landingCover
AreaDetailStrategy;
@Resource
private SupplierAndCodeMappingDetailStrategy
supplierAndCodeMappingDetailStrategy;

ͳ¼Æ½á¹ûµÄbean
@Resource
private LandingCoverAreaStatisticsStrategy
landingCoverAreaStatisticsStrategy;
@Resource
private SupplierAndCodeMappingStatisticsStrategy
supplierAndCodeMappingStatisticsStrategy;

/**
* »ñÈ¡±È¶Ô½á¹ûµÄ²ßÂÔ
* */
public CompareModeStrategy getCompareModeStrategy
(DataCheckProductEnum productEnum, DataCompareModeEnum
modeEnum){ CompareModeStrategy compareModeStrategy = null;
switch (modeEnum){
case DETAIL_INFO:
compareModeStrategy = getDetailCompareModeStrategy
(productEnum); break;
case STATISTICS_INFO :
compareModeStrategy = getStatisticsCompareModeStrategy
(productEnum); break;
default:;
}
return compareModeStrategy;
}
/**
* »ñÈ¡ ÐÅÏ¢ÐÅÏ¢ ²ßÂÔ¶ÔÏó
* */
private CompareModeStrategy getDetailCompare ModeStrategy
(DataCheckProductEnum productEnum){
CompareModeStrategy compareModeStrategy = null;
switch (productEnum){
case CHECK_LANDING_COVER_AREA:
compareModeStrategy = landingCoverAreaDetailStrategy;
break;
case CHECK_SUPPLIER_AND_CODE_MAPPING:
compareModeStrategy = supplierAndCodeMapping DetailStrategy;
break;
default:;
}
return compareModeStrategy;
}
/**
* »ñÈ¡ ͳ¼ÆÐÅÏ¢ ²ßÂÔ¶ÔÏó
* */
private CompareModeStrategy getStatistics CompareModeStrategy
(DataCheckProductEnum productEnum){
CompareModeStrategy compareModeStrategy = null;
switch (productEnum){
case CHECK_LANDING_COVER_AREA:
compareModeStrategy = landingCoverArea StatisticsStrategy;
break;
case CHECK_SUPPLIER_AND_CODE_MAPPING:
compareModeStrategy = supplierAndCodeMapping StatisticsStrategy;
break;
default:;
}
return compareModeStrategy;
}
}
  • ʹÓù¤³§Ä£Ê½µÄºÃ´¦ÊÇ£º
  • ±ãÓÚbeanµÄ¹ÜÀí£¬ËùÓеÄbean¶¼ÔÚÒ»´¦´´½¨£¨»ò¾ö²ß£©¡£
  • ÌõÀíÇåÎú£¬±ãÓÚÔĶÁºÍά»¤¡£

4 ¡°´úÀíģʽ¡±

Õâ¸ö´úÀíģʽÊÇ´ò×ÅË«ÒýºÅµÄ£¬ÒòΪ²»ÊÇÕæÕýµÄ´úÀíģʽ£¬Ö»ÊÇ´ÓʵÏÖ·½Ê½ÉÏÀ´Ëµ£¬¾ßÓдúÀíģʽµÄÒâ˼¡£ÎªÊ²Ã´ÐèÒªÓõ½´úÀíģʽ£¿ÊÇÒòΪÀàÌ«¶àÁË£¬ÒµÎñÂß¼­·ÖÉ¢ÔÚ¸÷¸öÀàÖУ¬ÓеÄÔÚÄ£°å×ÓÀàÖУ¬ÓеÄÔÚÍøÂç²ßÂÔÖУ¬ÓеÄÔÚ½á¹ûÊä³ö¸ñʽ²ßÂÔÖУ¬¶øÕâЩҵÎñÂß¼­¶¼ÐèÒª¶àÏß³ÌÖ´ÐкÍÒì³£²¶»ñ¡£Èç¹ûÓиö´úÀíÀ࣬Äܹ»ÊÕ¿ÚÕâЩ´¦ÀíÂß¼­£¬Ö»ÐèÔö¼ÓÇ°ÖöàÏ̴߳¦ÀíºÍºóÖÃÒì³£´¦Àí¼´¿É¡£

JavaÓïÑÔÖеĺ¯Êýʽ±à³Ì£¬¾ß±¸ÕâÖÖÄÜÁ¦¡£Ëùνº¯Êýʽ±à³Ì£¬ÊÇÖ¸Äܹ»½«·½·¨µ±×ö²ÎÊý´«µÝ¸ø·½·¨£¬Ç°Ãæ¡°·½·¨¡±ÊÇÒµÎñÂß¼­£¬ºóÃæ¡°·½·¨¡±ÊÇ´úÀí£¬½«ÒµÎñÂß¼­´«µÝ¸ø´úÀí£¬¾ÍʵÏÖÁËͳһÊÕ¿ÚµÄÄ¿µÄ¡£

Äܹ»ÊµÏִ˹¦ÄܵĽӿÚÓÐËĸö£¬·Ö±ðÊÇ£ºConsumer¡¢Supplier¡¢PredicateÓëFunction£¬ÔõôʹÓÿÉÒÔÍøÉϲéѯ¡£±¾·½°¸Ê¹ÓõÄÊÇConsumer£¬ÒòΪËüÊÇÓÃÀ´Ïû·ÑµÄ£¬¼´ÐèÒª´«ÈëÒ»¸ö²ÎÊý£¬Ã»Óзµ»ØÖµ£¬·ûºÏ±¾·½°¸µÄÉè¼Æ¡£

¼ò»¯ºóµÄ´úÂëÈçÏ£º

@Service
public class CheckLandingCoverAreaService extends
AbstractDataCheckProductService {
@Override
public < T> void runDataCheck(List< T> resultList,
DataCheckRequestDTO requestDTO){
dataCheckUtils.parallelCheckByFromResCodes
(requestDTO,requestDTO.
getFromResCodeList(),fromResCode->{
ExpressNetworkQuery query = new ExpressNetworkQuery();
query.setNs(NssEnum.PUB.getId());
query.setStatus(StatusEnum.ENABLE.getId());
query.setGroupNameList(requestDTO.getGroupNameList());
query.setBrandCodeList(requestDTO.getBrandCodeList());
query.setFromResCode(fromResCode);
List< TmsMasterExpressNetworkDO> masterExpressNetworkDOS
= tmsMasterExpressNetworkService.
queryExpressNetworkTimeList
(query);
startCompareWithAnc(resultList,requestDTO,
masterExpressNetworkDOS,fromResCode,solutionCodeMap);
});
}
}

@Service
public class DataCheckUtils {
/**
* ²¢Ðд¦Àíÿ¸ö²Ö
* @param requestDTO ÇëÇó²ÎÊý
* @param fromResCodeList ÐèÒª¼ì²éµÄ²ÖÁбí
* @param checkOperation ¾ßÌåµÄÒµÎñ´¦ÀíÂß¼­
* */
public < T> void parallelCheckByFromResCodes
(DataCheckRequestDTO
requestDTO, List< String> fromResCodeList,
Consumer<
String> checkOperation){
List< CompletableFuture> futureList = Collections.
synchronizedList(new ArrayList<>());
fromResCodeList.forEach(fromResCode->{
CompletableFuture future = CompletableFuture.
runAsync(() -> { try{
checkOperation.accept(fromResCode);
}catch (Exception e){
LogPrinter.errorLog("parallelCheckByFromResCodes-error,
taskId="+requestDTO.getTaskId(),e);
recordErrorInfo(requestDTO.getTaskId(),e);
}
}, DATA_CHECK_THREAD_POOL);
futureList.add(future);
});
//µÈ´ýËùÓÐÏ߳̽áÊø
futureList.forEach(future->{
try{
future.get();
}catch (Exception e){
LogPrinter.errorLog("parallelCheckByFromResCodes -
future-get-error",e);
}
});
}
}

¿ÉÒÔ¿´³ö£¬ConsumerËù´ú±íµÄ¾ÍÊÇÒ»¸ö·½·¨£¬½«´Ë·½·¨×÷Ϊ parallelCheckByFromResCodes ·½·¨µÄÒ»¸ö²ÎÊý£¬ÔÚ parallelCheckByFromResCodes ÖнøÐжàÏ̺߳ÍÒì³£´¦Àí£¬¼ÈÄÜͳһÊÕ¿Ú£¬ÓÖ´ó´ó¼õÉÙÁËÖظ´´úÂë¡£ ´úÀíģʽµÄºÃ´¦ÊÇ£º

  • ͳһÊÕ¿Ú¶àÖÖ²»Í¬µÄÒµÎñÂß¼­£¬Í³Ò»×öÈÕÖ¾ºÍÒì³£´¦Àí¡£
  • ¼õÉÙÖظ´´úÂ룬Ìá¸ßÁË´úÂëÖÊÁ¿¡£
  • ¿Éά»¤ÐÔ½ÏÇ¿¡£

5 ÆäËû

Ïñ½á¹ûÊä³ö¸ñʽ²ßÂÔģʽÄÇÑù£¬ËäÈ» AbstractCompareModeStrategy ûÓÐʵ¼ÊµÄÒµÎñÂß¼­£¬µ«ÈÔÈ»°ÑËü×÷Ϊһ¸ö»ùÀ࣬ĿµÄÊÇËùÓÐ×ÓÀ๲ÓõÄÂß¼­»ò·½·¨£¬Äܹ»·ÅÔÚ´ËÀàÖУ¬¼õÉÙ´úÂëÁ¿£¬ÌáÉýά»¤ÐÔ¡£

µ«ÊÇÓеÄʱºò£¬²»ÊǼ̳Ð×Ôͬһ¸ö»ùÀàµÄ×ÓÀàÃÇ£¬ÈÔȻҪ¹²ÓÃһЩÂß¼­»ò·½·¨£¨ÈçparallelCheckByFromResCodes·½·¨£©£¬µ«JavaÓïÑÔÏÞÖÆÒ»¸öÀàÖ»Äܼ̳ÐÒ»¸ö»ùÀ࣬Ôõô°ìÄØ£¿¼òµ¥µÄ°ì·¨¾ÍÊÇ°ÑÕâЩ¹²ÓÃÂß¼­»ò·½·¨·Åµ½Ò»¸ö¹¤¾ßÀࣨÈçDataCheckUtils£©ÖС£

Èý ˼¿¼&¸ÐÎò

ÔÚ×öÕâ¸öÏîÄ¿µÄ¹ý³ÌÖУ¬¸Õ¿ªÊ¼Ã»ÓкܺõÄÉè¼Æ£¬Ò²Ã»ÓÐÏëµÄºÜÈ«Ã棬µ¼Ö´úÂë¸ÄÁËÓָģ¬ËäÈ»µ¢Îóµãʱ¼ä£¬µ«¾õµÃÊÇÖµµÃµÄ¡£×ܽáÒÔϼ¸µã£º

  • ½«ÌáÉý´úÂë¿É¶ÁÐÔ¡¢¿ÉÀ©Õ¹ÐԺͿÉά»¤ÐÔµÄÒâʶעÈ뵽ƽʱµÄÏîÄ¿ÖУ¬±ãÓÚ×Ô¼º£¬ÀûÓÚËûÈË¡£Èç¹ûÏîÄ¿½ô¼±Ã»Ê±¼ä¿¼ÂǺܶ࣬ϣÍûÖ®ºóÓÐʱ¼äʱÄܹ»¸ÄÉƺÍÓÅ»¯¡£
  • ¹¤×÷²»½öÊÇΪÁËÍê³ÉÈÎÎñ£¬¸üÊÇÌáÉý×Ô¼ºµÄ¹ý³Ì¡£ÄÜÁ¦ÒªÓý«À´½øÐÐʱ¡£
  • Ô­ÎÄÁ´½Ó

  

   
1396 ´Îä¯ÀÀ       24
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù 8-23[ÌØ»Ý]
LinuxÄں˱à³Ì¼°É豸Çý¶¯ 8-15[±±¾©]
Python¡¢Êý¾Ý·ÖÎöÓë»úÆ÷ѧϰ 8-23[ÌØ»Ý]
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ 8-22[ÏßÉÏ]
QTÓ¦Óÿª·¢ 9-5[±±¾©]
 
×îÐÂÎÄÕÂ
iPersonµÄ¹ý³Ì¹Û£ºÒª ¹ý³Ì or ½á¹û
¡°ÒÔÈËΪ±¾¡±µÄ¹¤³ÌÕÜѧ
ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
UML ͼ½â£ºË³Ðòͼ£¨ sequence diagram £©
UML ͼ½â£º¶ÔÏóͼ£¨ class diagram £©
×îпγÌ
»ùÓÚUMLºÍEA½øÐÐϵͳ·ÖÎöÉè¼Æ
UML+EA+ÃæÏò¶ÔÏó·ÖÎöÉè¼Æ
»ùÓÚSysMLºÍEA½øÐÐϵͳÉè¼ÆÓ뽨ģ
UML + ǶÈëʽϵͳ·ÖÎöÉè¼Æ
ÁìÓòÇý¶¯µÄ½¨Ä£ÓëÉè¼Æ
³É¹¦°¸Àý
ijµçÐÅÔËÓª¹©Ó¦ÉÌ Ó¦ÓÃUML½øÐÐÃæÏò¶ÔÏó·ÖÎö
·é»ðͨÐÅ UML½øÐÐÃæÏò¶ÔÏóµÄ·ÖÎöÉè¼Æ
Î÷ÃÅ×Ó UMLÓëǶÈëʽÈí¼þ·ÖÎöÉè¼Æ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ ´Óϵͳµ½Èí¼þµÄ·ÖÎö¡¢Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ