Browse Source

托书打印

zengtx 2 years ago
parent
commit
02e20dad8f

+ 21 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/seclarationElements/service/impl/SyDeclarationElementsServiceImpl.java

@@ -92,9 +92,20 @@ public class SyDeclarationElementsServiceImpl extends ServiceImpl<SyDeclarationE
             for (String s : shSplit) {
                 shippingList.add(s);
             }
-                //设置ID
-                syDeclarationElements.setId(id);
+            //查询发运明细
+            QueryWrapper<SyShippingDetailsItem> shiItemQuery = new QueryWrapper<>();
+            shiItemQuery.in("id", shippingList);
+            List<SyShippingDetailsItem> shList = syShippingDetailsItemService.list(shiItemQuery);
+            //获取第一条数据
+            SyShippingDetailsItem zero = shList.get(0);
+            //设置ID
+            syDeclarationElements.setId(id);
+            syDeclarationElements.setInventoryCode(zero.getInventoryCode());
+            syDeclarationElements.setAcSetNo(zero.getOmpoAccount());
+            syDeclarationElements.setItemNumber(zero.getItemNumber());
+            syDeclarationElements.setInventoryName(zero.getInventoryName());
 
+            //新增子表
                 List<SyDeclarationElementsItem> list = syDeclarationElements.getSyDeclarationElementsItemList();
                 for (SyDeclarationElementsItem item:list){
                     item.setId(oConvertUtils.id());
@@ -105,7 +116,14 @@ public class SyDeclarationElementsServiceImpl extends ServiceImpl<SyDeclarationE
                     syDeclarationElementsItemService.saveBatch(syDeclarationElementsItemList);
                 }
 
-                //修改发运明细报关要素ID
+                //查询其他发运明细是否有相同
+                QueryWrapper<SyShippingDetailsItem> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("item_number",zero.getItemNumber()).eq("inventory_name",zero.getInventoryName()).eq("ompo_account",zero.getOmpoAccount());
+                List<SyShippingDetailsItem> list2 = syShippingDetailsItemService.list(queryWrapper);
+                for(SyShippingDetailsItem li2:list2){
+                    shippingList.add(li2.getId());
+                }
+               //修改发运明细报关要素ID
                 syShippingDetailsService.writeBackElenmentId(id,shippingList);
 
                 boolean ok = save(syDeclarationElements);

+ 199 - 28
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/controller/SyShippingOrderController.java

@@ -9,6 +9,7 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -16,11 +17,18 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.documents.letterDeposit.entity.SyRmb;
 import org.jeecg.modules.documents.letterDeposit.entity.SyUsd;
+import org.jeecg.modules.documents.seclarationElements.entity.SyDeclarationElements;
+import org.jeecg.modules.documents.seclarationElements.entity.SyDeclarationElementsItem;
+import org.jeecg.modules.documents.seclarationElements.service.impl.SyDeclarationElementsItemServiceImpl;
+import org.jeecg.modules.documents.seclarationElements.service.impl.SyDeclarationElementsServiceImpl;
+import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
+import org.jeecg.modules.documents.syShippingOrder.entity.VO.ElmentReady;
 import org.jeecg.modules.documents.syShippingOrder.entity.VO.SyPackingList;
 import org.jeecg.modules.documents.syShippingOrder.mapper.SyShippingOrderMapper;
 import org.jeecg.modules.documents.syShippingOrder.service.ISyShippingOrderService;
@@ -30,7 +38,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.documents.syShippingOrder.service.impl.SyShippingOrderItemServiceImpl;
+import org.jeecg.modules.documents.syShippingOrder.tool.TopinYin;
 import org.jeecg.modules.splt.mapper.SyPackingListTailoringItemMapper;
+import org.jeecg.modules.system.entity.SysDict;
+import org.jeecg.modules.system.service.impl.SysDictServiceImpl;
 import org.jeecgframework.poi.excel.ExcelExportUtil;
 import org.jeecgframework.poi.excel.entity.TemplateExportParams;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,11 +64,15 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 	@Autowired
 	private ISyShippingOrderService syShippingOrderService;
 	@Autowired
