This commit is contained in:
linfso 2024-08-04 23:31:36 +08:00
parent 53098a1200
commit 7c357fd122
3 changed files with 215 additions and 6 deletions

View File

@ -1115,6 +1115,207 @@ public class EmisWaybillController extends EmisBaseController
}
@Log(title = "APP获取打印数据,命令模式", businessType = BusinessType.OTHER)
@GetMapping("/realGetPrintByApp")
public AjaxResult realGetPrintByApp(String billCode, String subBillCodeRange,String tplCode, String lang, String printType)
{
if(!StringUtils.isEmpty(billCode)){
try {
JSONArray jArr = new JSONArray();
String printManCode=getLoginUser().getUser().getEmpCode();
// 确定是否打子单
JSONArray fileArrAll = new JSONArray();
String tplCodeStr=WaybillHelper.formatQueryValue(printType);
String tplCodeArr[]=tplCodeStr.split(",");
if(tplCodeArr.length>0){
for (String tpCodeItem:tplCodeArr) {
if("TAN-GC-130".equals(tpCodeItem)) {
// 循环获取主单信息
String billSubCodeAllStr="";
String[] billCodeArr = billCode.split(",");
if(billCodeArr.length>0){
IXddTplPrint xtp = new TanexSubBillPrintImpl();
for (String billCodeItem:billCodeArr) {
// 查询主单信息
EmisWaybill emisWaybill = emisBaseService.getWaybillByBillCode(billCodeItem);
// 获取所有子单号
if(StringUtils.isEmpty(subBillCodeRange)) {
billSubCodeAllStr = emisWaybill.getBillCodeSub() ;
}else{
String [] subRange=subBillCodeRange.split(",");
int start=Integer.valueOf(subRange[0]);
int end=emisWaybill.getParcelQty();
int len=subRange.length;
if(len>1){
end=Integer.valueOf(subRange[1]);
if((end-start)>50){
end=start+50;
}
}
while (start<=end && start<=emisWaybill.getParcelQty()){
billSubCodeAllStr=billSubCodeAllStr+""+emisWaybill.getBillCode()+""+StringUtils.leftPad(String.valueOf(start),4,'0')+",";
start++;
}
}
// 循环子单,最多60
log.error("===>billSubCodeAllStr==>",billSubCodeAllStr);
if(!StringUtils.isEmpty(billSubCodeAllStr)) {
String[] subCodArr=billSubCodeAllStr.split(",");
for (int i=0;i<50 && i<subCodArr.length;i++) {
String item = subCodArr[i];
if(!StringUtils.isEmpty(item)) {
Map<String, Object> order = emisBaseService.getWaybillPrintOrder(item, subBillCodeRange, tpCodeItem, "zh", tpCodeItem, printManCode);
String pdfBase64Data = xtp.genPDFBase64(order);
JSONObject jObj = new JSONObject();
jObj.put("result", "success");
jObj.put("billCodeItem", item);
jObj.put("file", pdfBase64Data);
fileArrAll.add(jObj);
}
}
}
}
}
// String strArry = PrintUtils.getPdfByBillCode(billSubCodeAllStr, tpCodeItem, printManCode);
// JSONArray fileArr = JSONArray.parseArray(strArry);
// fileArrAll.addAll(fileArr);
}else{
// 直接获取
String strArry = PrintUtils.getPdfByBillCode(billCode, tpCodeItem, printManCode);
JSONArray fileArr = JSONArray.parseArray(strArry);
fileArrAll.addAll(fileArr);
}
}
}
// String strArry=PrintUtils.getPdfByBillCode(billCode,tplCodeStr,printManCode);
// JSONArray fileArr = JSONArray.parseArray(strArry);
for(Object objFile:fileArrAll) {
JSONObject jObjFileItem = (JSONObject) objFile;
String result = jObjFileItem.getString("result");
String billCodeItem = jObjFileItem.getString("billCodeItem");
JSONObject printItem = new JSONObject();
printItem.put("billCode", billCodeItem);
if (!"success".equals(result)) {
continue;
}
String pdfbase64 = jObjFileItem.getString("file");
try {
String fileId = UUID.fastUUID().toString();
String fileUploadDir = PayConfig.getUploadPath() + File.separator + DateUtils.datePath();
File saveDir = new File(fileUploadDir);
if (!saveDir.exists()) {
saveDir.mkdirs();
}
String saveFileName = fileUploadDir + File.separator + fileId + ".jpg";
FileOutputStream os = new FileOutputStream(saveFileName);//输出流
IXddTplPrint tplPrint = new TanexTplPrintImpl();
PrintUtils.genImage(pdfbase64, os);
JSONObject jObjRemark = new JSONObject();
jObjRemark.put("billCode", billCodeItem);
jObjRemark.put("subBillCodeRange", subBillCodeRange);
jObjRemark.put("lang", lang);
jObjRemark.put("printType", printType);
SysFileInfo sysFileInfo = sysFileInfoService.ossUploadLocalFile(saveFileName, billCodeItem, jObjRemark.toJSONString());
String imageUrl = sysFileInfo.getFileRemoteUrl();
printItem.put("imageUrl", imageUrl);
printItem.put("result", "success");
printItem.put("message", "success");
} catch (Exception e) {
e.printStackTrace();
printItem.put("imageUrl", "");
printItem.put("result", "fail");
printItem.put("message", "生成图片异常");
}
jArr.add(printItem);
}
// JSONArray jArr = new JSONArray();
// String[] billCodeArr = billCode.split(",");
//
// for(String billCodeItem:billCodeArr) {
// Map<String, Object> order = emisBaseService.getWaybillPrintOrder(billCodeItem, billCodeRange,tplCode,lang, printType);
// JSONObject printItem = new JSONObject();
// printItem.put("billCode",billCodeItem);
// if(order!=null) {
//
// try
// {
// String fileId = UUID.fastUUID().toString();
// String fileUploadDir = PayConfig.getUploadPath()+File.separator+DateUtils.datePath();
//
// File saveDir = new File(fileUploadDir);
// if(!saveDir.exists()){
// saveDir.mkdirs();
// }
//
// String saveFileName = fileUploadDir+File.separator+fileId+".png";
//
// FileOutputStream os = new FileOutputStream(saveFileName);//输出流
// IXddTplPrint tplPrint = new TanexTplPrintImpl();
// tplPrint.genPNG(order, os);
//
// JSONObject jObjRemark = new JSONObject();
// jObjRemark.put("billCode",billCodeItem);
// jObjRemark.put("billCodeRange",billCodeRange);
// jObjRemark.put("lang",lang);
// jObjRemark.put("printType",printType);
//
// SysFileInfo sysFileInfo=sysFileInfoService.ossUploadLocalFile(saveFileName,billCodeItem,jObjRemark.toJSONString());
// String imageUrl = sysFileInfo.getFileRemoteUrl();
// printItem.put("imageUrl", imageUrl);
// printItem.put("result","success");
// printItem.put("message","success");
// }
// catch (Exception e)
// {
// e.printStackTrace();
// printItem.put("imageUrl", "");
// printItem.put("result","fail");
// printItem.put("message","生成图片异常");
//
// }
//
//
// }else{
// printItem.put("result","fail");
// printItem.put("message","未获取到数据");
// }
// jArr.add(printItem);
// }
return AjaxResult.success("获取成功",jArr);
}catch (Exception ex){
ex.printStackTrace();
return AjaxResult.error("获取失败");
}
}
return AjaxResult.error("获取失败");
}
@GetMapping("/realGetWaybillPdf")
public AjaxResult realGetWaybillPdf(HttpServletRequest request, HttpServletResponse response,String billCode, String billCodeRange,String tplCode, String lang, String printType,String printManCode,String isNeedPdf)
{

View File

@ -2796,7 +2796,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
){
feeItem = new EmisWaybillFeeitem();
feeItem.setFeeCode(quoteItem.getFeeType());
String feeName=DictUtils.getDictLabel("emis_fee_type",quoteItem.getFeeType());
feeItem.setFeeName(feeName);
@ -2815,19 +2814,28 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
feeItem.setAddWeightPrice(BigDecimal.valueOf(exprItem.getAdditionalWeight()));
feeItem.setInitialWeightFee(BigDecimal.valueOf(exprItem.getInitialWeight()));
String exprStr = exprItem.getCalculateExpression();
String calcExprStr=exprStr.replaceAll("w",emisWaybill.getTotalVolume().toString());
log.info("计算公式:"+calcExprStr+",体积:"+emisWaybill.getTotalVolume());
String calcExprStr=calcExp.replaceAll("w",emisWaybill.getTotalVolume().toString())
.replaceAll("s",exprItem.getInitialWeight().toString())
.replaceAll("d",exprItem.getAdditionalWeight().toString());
log.info("计算公式:"+calcExprStr+",体积:"+emisWaybill.getTotalVolume());
double fee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString());
fee=WaybillHelper.calcSettledFee(fee,quoteItem.getPriceType());
// 如果低于最低报价,则使用最低报价来计算
if( fee < quoteItem.getLeastPrice().doubleValue() ){
fee = quoteItem.getLeastPrice().doubleValue();
feeItem.setRemark("must > "+quoteItem.getLeastPrice().doubleValue());
}else{
feeItem.setRemark(feeItem.getCalcExp());
}
feeItem.setFee(BigDecimal.valueOf(fee));
feeItem.setRealFee(BigDecimal.valueOf(fee));
log.info("计算后费用:"+feeItem.getFee());
totalFee=totalFee+fee;
feeItem.setRemark(feeItem.getCalcExp());
feeItem.setBlAutoGen("1");
break;

View File

@ -665,7 +665,7 @@
</if>
<if test="params.problemQueryType != null and params.problemQueryType == 2 and params.problemQueryIds != null and params.problemQueryIds !=''">
and !FIND_IN_SET(a.`problem_type`,#{params.problemQueryIds})
and ( !FIND_IN_SET(a.`problem_type`,#{params.problemQueryIds}) or a.`problem_type` is null)
</if>