feature:1、推送发票,推送opentext并保存docuid;2、交接单打印;3、交接单导出,4、物料的克隆,5、物料的新增

release
gaorl 2 years ago
parent 3631282685
commit 3da8dfd055
  1. 13
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java
  2. 2
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/model/CommodityCodeEntity.java
  3. 10
      order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml
  4. 2
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java
  5. 5
      order-management-common/src/main/java/com/dxhy/order/constant/RedisConstant.java
  6. 10
      order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceDetail.java
  7. 2
      order-management-common/src/main/java/com/dxhy/order/model/OrderInvoiceInfo.java
  8. 56
      order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java
  9. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/domain/dto/QuoteGroupCommodityDTO.java
  10. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/commodity/service/impl/GroupCommodityCodeServiceImpl.java
  11. 14
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/model/OpenTextResult.java
  12. 78
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java
  13. 13
      order-management-consumer/src/main/resources/mybatis/mapper/GroupCommodityCodeMapper.xml
  14. 16
      order-management-invoice/src/main/java/com/dxhy/order/invoice/config/InvoiceConfig.java
  15. 4
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/ExportExcelController.java
  16. 33
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceController.java
  17. 3
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceInfo.java
  18. 16
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/excel/ExportInvoiceSignInfoEnum.java
  19. 29
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.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", "保存失败");
}

@ -212,5 +212,7 @@ public class CommodityCodeEntity implements Serializable {
private String UUID;
private Boolean success;
private String invoiceName;
}

@ -42,6 +42,7 @@
<result column="wlflmc" jdbcType="VARCHAR" property="wlflmc"/>
<result column="ent_id" jdbcType="VARCHAR" property="entId"/>
<result column="tswl" jdbcType="VARCHAR" property="tswl"/>
<result column="invoice_name" jdbcType="VARCHAR" property="invoiceName"/>
</resultMap>
<sql id="Base_Column_List">
@ -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 @@
<if test="tswl != null">
tswl,
</if>
<if test="invoiceName != null">
invoice_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -613,6 +618,9 @@
<if test="tswl != null">
#{tswl,jdbcType=VARCHAR},
</if>
<if test="invoiceName != null">
invoiceName,
</if>
</trim>
</insert>

@ -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", "交接单导出"),
/**
* 二手车开票方类型

@ -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同步锁前缀
*/

@ -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;
}

@ -327,4 +327,6 @@ public class OrderInvoiceInfo implements Serializable {
* 税控错误描述
*/
private String skcwms;
private String docuId;
}

@ -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<String,String> 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<String,String> 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<String,Object> 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();
}
}
}

@ -21,6 +21,8 @@ public class QuoteGroupCommodityDTO {
//@NotBlank(message = "接收引用物料的销方纳税人识别号不能为空!")
private String xhfNsrsbh;
private String xhfMc;
@NotBlank(message = "接收引用物料的销方企业id不能为空!")
private String deptId;
}

@ -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) + "条数据,引用失败");

@ -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;
}

@ -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<String> 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<FileDownLoad> 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<OpenTextResult> 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<String> shList) {
if (StrUtil.isNotBlank(pushUrl)) {

@ -387,8 +387,9 @@
where xhf_nsrsbh = #{xhfNsrsbh,jdbcType=VARCHAR} and ent_id = #{entId,jdbcType=VARCHAR}
</delete>
<insert id="cloneCommodityCode">
insert into commodity_code (commodity_id, sort_id, xhf_nsrsbh, merchandise_name, encoding, tax_items,
<insert id="cloneCommodityCode" useGeneratedKeys="true" keyProperty="id">
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,
@ -396,8 +397,11 @@
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,
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,
@ -432,6 +436,7 @@
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}
</insert>

@ -86,8 +86,6 @@ public class InvoiceConfig {
@Value("${order.print.tempPath}")
public String printTempPath;
/**
* 京东万家渠道,用于判断是否进行推送部署消息
*/
@ -192,6 +190,20 @@ 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相关配置

@ -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();

@ -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 = "订单发票管理-查询发票明细列表")

@ -18,6 +18,7 @@ import java.util.List;
@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<ExportInvoiceItemInfo> exportInvoiceItemInfoList;
}

@ -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);

@ -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<ExportInvoiceInfo> exportAllInvoiceDetailByPage(Map<String, Object> paramMap, List<String> shList, List<String> entList, String type) {
List<ExportInvoiceInfo> 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<OrderInvoiceDetail> orderInvoiceDetails = null;
if(OrderInfoEnum.EXPORT_EXCEL_TYPE_4.getKey().equals(type)){
if(OrderInfoEnum.EXPORT_EXCEL_TYPE_5.getKey().equals(type)){
orderInvoiceDetails = orderInvoiceInfoMapper.selectInvoiceByIds((List<String>)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<OrderInvoiceDetail> orderInvoiceDetails = orderInvoiceInfoMapper.selectInvoiceByIds(ids);
PageInfo<OrderInvoiceDetail> 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<OrderInvoiceDetail> resultList = pageInfo.getList();

Loading…
Cancel
Save