-	private SyPackingListTailoringItemMapper syPackingListTailoringItemMapper;
+	private SyDeclarationElementsServiceImpl syDeclarationElementsService;
+	 @Autowired
+	 private SyDeclarationElementsItemServiceImpl syDeclarationElementsItemService;
 	 @Autowired
 	private SyShippingOrderItemServiceImpl syShippingOrderItemService;
 	 @Resource
 	 private SyShippingOrderMapper syShippingOrderMapper;
+	 @Autowired
+	 private SysDictServiceImpl sysDictService;
 
 	
 	/**
@@ -452,25 +467,34 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 
 		 try {
 
-			 if(org.jeecg.modules.system.util.oConvertUtils.isEmpty(syShippingOrder.getId())){
+			 if(syShippingOrder.getIds().size()==0){
 				 result.setMessage("未拿到ID");
 				 result.setSuccess(false);
 				 return  result;
 			 }
-			 //判断是否有该数据
-			 SyShippingOrder entity = syShippingOrderService.getById(syShippingOrder.getId());
-			 if(org.jeecg.modules.system.util.oConvertUtils.isEmpty(entity)){
-				 result.setMessage("未找到该数据!");
-				 result.setSuccess(false);
-				 return  result;
+			 //判断是否有提交数据
+			 QueryWrapper<SyShippingOrder> queryWrapper = new QueryWrapper<SyShippingOrder>();
+			 queryWrapper.in("id",syShippingOrder.getIds());
+			 List<SyShippingOrder> entityList = syShippingOrderService.list(queryWrapper);
+			 if(syShippingOrder.getType().equals("1")){
+				 for (SyShippingOrder li : entityList) {
+			 		if(li.getTheDocumentsState().equals("1")){
+						result.setSuccess(false);
+						result.setMessage("部分单据已提交,请勿重复提交!");
+						return result;
+					}
+				}
+			 }else{
+				 for (SyShippingOrder li : entityList) {
+					 if(li.getTheDocumentsState().equals("0")){
+						 result.setSuccess(false);
+						 result.setMessage("部分单据已取消提交,请勿重复取消提交!");
+						 return result;
+					 }
+				 }
 			 }
-			 //判断是否已提交
-//		  if(shippingDetails.getState().equals("1") && syShippingDetails.getType().equals("1")){
-//			  result.setMessage("该单据已提交,不允许再次提交!");
-//			  result.setSuccess(false);
-//			  return  result;
-//		  }
-			 int i = syShippingOrderService.syShippingOrderSubmit(syShippingOrder.getId(),syShippingOrder.getType());
+
+			 int i = syShippingOrderService.syShippingOrderSubmit(syShippingOrder.getIds(),syShippingOrder.getType());
 			 if(i>0){
 				 if(syShippingOrder.getType().equals("1")){
 					 result.setSuccess(true);
@@ -501,14 +525,12 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 	 @AutoLog(value = "发票打印")
 	 @ApiOperation(value = "发票打印")
 	 @RequestMapping(value = "/syShippingOrderPrint")
-	 public Result<SyShippingOrder> syShippingOrderPrint(String id,String testName)  throws ParseException {
+	 public void syShippingOrderPrint(String id,String testName,HttpServletResponse response)  throws ParseException {
 
 		 Result<SyShippingOrder> result= new Result<SyShippingOrder>();
 
 		 //子表集合
 		 List<SyShippingOrderItem> list = new ArrayList<>();
-
-		 List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
 		 //总毛重
 		 BigDecimal totalGrossWeight = BigDecimal.ZERO;
          //总净重
@@ -518,9 +540,10 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
          //总金额
 		 BigDecimal tatolMoney = BigDecimal.ZERO;
 
+		 //查询主表数据
+		 SyShippingOrder entity = syShippingOrderService.getById(id);
+
 		 try {
-			 //查询主表数据
-			 SyShippingOrder entity = syShippingOrderService.getById(id);
 
 			 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
 			 Date date = sf.parse(entity.getLatestDateOfShipment());
@@ -559,8 +582,13 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 			 //String[] nameList = new String[]{"报关信息-报关单","报关信息-申报要素-成衣","报关信息-发票","报关信息-合同","报关信息-申报要素-面料","报关信息-装箱单"};
 
 			 if(testName.equals("报关信息-报关单")){
-				 TemplateExportParams params = new TemplateExportParams("D:\\"+testName+".xlsx");
+
 				 Map<String, Object> map = new HashMap<String, Object>();
+
+				 List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+
+				 TemplateExportParams params = new TemplateExportParams("D:\\单证模板\\"+testName+".xlsx");
+
 				 //转map
 				 Field[] fields = entity.getClass().getDeclaredFields();
 				 for (Field field : fields) {
@@ -580,13 +608,155 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 				 map.put("item", listMap);
 
 				 Workbook workbook = ExcelExportUtil.exportExcel(params,map);
-				 File savefile = new File("C:\\Users\\Mr_zeng\\Desktop\\");
-				 if (!savefile.exists()) {
-					 savefile.mkdirs();
+//				 File savefile = new File("C:\\Users\\Mr_zeng\\Desktop\\");
+//				 if (!savefile.exists()) {
+//					 savefile.mkdirs();
+//				 }
+				 ServletOutputStream outputStream = response.getOutputStream();
+
+//				 FileOutputStream fos = new FileOutputStream(outputStream);
+				 workbook.write(outputStream);
+//				 fos.close();
+
+			 }else if(testName.equals("报关信息-申报要素-成衣")){
+                 //传出的Map
+				 Map<String, Object> map = new HashMap<String, Object>();
+
+				 List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+				 List<Map<String, Object>> listMap1 = new ArrayList<Map<String, Object>>();
+
+				 TemplateExportParams params = new TemplateExportParams("D:\\"+testName+".xlsx");
+
+				 QueryWrapper<SyShippingOrderItem> queryWrapper = new QueryWrapper<>();
+				 queryWrapper.eq("sy_shipping_order_item_id",entity.getId()).eq("del_flag",0).groupBy("elements_Id");
+				 List<SyShippingOrderItem> itemList = syShippingOrderItemService.list(queryWrapper);
+
+				for(SyShippingOrderItem li:itemList){
+					map.put("name","zzzz"+li.getReadyFabric());
+
+					Map<String, Object> map1 = new HashMap<String, Object>();
+
+					//查询主表
+				    SyDeclarationElements elementEntity = syDeclarationElementsService.getById(li.getElementsId());
+				    //查询子表
+					QueryWrapper<SyDeclarationElementsItem> itemQueryWrapper = new QueryWrapper<>();
+					itemQueryWrapper.eq("sy_declaration_elements_id",li.getElementsId()).eq("del_flag",0);
+                    List<SyDeclarationElementsItem> itemList1 = syDeclarationElementsItemService.list(itemQueryWrapper);
+
+					for(SyDeclarationElementsItem li1:itemList1){
+						Field[] fieldsList = li1.getClass().getDeclaredFields();
+						Map<String, Object> map2 = new HashMap<String, Object>();
+						for (Field field : fieldsList) {
+							field.setAccessible(true);
+							map2.put(field.getName(), field.get(li1));
+						}
+						listMap1.add(map2);
+					}
+
+					map1.put("name","商品编码  "+elementEntity.getInventoryCode());
+					map1.put("value","商品描述: ");
+					map1.put("item",listMap1);
+
+					listMap.add(map1);
+				}
+
+				 map.put("list", listMap);
+
+				 Workbook workbook = ExcelExportUtil.exportExcel(params,map);
+//				 File savefile = new File("C:\\Users\\Mr_zeng\\Desktop\\");
+//				 if (!savefile.exists()) {
+//					 savefile.mkdirs();
+//				 }
+//				 FileOutputStream fos = new FileOutputStream("C:\\Users\\Mr_zeng\\Desktop\\"+testName+"1.xlsx");
+//				 workbook.write(fos);
+//				 fos.close();
+
+			 }if(testName.equals("报关信息-发票")){
+
+				 Map<String, Object> map = new HashMap<String, Object>();
+
+				 List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+
+				 //重新赋值
+				 Date date1 = new Date();
+				 entity.setLatestDateOfShipment(sf.format(date1));
+				 //出口口岸转大写拼音
+				 TopinYin py = new TopinYin();
+				 String exportPort = py.toPinYin(entity.getExportPort());
+				 entity.setExportPort(exportPort);
+				 //目的港+,+运抵国别转英文
+				 //查询数据字典获取英文
+				 List<DictModel> sysDicts = sysDictService.queryDictItemsByCode("port_of_destination");
+				 for(DictModel di:sysDicts){
+					 if(di.getText().equals(entity.getDestinationPort())){
+						 entity.setDestinationPort(di.getValue());
+					 }
+				 }
+				 List<DictModel> sysDicts1 = sysDictService.queryDictItemsByCode("country_of_arrival");
+				 for(DictModel di:sysDicts1){
+					 if(di.getText().equals(entity.getArriveInCountry())){
+						 entity.setArriveInCountry(di.getValue());
+					 }
+				 }
+
+				 //查询数据字典唛头
+				 List<DictModel> test = sysDictService.queryDictItemsByCode("test0902002");
+				 for(DictModel di:test){
+					 if(di.getText().equals(list.get(0).getClientAbbreviation())){
+					 	String split[] = di.getValue().split("\\+");
+					 	if(split.length != 12){
+							result.setSuccess(false);
+							result.setMessage("数据字典-唛头信息维护不正确!");
+							result.setResult(entity);
+						}
+						 entity.setPrimark(split[0]);
+						 entity.setKimballNo(split[1]);
+						 entity.setOrderNo(split[2]);
+						 entity.setCartonGrossWeight(split[3]);
+						 entity.setCartonDimensions(split[4]);
+						 entity.setCartonNumber(split[5]);
+						 entity.setCartonQuantity(split[6]);
+						 entity.setSubSectionDescription(split[7]);
+						 entity.setAssortedSizeCodes(split[8]);
+						 entity.setColour(split[9]);
+						 entity.setMadeInChina(split[10]);
+						 entity.setSizeBreakdown(split[11]);
+					 }
+				 }
+
+
+				 TemplateExportParams params = new TemplateExportParams("D:\\单证模板\\"+testName+".xlsx");
+
+				 //转map
+				 Field[] fields = entity.getClass().getDeclaredFields();
+				 for (Field field : fields) {
+					 field.setAccessible(true);
+					 map.put(field.getName(), field.get(entity));
+				 }
+				 //集合转map
+				 for(SyShippingOrderItem li:list){
+					 Field[] fieldsList = li.getClass().getDeclaredFields();
+					 Map<String, Object> mapList = new HashMap<String, Object>();
+					 for (Field field : fieldsList) {
+						 field.setAccessible(true);
+						 mapList.put(field.getName(), field.get(li));
+					 }
+					 listMap.add(mapList);
 				 }
-				 FileOutputStream fos = new FileOutputStream("C:\\Users\\Mr_zeng\\Desktop\\"+testName+"1.xlsx");
-				 workbook.write(fos);
-				 fos.close();
+
+				 map.put("item", listMap);
+
+				 Workbook workbook = ExcelExportUtil.exportExcel(params,map);
+//				 File savefile = new File("C:\\Users\\Mr_zeng\\Desktop\\");
+//				 if (!savefile.exists()) {
+//					 savefile.mkdirs();
+//				 }
+				 ServletOutputStream outputStream = response.getOutputStream();
+
+//				 FileOutputStream fos = new FileOutputStream(outputStream);
+				 workbook.write(outputStream);
+//				 fos.close();
+
 			 }
 
 			 result.setSuccess(true);
@@ -599,7 +769,8 @@ public class SyShippingOrderController extends JeecgController<SyShippingOrder,
 		 	log.error("生成失败:" + ex.getMessage());
 
 		 }
-	 	return result;
+
 	 }
 
+
 }

+ 31 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/entity/SyShippingOrder.java

@@ -231,6 +231,9 @@ public class SyShippingOrder {
 	@ApiModelProperty(value = "提交或者取消提交")
 	@TableField(exist = false)
 	private String type;
+	@ApiModelProperty(value = "提交或者取消提交的id集合")
+	@TableField(exist = false)
+	private List<String> ids;
 
 	//运输方式
 	private String typeOfShipping;
@@ -253,4 +256,32 @@ public class SyShippingOrder {
 	//总金额
 	@TableField(exist = false)
 	private BigDecimal tatolMoney;
+
+	/**
+	 * 打印使用字段
+	 */
+	@TableField(exist = false)
+	public String primark;
+	@TableField(exist = false)
+	private String kimballNo;
+	@TableField(exist = false)
+	private String orderNo;
+	@TableField(exist = false)
+	private String cartonGrossWeight;
+	@TableField(exist = false)
+	private String cartonDimensions;
+	@TableField(exist = false)
+	private String cartonNumber;
+	@TableField(exist = false)
+	private String cartonQuantity;
+	@TableField(exist = false)
+	private String subSectionDescription;
+	@TableField(exist = false)
+	private String assortedSizeCodes;
+	@TableField(exist = false)
+	private String colour;
+	@TableField(exist = false)
+	private String madeInChina;
+	@TableField(exist = false)
+	private String sizeBreakdown;
 }

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/entity/SyShippingOrderItem.java

