diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java index df946a85..ee1f6c71 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java @@ -84,7 +84,7 @@ public class CommodityController { log.info("参数 {}", map); String xhfNsrsbh = (String) map.get("xhfNsrsbh"); - String entId = (String) map.get("entId"); // 数据权限id,对应的大B下的企业id + String entId = (String) map.get("entList"); // 数据权限id,对应的大B下的企业id if (StringUtils.isBlank(xhfNsrsbh)) { log.error("{},请求税号为空!", LOGGER_MSG); return R.error(OrderInfoContentEnum.TAXCODE_ISNULL); @@ -145,7 +145,9 @@ public class CommodityController { if (StringUtils.isBlank(commodityCodeEntity.getCommodityId())) { commodityCodeEntity.setCommodityId(commodityCodeEntity.getId()); } - + if(StringUtils.isBlank(commodityCodeEntity.getInvoiceName())){ + commodityCodeEntity.setInvoiceName(""); + } //成品油为空就设置默认值 if (StringUtils.isEmpty(commodityCodeEntity.getCpy())) { @@ -170,7 +172,12 @@ public class CommodityController { if (ObjectUtil.isNotEmpty(maps)) { return R.error().put(OrderManagementConstant.DATA, maps); } - boolean flag = commodityService.addOrEditCommodity(commodityCodeEntity); + boolean flag = false; + try { + flag = commodityService.addOrEditCommodity(commodityCodeEntity); + } catch (Exception e) { + flag = false; + } log.info("返回值:{}", flag); return flag ? R.ok().put("msg", "保存成功") : R.ok().put(OrderManagementConstant.CODE, ConfigureConstant.STRING_9999).put("msg", "保存失败"); } diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/model/CommodityCodeEntity.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/model/CommodityCodeEntity.java index f43d1af1..9267a9cb 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/model/CommodityCodeEntity.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/model/CommodityCodeEntity.java @@ -212,5 +212,7 @@ public class CommodityCodeEntity implements Serializable { private String UUID; private Boolean success; + private String invoiceName; + } diff --git a/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml b/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml index f76a656e..e616ca56 100644 --- a/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml +++ b/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml @@ -42,6 +42,7 @@ + @@ -95,7 +96,8 @@ cc.wlflbm, cc.wlflmc, cc.ent_id, - cc.tswl + cc.tswl, + cc.invoice_name FROM commodity_code cc LEFT JOIN group_commodity gc ON gc.id = cc.group_id @@ -495,6 +497,9 @@ tswl, + + invoice_name, + @@ -613,6 +618,9 @@ #{tswl,jdbcType=VARCHAR}, + + invoiceName, + diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java index 556ee1ba..3883ec57 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java @@ -914,7 +914,7 @@ public enum OrderInfoEnum { EXPORT_EXCEL_TYPE_1("1", "发票明细"), EXPORT_EXCEL_TYPE_2("2", "机动车发票明细"), EXPORT_EXCEL_TYPE_3("3", "二手车发票明细"), - EXPORT_EXCEL_TYPE_4("4", "交接单导出"), + EXPORT_EXCEL_TYPE_5("5", "交接单导出"), /** * 二手车开票方类型 diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/RedisConstant.java b/order-management-common/src/main/java/com/dxhy/order/constant/RedisConstant.java index b5acb09c..106c38ef 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/RedisConstant.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/RedisConstant.java @@ -75,7 +75,10 @@ public class RedisConstant { * 接收推送结果锁 */ public static final String REDIS_ORDER_LOCK_RECEIVE_KEY = "xxfp:cache:lock:receive:%s"; - + /** + * 推送opentext同步锁 + */ + public static final String REDIS_ORDER_LOCK_OPENTEXT_KEY = "xxfp:cache:lock:pentext:%s"; /** * 二维码开票接收微信推送redis同步锁前缀 */ diff --git a/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceDetail.java b/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceDetail.java index 6bba07c4..6ccd689a 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceDetail.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceDetail.java @@ -124,4 +124,14 @@ public class OrderInvoiceDetail implements Serializable { * 矿别 */ private String kb; + + private String xh; + + private String invoiceDate; + + private String signName; + + private String signDate; + + private String sellerName; } diff --git a/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceInfo.java b/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceInfo.java index 5075b50b..4780339c 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceInfo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceInfo.java @@ -327,4 +327,6 @@ public class OrderInvoiceInfo implements Serializable { * 税控错误描述 */ private String skcwms; + + private String docuId; } diff --git a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java index b734948e..15712a5a 100644 --- a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java +++ b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java @@ -1,9 +1,13 @@ package com.dxhy.order.utils; import cn.hutool.http.HttpRequest; +import com.dxhy.order.model.R; import lombok.extern.slf4j.Slf4j; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -83,5 +87,57 @@ public class HttpUtils { log.debug("{}以字符串调用post请求url:{},耗时:{}", LOGGER_MSG, url, endTime - startTime); return body; } + /** + * 上传文件 + * + * @param + * @param + * @return + */ + + public static String uploadFile(File file,String url, String arcId,String userName,String password) { + String uploadPath = url + "/uploadFile/UploadServlet?ArcId=" + arcId; + Map headers = new HashMap<>(); + headers.put("USERNAME", userName); + headers.put("PASSWORD", password); + + try { + String sResponse = HttpRequest.post(uploadPath).addHeaders(headers).form("file",file).timeout(300000).execute().body(); + return sResponse; + } catch (Exception e) { + return null; + } + } + + public static void main(String[] args) { + String uploadPath = "http://114.116.202.129:8015/order-api/receiveOrder/excel"; + HttpRequest httpRequest = new HttpRequest(uploadPath); + Map head = new HashMap<>(); +// head.put("Content-Type", "multipart/form-data"); + head.put("Cookie", "td_cookie=1198311647; dxhy_sso_sessionid=10_7af9802681df4941a1afc7562bb30538"); + head.put("cookieId", "10_7af9802681df4941a1afc7562bb30538"); + + try { + File file = new File("D:\\test\\订单导入模板 .xlsx"); + Map dd = new HashMap<>(); + dd.put("id","WU_FILE_0"); + dd.put("name","订单导入模板.xlsx"); + dd.put("type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + dd.put("lastModifiedDate","Thu Apr 06 2023 14:48:04 GMT+0800 (中国标准时间)"); + dd.put("size","13129"); + dd.put("xhfNsrsbh","110101MYJ2GPQQ4"); + dd.put("xhfZh","123123"); + dd.put("xhfYh","123"); + dd.put("xhfDh","123"); + dd.put("xhfDz","123"); + dd.put("xhfMc","PQQ4测试"); + dd.put("userId","10"); + + String sResponse = HttpRequest.post(uploadPath).addHeaders(head).form(dd).form("file",file).timeout(300000).execute().body(); + System.out.println(sResponse); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/domain/dto/QuoteGroupCommodityDTO.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/domain/dto/QuoteGroupCommodityDTO.java index 69e312b8..265d42e4 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/domain/dto/QuoteGroupCommodityDTO.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/domain/dto/QuoteGroupCommodityDTO.java @@ -21,6 +21,8 @@ public class QuoteGroupCommodityDTO { //@NotBlank(message = "接收引用物料的销方纳税人识别号不能为空!") private String xhfNsrsbh; + private String xhfMc; + @NotBlank(message = "接收引用物料的销方企业id不能为空!") private String deptId; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/service/impl/GroupCommodityCodeServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/service/impl/GroupCommodityCodeServiceImpl.java index a6a45f60..08ce110e 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/service/impl/GroupCommodityCodeServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/service/impl/GroupCommodityCodeServiceImpl.java @@ -129,6 +129,8 @@ public class GroupCommodityCodeServiceImpl implements IGroupCommodityCodeService newCommodityCodeEntity.setId(baseService.getGenerateShotKey()); newCommodityCodeEntity.setXhfNsrsbh(quoteGroupCommodityDTO.getXhfNsrsbh()); newCommodityCodeEntity.setEntId(quoteGroupCommodityDTO.getDeptId()); + newCommodityCodeEntity.setDataState("0"); + newCommodityCodeEntity.setXhfMc(quoteGroupCommodityDTO.getXhfMc()); if (groupCommodityMapper.insertCommodityCode(newCommodityCodeEntity) <= 0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return R.error("第" + (i + 1) + "条数据,引用失败"); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/model/OpenTextResult.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/model/OpenTextResult.java new file mode 100644 index 00000000..85399f0c --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/model/OpenTextResult.java @@ -0,0 +1,14 @@ +package com.dxhy.order.consumer.modules.manager.model; + +import lombok.Data; + +@Data +public class OpenTextResult { + + private String archId; + private String comptype; + private String docuId; + private String fileLength; + private String fileName; + private String msgType; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java index 01da05fd..38d49e52 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dxhy.order.baseservice.config.BaseServiceConfig; import com.dxhy.order.baseservice.module.thirdservice.rabbitmq.service.RabbitMqSendMessageService; @@ -15,6 +16,7 @@ import com.dxhy.order.consumer.model.protocol.CommonResponse; import com.dxhy.order.consumer.model.protocol.ResponseData; import com.dxhy.order.consumer.model.protocol.ResponseStatus; import com.dxhy.order.consumer.modules.jdjos.service.PushInvoiceToJdJosService; +import com.dxhy.order.consumer.modules.manager.model.OpenTextResult; import com.dxhy.order.consumer.modules.manager.service.PushInvoiceService; import com.dxhy.order.consumer.modules.manager.service.QuickCodeInfoService; import com.dxhy.order.consumer.modules.order.service.OrderCommonService; @@ -48,6 +50,7 @@ import com.dxhy.order.consumer.openapi.service.CommonDisposeService; import com.dxhy.order.consumer.openapi.service.InterfaceServiceV5; import com.dxhy.order.consumer.utils.BeanTransitionUtils; import com.dxhy.order.consumer.utils.InterfaceBeanTransUtils; +import com.dxhy.order.consumer.utils.OpentextUtils; import com.dxhy.order.exception.InterfaceException; import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.config.InvoiceConfig; @@ -69,6 +72,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -356,6 +362,8 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { } String fptsParam = ""; + //opentext 推送图片 + this.openTextUploadFile(fpTsMqData,shList); //多个地址循环推送 for (PushInfo pushInfo : pushInfoList) { @@ -538,6 +546,76 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { return r; } + private void openTextUploadFile (CommonTsMqData fpTsMqData,List shList){ + + String uuid = null; + File file = null; + FileOutputStream fos = null; + try { + uuid = UUID.randomUUID().toString(); + String invoiceRedisLock = String.format(RedisConstant.REDIS_ORDER_LOCK_OPENTEXT_KEY, fpTsMqData.getFpTsMqData().getFpqqlsh()); + if (!redisService.setNx(invoiceRedisLock, uuid,RedisConstant.REDIS_EXPIRE_TIME_1MIN)) { + //判断数据过期时间是否为-1,如果为-1,设置为30分钟 + Long expire = redisService.getExpire(invoiceRedisLock); + if(ConfigureConstant.LONG_1_ == expire){ + redisService.setExpire(invoiceRedisLock,RedisConstant.REDIS_EXPIRE_TIME_1MIN); + } + } + OrderInvoiceInfo orderInvoiceInfo1 = new OrderInvoiceInfo(); + orderInvoiceInfo1.setFpqqlsh(fpTsMqData.getFpTsMqData().getFpqqlsh()); + OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(orderInvoiceInfo1, shList); + if(orderInvoiceInfo == null || StringUtils.isNotBlank(orderInvoiceInfo.getDocuId())){ + log.info("发送opentext,发票号码{}不存在或此发票已推送不允许重复推送",fpTsMqData.getFpTsMqData().getFphm()); + throw new Exception("发送opentext,发票号码"+ fpTsMqData.getFpTsMqData().getFphm() +"不存在或此发票已推送不允许重复推送"); + } + boolean fpdmhmDp = (OrderInfoEnum.ORDER_INVOICE_TYPE_51.getKey().equals(orderInvoiceInfo.getFpzlDm()) + || OrderInfoEnum.ORDER_INVOICE_TYPE_01.getKey().equals(orderInvoiceInfo.getFpzlDm()) + || OrderInfoEnum.ORDER_INVOICE_TYPE_02.getKey().equals(orderInvoiceInfo.getFpzlDm()) + || OrderInfoEnum.ORDER_INVOICE_TYPE_52.getKey().equals(orderInvoiceInfo.getFpzlDm())) + && StringUtils.isNotEmpty(orderInvoiceInfo.getFphm()); + if(!fpdmhmDp){ + throw new Exception("非电票不推送"); + } + + List fileDownLoadList = orderInvoiceInfoService.getInvoiceFile( + "6", orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), + orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), orderInvoiceInfo.getSksbdm(),""); + //将base64 转为文件对象 + if(fileDownLoadList != null && fileDownLoadList.size()> 0){ + byte[] decode = Base64Encoding.decode(fileDownLoadList.get(0).getFileContent().getBytes()); + file = new File(invoiceConfig.getOpenTextTempPath() + fileDownLoadList.get(0).getFileName()); + fos = new FileOutputStream(file); + fos.write(decode); + fos.flush(); + + String openTextResult = HttpUtils.uploadFile(file, invoiceConfig.getOpentextUrl(), invoiceConfig.getArcId(), invoiceConfig.getOpentextUserName(), invoiceConfig.getOpentextPasswd()); + log.info("调用opentext接口返回结果:{}",openTextResult); + if(StringUtils.isNotBlank(openTextResult)){ + List openTextResults = JSONArray.parseArray(openTextResult, OpenTextResult.class); + StringBuffer sb = new StringBuffer(); + openTextResults.forEach(t->sb.append(t.getDocuId()).append(",")); + orderInvoiceInfo1.setDocuId(sb.toString()); + orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderInvoiceInfo, shList); + } + } + } catch (Exception e) { + log.error("发送opentext异常:{}",e.getMessage()); + } finally { + try { + if(file != null){file.delete();} + if(fos != null) {fos.close();} + } catch (IOException e) { + log.error("发送opentext关闭文件流异常:{}",e.getMessage()); + } + + String cacheFpqqlsh = String.format(RedisConstant.REDIS_ORDER_LOCK_OPENTEXT_KEY, fpTsMqData.getFpTsMqData().getFpqqlsh()); + if (uuid.equals(redisService.get(cacheFpqqlsh))) { + redisService.del(cacheFpqqlsh); + } + } + + } + private R processPushFail(CommonTsMqData commonTsMqData, String pushUrl, String msg, List shList) { if (StrUtil.isNotBlank(pushUrl)) { diff --git a/order-management-consumer/src/main/resources/mybatis/mapper/GroupCommodityCodeMapper.xml b/order-management-consumer/src/main/resources/mybatis/mapper/GroupCommodityCodeMapper.xml index d68ec7f8..9028ebae 100644 --- a/order-management-consumer/src/main/resources/mybatis/mapper/GroupCommodityCodeMapper.xml +++ b/order-management-consumer/src/main/resources/mybatis/mapper/GroupCommodityCodeMapper.xml @@ -387,52 +387,57 @@ where xhf_nsrsbh = #{xhfNsrsbh,jdbcType=VARCHAR} and ent_id = #{entId,jdbcType=VARCHAR} - - insert into commodity_code (commodity_id, sort_id, xhf_nsrsbh, merchandise_name, encoding, tax_items, - brief_code, - tax_rate, specification_model, metering_unit, unit_price, tax_logo, hide_the_logo, - enjoy_preferential_policies, tax_class_code, tax_classification_name, - preferential_policies_type, zzstsgl, - user_id, create_time, modify_time, modify_user_id, group_id, enterprise_name, - data_source, - matching_state, data_state, tax_class_abbreviation, description, collect_ident, cpy, - bmb_bbh, jdc, wlflbm, wlflmc,ent_id) - select commodity_id, - sort_id, - #{to.xhfNsrsbh,jdbcType=VARCHAR}, - merchandise_name, - encoding, - tax_items, - brief_code, - tax_rate, - specification_model, - metering_unit, - unit_price, - tax_logo, - hide_the_logo, - enjoy_preferential_policies, - tax_class_code, - tax_classification_name, - preferential_policies_type, - zzstsgl, - user_id, - create_time, - modify_time, - modify_user_id, - group_id, - enterprise_name, - data_source, - matching_state, - data_state, - tax_class_abbreviation, - description, - collect_ident, - cpy, - bmb_bbh, - jdc, - wlflbm, - wlflmc, - #{to.entId,jdbcType=VARCHAR} + + insert into commodity_code ( + id,commodity_id, sort_id, xhf_nsrsbh, merchandise_name, encoding, tax_items, + brief_code, + tax_rate, specification_model, metering_unit, unit_price, tax_logo, hide_the_logo, + enjoy_preferential_policies, tax_class_code, tax_classification_name, + preferential_policies_type, zzstsgl, + user_id, create_time, modify_time, modify_user_id, group_id, enterprise_name, + data_source, + matching_state, data_state, tax_class_abbreviation, description, collect_ident, cpy, + bmb_bbh, jdc, wlflbm, wlflmc,invoice_name,ent_id + ) + select + CONCAT(#{to.entId,jdbcType=VARCHAR},'-',id) + commodity_id, + sort_id, + #{to.xhfNsrsbh,jdbcType=VARCHAR}, + merchandise_name, + encoding, + tax_items, + brief_code, + tax_rate, + specification_model, + metering_unit, + unit_price, + tax_logo, + hide_the_logo, + enjoy_preferential_policies, + tax_class_code, + tax_classification_name, + preferential_policies_type, + zzstsgl, + user_id, + create_time, + modify_time, + modify_user_id, + group_id, + enterprise_name, + data_source, + matching_state, + data_state, + tax_class_abbreviation, + description, + collect_ident, + cpy, + bmb_bbh, + jdc, + wlflbm, + wlflmc, + invoice_name, + #{to.entId,jdbcType=VARCHAR} from commodity_code where xhf_nsrsbh = #{from.xhfNsrsbh,jdbcType=VARCHAR} and ent_id = #{from.entId,jdbcType=VARCHAR} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/InvoiceConfig.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/InvoiceConfig.java index 78e34d71..301fe336 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/InvoiceConfig.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/InvoiceConfig.java @@ -86,8 +86,6 @@ public class InvoiceConfig { @Value("${order.print.tempPath}") public String printTempPath; - - /** * 京东万家渠道,用于判断是否进行推送部署消息 */ @@ -191,7 +189,21 @@ public class InvoiceConfig { */ @Value("${order.checkFail.limitInvalidCount}") private String checkFailLimitInvalidCount; - + + @Value("${order.opentext.url}") + public String opentextUrl; + + @Value("${order.opentext.userName}") + public String opentextUserName; + + @Value("${order.opentext.password}") + public String opentextPasswd; + + @Value("${order.opentext.arcid}") + public String arcId; + + @Value("${order.opentext.tempPath}") + public String openTextTempPath; /** * mqtt相关配置 diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/ExportExcelController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/ExportExcelController.java index a8b90862..b930794e 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/ExportExcelController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/ExportExcelController.java @@ -78,6 +78,10 @@ public class ExportExcelController { String filePrefix = DateUtil.format(new Date(), ConfigureConstant.DATE_FORMAT_DATE_YMDHMS); try { + if(OrderInfoEnum.EXPORT_EXCEL_TYPE_5.getKey().equals(orderBatchQuery.getExportType())&&StringUtils.isBlank(orderBatchQuery.getIds())){ + throw new Exception("请求参数有误,"); + } + String fileName = OrderInfoEnum.EXPORT_EXCEL_TYPE_0.getValue(); if (OrderInfoEnum.EXPORT_EXCEL_TYPE_1.getKey().equals(orderBatchQuery.getExportType())) { fileName = OrderInfoEnum.EXPORT_EXCEL_TYPE_1.getValue(); diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceController.java index a5798010..c0009874 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceController.java @@ -15,6 +15,7 @@ import com.dxhy.order.model.PageUtils; import com.dxhy.order.model.R; import com.dxhy.order.model.page.OrderListQuery; import com.dxhy.order.model.sk.sld.SearchSld; +import com.dxhy.order.utils.Base64Encoding; import com.dxhy.order.utils.JsonUtils; import com.dxhy.order.utils.NsrsbhUtils; import com.dxhy.order.utils.PageBeanConvertUtil; @@ -33,6 +34,9 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.util.*; /** @@ -99,26 +103,35 @@ public class InvoiceController { @PostMapping(value = "/printSignInvoice") @ApiOperation(value = "交付单打印", notes = "发票查询-交付单打印") @SysLog(operation = "交付单打印", operationDesc = "发票打印", key = "发票打印") - public void printSignInvoice(@RequestBody OrderListQuery orderBatchQuery,HttpServletRequest request, HttpServletResponse response) { + public R printSignInvoice(@RequestBody OrderListQuery orderBatchQuery,HttpServletRequest request, HttpServletResponse response) { log.info("{}交付单打印请求参数:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderBatchQuery)); - String printTempPath = config.getPrintTempPath(); - - if(Objects.isNull(orderBatchQuery) || StringUtils.isNotBlank(orderBatchQuery.getIds())){ + String[] toDay = DateUtil.today().split("-"); + String printTempRoot = config.getPrintTempPath() + "excelFile/" + toDay[0] + "/"+ toDay[1] + "/" + toDay[2] + "/"; + String printTempPath = printTempRoot + fileNamePrefix + fileSplit + UUID.randomUUID() + fileNameSurfix; + String base64File = ""; + if(Objects.isNull(orderBatchQuery) || StringUtils.isBlank(orderBatchQuery.getIds())){ log.error("{}请求参数为空", LOGGER_MSG); } else { response.setHeader("Content-disposition", "inline;filename="+ "printInvoice.pdf"); response.setContentType(ConfigureConstant.STRING_APPLICATION_PDF); try { - String[] toDay = DateUtil.today().split("-"); - String file = orderInvoiceInfoService.signInvoicePrint(printTempPath + "excelFile/" + toDay[0] + "/" - + toDay[1] + "/" + toDay[2] + "/" + fileNamePrefix + fileSplit + UUID.randomUUID() + fileNameSurfix , Arrays.asList(orderBatchQuery.getIds().split(","))); - log.debug("交付单打印base64文件流{}",file); - response.getOutputStream().write(file.getBytes()); + File file = new File(printTempRoot); + if(!file.exists()){ + file.mkdirs(); + } + file = new File(printTempPath); + if(!file.exists()){ + file.createNewFile(); + } + base64File = orderInvoiceInfoService.signInvoicePrint(printTempPath , Arrays.asList(orderBatchQuery.getIds().split(","))); + log.debug("交付单打印base64文件流{}",base64File); +// response.getOutputStream().write(base64File.getBytes()); } catch (Exception e) { - e.printStackTrace(); + return R.error("系统异常,请联系管理员"); } } + return R.ok().put("data", base64File); } @ApiOperation(value = "发票信息明细查询", notes = "订单发票管理-查询发票明细列表") diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceInfo.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceInfo.java index 19a1dc8d..8985f0e7 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceInfo.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceInfo.java @@ -17,7 +17,8 @@ import java.util.List; @Setter @ToString public class ExportInvoiceInfo implements Serializable { - + + private String xh; private String ddh; private String fpdm; private String fphm; @@ -164,6 +165,8 @@ public class ExportInvoiceInfo implements Serializable { private String signName; private String signDate; + private String invoiceDate; + private String sellerName; private List exportInvoiceItemInfoList; } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceSignInfoEnum.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceSignInfoEnum.java index 46af04aa..7cb29078 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceSignInfoEnum.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceSignInfoEnum.java @@ -16,15 +16,15 @@ public enum ExportInvoiceSignInfoEnum { * 必须按照顺序存放,否则会异常 */ EXCEL_EXPORT_INVOICE_XH("0", "xh", "序号",1f), - EXCEL_EXPORT_INVOICE_KPRQ("1", "kprq", "开票日期",2f), - EXCEL_EXPORT_INVOICE_XHFMC("2", "xhfMc", "销方单位名称",3f), - EXCEL_EXPORT_INVOICE_GHFMC("3", "ghfMc", "购方单位名称",3f), + EXCEL_EXPORT_INVOICE_KPRQ("1", "invoiceDate", "开票日期",3f), + EXCEL_EXPORT_INVOICE_XHFMC("2", "sellerName", "销方单位名称",3.5f), + EXCEL_EXPORT_INVOICE_GHFMC("3", "ghfMc", "购方单位名称",3.5f), EXCEL_EXPORT_INVOICE_FPDM("4", "fpdm", "发票代码",2f), - EXCEL_EXPORT_INVOICE_FPHM("5", "fphm", "发票号码",2f), - EXCEL_EXPORT_INVOICE_HJJE("6", "hjbhsje", "不含税金额",2f), - EXCEL_EXPORT_INVOICE_HJSE("7", "kpse", "税额",2f), - EXCEL_EXPORT_INVOICE_JSHJ("8", "kphjje", "价税合计金额",2f), - EXCEL_EXPORT_INVOICE_FPLX("9", "bz", "备注",4f), + EXCEL_EXPORT_INVOICE_FPHM("5", "fphm", "发票号码",1.5f), + EXCEL_EXPORT_INVOICE_HJJE("6", "hjbhsje", "不含税金额",1.5f), + EXCEL_EXPORT_INVOICE_HJSE("7", "kpse", "税额",1f), + EXCEL_EXPORT_INVOICE_JSHJ("8", "kphjje", "价税合计金额",1.5f), + EXCEL_EXPORT_INVOICE_FPLX("9", "bz", "备注",3.5f), EXCEL_EXPORT_INVOICE_XHFNSRSBH("10", "signName", "交接人",2f), EXCEL_EXPORT_INVOICE_GHFNSRSBH("11", "signDate", "交接日期",2f); diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 3aacc4e6..d2a40ed1 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -57,11 +57,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; @@ -458,7 +456,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { public List exportAllInvoiceDetailByPage(Map paramMap, List shList, List entList, String type) { List exportInvoiceInfoList = new ArrayList<>(); //非主信息的需要查询明细数据 - boolean isNeedItem = !OrderInfoEnum.EXPORT_EXCEL_TYPE_0.getKey().equals(type)||!OrderInfoEnum.EXPORT_EXCEL_TYPE_4.getKey().equals(type); + boolean isNeedItem = !OrderInfoEnum.EXPORT_EXCEL_TYPE_0.getKey().equals(type)&&!OrderInfoEnum.EXPORT_EXCEL_TYPE_5.getKey().equals(type); int pageSize = Integer.parseInt(String.valueOf(paramMap.get(ConfigureConstant.STRING_PAGE_SIZE))); int currPage = Integer.parseInt(String.valueOf(paramMap.get(ConfigureConstant.STRING_CURR_PAGE))); @@ -473,7 +471,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { log.info("发票明细excel导出查询数据库入参:{}", JsonUtils.getInstance().toJsonString(paramMap)); List orderInvoiceDetails = null; - if(OrderInfoEnum.EXPORT_EXCEL_TYPE_4.getKey().equals(type)){ + if(OrderInfoEnum.EXPORT_EXCEL_TYPE_5.getKey().equals(type)){ orderInvoiceDetails = orderInvoiceInfoMapper.selectInvoiceByIds((List)paramMap.get("ids")); }else{ orderInvoiceDetails = orderInvoiceInfoMapper.selectRedAndInvoiceBymap(paramMap, shList, entList); @@ -509,6 +507,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { log.info("发票明细数据组装耗时:{}", endTime1 - startTime1); //数据信息转换 + int xh = 1; for (OrderInvoiceDetail orderInvoiceDetail : orderInvoiceDetails) { ExportInvoiceInfo exportInvoiceInfo = new ExportInvoiceInfo(); //过滤数据,根据type判断当前导出的是什么类型的数据,如果type为0,不需要处理,如果type为1,只保留普电专数据,如果type为2,只保留机动车数据,如果type为3,只保留二手车数据 @@ -573,10 +572,12 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //发票主信息补全 + exportInvoiceInfo.setXh(String.valueOf(xh)); exportInvoiceInfo.setDdh(StringUtils.isNotBlank(orderInvoiceDetail.getDdh()) ? orderInvoiceDetail.getDdh() : ""); exportInvoiceInfo.setFpdm(StringUtils.isNotBlank(orderInvoiceDetail.getFpdm()) ? orderInvoiceDetail.getFpdm() : ""); exportInvoiceInfo.setFphm(StringUtils.isNotBlank(orderInvoiceDetail.getFphm()) ? orderInvoiceDetail.getFphm() : ""); exportInvoiceInfo.setXhfMc(StringUtils.isNotBlank(orderInvoiceDetail.getXhfmc()) ? orderInvoiceDetail.getXhfmc() : ""); + exportInvoiceInfo.setSellerName(StringUtils.isNotBlank(orderInvoiceDetail.getXhfmc()) ? orderInvoiceDetail.getXhfmc() : ""); exportInvoiceInfo.setXhfNsrsbh(StringUtils.isNotBlank(orderInvoiceDetail.getXhfNsrsbh()) ? orderInvoiceDetail.getXhfNsrsbh() : ""); exportInvoiceInfo.setXhfDz(StringUtils.isNotBlank(orderInvoiceDetail.getXhfDz()) ? orderInvoiceDetail.getXhfDz() : ""); exportInvoiceInfo.setXhfDh(StringUtils.isNotBlank(orderInvoiceDetail.getXhfDh()) ? orderInvoiceDetail.getXhfDh() : ""); @@ -594,6 +595,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { exportInvoiceInfo.setKplx(StringUtils.isNotBlank(orderInvoiceDetail.getKplx()) ? CommonUtils.getKplxMc(orderInvoiceDetail.getKplx()) : ""); exportInvoiceInfo.setZfbz(StringUtils.isNotBlank(orderInvoiceDetail.getZfbz()) ? CommonUtils.getZfbzMc(orderInvoiceDetail.getZfbz()) : ""); exportInvoiceInfo.setKprq(ObjectUtil.isNotNull(orderInvoiceDetail.getKprq()) ? DateUtil.formatDateTime(orderInvoiceDetail.getKprq()) : ""); + exportInvoiceInfo.setInvoiceDate(ObjectUtil.isNotNull(orderInvoiceDetail.getKprq()) ? DateUtil.formatDateTime(orderInvoiceDetail.getKprq()) : ""); exportInvoiceInfo.setKphjje(StringUtils.isNotBlank(orderInvoiceDetail.getKphjje()) ? orderInvoiceDetail.getKphjje() : ""); exportInvoiceInfo.setHjbhsje(StringUtils.isNotBlank(orderInvoiceDetail.getHjbhsje()) ? orderInvoiceDetail.getHjbhsje() : ""); exportInvoiceInfo.setKpse(StringUtils.isNotBlank(orderInvoiceDetail.getKpse()) ? orderInvoiceDetail.getKpse() : ""); @@ -643,7 +645,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { exportInvoiceInfoList.add(exportInvoiceInfo); - + xh++; } @@ -700,7 +702,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { headToProperty.put(exportEscInvoiceInfoEnum.getValue(), exportEscInvoiceInfoEnum.getCellName()); headerToColumnMap.put(exportEscInvoiceInfoEnum.getValue(), exportEscInvoiceInfoEnum.getKey()); } - } else if (OrderInfoEnum.EXPORT_EXCEL_TYPE_4.getKey().equals(type)) { + } else if (OrderInfoEnum.EXPORT_EXCEL_TYPE_5.getKey().equals(type)) { for (ExportInvoiceSignInfoEnum exportEscInvoiceInfoEnum : ExportInvoiceSignInfoEnum.values()) { headToProperty.put(exportEscInvoiceInfoEnum.getValue(), exportEscInvoiceInfoEnum.getCellName()); headerToColumnMap.put(exportEscInvoiceInfoEnum.getValue(), exportEscInvoiceInfoEnum.getKey()); @@ -739,7 +741,6 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { } } - sxssfWorkbook.write(out); final DateTime endTime6 = DateTime.now(); final long time13 = new Duration(startTime, endTime6).getMillis(); @@ -1146,7 +1147,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { byte[] bytes = new byte[fis.available()]; fis.read(bytes); // 读取到 byte 里面 fis.close(); - file.delete(); +// file.delete(); return Base64Encoding.encodeToString(bytes); } @@ -1159,6 +1160,14 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { PageHelper.startPage(curr, 500); List orderInvoiceDetails = orderInvoiceInfoMapper.selectInvoiceByIds(ids); PageInfo pageInfo = new PageInfo<>(orderInvoiceDetails); + int xh = 1; + for (OrderInvoiceDetail orderInvoiceDetail : orderInvoiceDetails) { + orderInvoiceDetail.setXh(String.valueOf(xh)); + orderInvoiceDetail.setInvoiceDate(orderInvoiceDetail.getKprq() != null ? DateUtil.formatDateTime(orderInvoiceDetail.getKprq()):""); + orderInvoiceDetail.setSellerName(orderInvoiceDetail.getXhfmc()); + xh++; + } + // 用于页面展示 List resultList = pageInfo.getList();