@@ -236,4 +236,7 @@ public class SyShippingOrderItem {
 	//证免
 	@TableField(exist = false)
 	private String certificate;
+	//英文名称
+	@TableField(exist = false)
+	private String englishProductName;
 }

+ 6 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/mapper/xml/SyShippingOrderMapper.xml

@@ -87,9 +87,10 @@ group by group_id
 
     <select id="queryEelementMerge" resultType="org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem">
 
-select GROUP_CONCAT(a.id) as id,b.hs_code as hsCode,b.declaration_name as declarationName,sum(a.number) as number,a.unit_price as unitPrice,
+select GROUP_CONCAT(a.id) as id,b.hs_code as hsCode,b.declaration_name as declarationName,b.english_product_name as englishProductName, sum(a.number) as number,a.unit_price as unitPrice,
 sum(a.number*a.unit_price) as totalPrice,sum(a.gross_weight) as grossWeight,sum(a.net_weight) as netWeight,'PCS' as pcs,
-'USD' as curr,'CHAIN' as dree,'宁波其他/宁波象山县' as place,'照章征税' as certificate
+'USD' as curr,'CHAIN' as dree,'宁波其他/宁波象山县' as place,'照章征税' as certificate,a.style_number as styleNumber,
+a.order_number as orderNumber,a.client_abbreviation as clientAbbreviation
  from sy_shipping_order_item a
 left join sy_declaration_elements b
 on a.elements_Id = b.id
@@ -101,9 +102,10 @@ group by b.hs_code,b.declaration_name
 
     <select id="queryEelement" resultType="org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem">
 
-select GROUP_CONCAT(a.id) as id,b.hs_code as hsCode,b.declaration_name as declarationName,sum(a.number) as number,a.unit_price as unitPrice,
+select GROUP_CONCAT(a.id) as id,b.hs_code as hsCode,b.declaration_name as declarationName,b.english_product_name as englishProductName,sum(a.number) as number,a.unit_price as unitPrice,
 sum(a.number*a.unit_price) as totalPrice,sum(a.gross_weight) as grossWeight,sum(a.net_weight) as netWeight,'PCS' as pcs,
-'USD' as curr,'CHAIN' as dree,'宁波其他/宁波象山县' as place,'照章征税' as certificate
+'USD' as curr,'CHAIN' as dree,'宁波其他/宁波象山县' as place,'照章征税' as certificate,a.style_number as styleNumber,
+a.order_number as orderNumber,a.client_abbreviation as clientAbbreviation
  from sy_shipping_order_item a
 left join sy_declaration_elements b
 on a.elements_Id = b.id

+ 2 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/service/ISyShippingOrderService.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.documents.syShippingOrder.entity.VO.SyPackingList;
 
 import java.text.ParseException;
+import java.util.List;
 
 /**
  * @Description: 托书主表实体类
@@ -33,7 +34,7 @@ public interface ISyShippingOrderService extends IService<SyShippingOrder> {
     public SyShippingOrder syShippingOrderEdit(SyShippingOrder syShippingOrder) throws ParseException;
 
     //提交/取消提交
-    public int syShippingOrderSubmit(String id,String type);
+    public int syShippingOrderSubmit(List<String> id, String type);
 
     //删除子表数据
     public void syShippingOrderItemDelete(String id);

+ 16 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/service/impl/SyShippingOrderServiceImpl.java

@@ -382,16 +382,24 @@ public class SyShippingOrderServiceImpl extends ServiceImpl<SyShippingOrderMappe
      * @return
      */
     @Override
-    public int syShippingOrderSubmit(String id, String type) {
+    public int syShippingOrderSubmit(List<String> id, String type) {
         int i = 0;
-        SyShippingOrder syShippingOrder = getById(id);
-        if(oConvertUtils.isNotEmpty(syShippingOrder) && type.equals("1")){
-            syShippingOrder.setTheDocumentsState("1");
-            updateById(syShippingOrder);
+
+        QueryWrapper<SyShippingOrder> queryWrapper = new QueryWrapper<SyShippingOrder>();
+        queryWrapper.in("id",id);
+        List<SyShippingOrder> entityList = this.list(queryWrapper);
+
+        if(entityList.size()!=0 && type.equals("1")){
+            for(SyShippingOrder li:entityList){
+                li.setTheDocumentsState("1");
+                updateById(li);
+            }
             i = 1;
-        }else if(oConvertUtils.isNotEmpty(syShippingOrder) && type.equals("2")){
-            syShippingOrder.setTheDocumentsState("0");
-            updateById(syShippingOrder);
+        }else if(entityList.size()!=0 && type.equals("2")){
+            for(SyShippingOrder li:entityList){
+                li.setTheDocumentsState("0");
+                updateById(li);
+            }
             i = 1;
         }
         return i;

+ 79 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/tool/TopinYin.java

@@ -0,0 +1,79 @@
+package org.jeecg.modules.documents.syShippingOrder.tool;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+public class TopinYin {
+
+    HanyuPinyinOutputFormat format = null;
+    public static enum Type {
+        UPPERCASE,              //全部大写
+        LOWERCASE,              //全部小写
+        FIRSTUPPER              //首字母大写
+    }
+
+
+
+    public TopinYin(){
+        format = new HanyuPinyinOutputFormat();
+        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+    }
+
+
+    public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination {
+        return toPinYin(str, "", Type.UPPERCASE);
+    }
+
+    public String toPinYin(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{
+        return toPinYin(str, spera, Type.UPPERCASE);
+    }
+
+
+
+
+    /**
+     * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
+     * 如:明天 转换成 MINGTIAN
+     * @param str
+     * @param spera
+     * @return
+     * @throws BadHanyuPinyinOutputFormatCombination
+     */
+    public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {
+        if(str == null || str.trim().length()==0)
+            return "";
+        if(type == Type.UPPERCASE)
+            format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
+        else
+            format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+
+
+
+
+        String py = "";
+        String temp = "";
+        String[] t;
+        for(int i=0;i<str.length();i++){
+            char c = str.charAt(i);
+            if((int)c <= 128)
+                py += c;
+            else{
+                t = PinyinHelper.toHanyuPinyinStringArray(c, format);
+                if(t == null)
+                    py += c;
+                else{
+                    temp = t[0];
+                    if(type == Type.FIRSTUPPER)
+                        temp = t[0].toUpperCase().charAt(0)+temp.substring(1);
+                    py += temp+(i==str.length()-1?"":spera);
+                }
+            }
+        }
+        return py.trim();
+    }
+
+}