Commit 14a64e5d authored by Allen Chen's avatar Allen Chen

commit

parent f7515b13
File added
......@@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.ta.pddserver.config.PddAPIConfig;
import org.ta.pddserver.entity.*;
import org.ta.pddserver.lotto.ImagePdfGenerator;
import org.ta.pddserver.lotto.LottoLabelInfo;
import org.ta.pddserver.model.api.request.*;
import org.ta.pddserver.model.api.response.*;
import org.ta.pddserver.model.enums.ErrorEnum;
......@@ -82,6 +85,9 @@ public class PddLocalController {
@Autowired
private OutboundNoticeImpl outboundNoticeImpl;
@Resource
private LottoConfigImpl lottoConfigImpl;
/*集运单列表*/
@Operation(
summary = "分页查询收到的集运单列表",
......@@ -1180,7 +1186,7 @@ public class PddLocalController {
collectOrderImpl.updateOrderStatus(StatusEnum.FINISHOUTBOUND.getCode(), collectOrderResponse.getUid());
return JsonResponse.generateLocalCommonSuccessResponse(true);
return JsonResponse.generateLocalCommonSuccessResponse(outBoundRequest.getOutPackageList());
}
/*拣货完成后出库*/
......@@ -1550,4 +1556,41 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
@PostMapping("/mailLabel")
public JSONObject mailLabel(HttpServletRequest request, HttpServletResponse response, @RequestBody MailNoRequest mailNoRequest) {
String mailNo = mailNoRequest.getMailNo();
LogOrderMailDetailIoEntity mailDetailIoEntity = logOrderMailDetailIoImpl.getOutboundByMailNo(mailNo);
if (mailDetailIoEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未找到出库运单");
}
CollectReceiverDetailEntity receiverDetailEntity = collectReceiverDetailImpl.getInfoByOrderCode(mailDetailIoEntity.getLogisticsOrderCode());
LottoLabelInfo lottoLabelInfo = lottoConfigImpl.getLottoLabelInfoByPostCode(receiverDetailEntity.getPostCode());
if (lottoLabelInfo == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "获取快递终端信息异常");
}
byte[] bytes = ImagePdfGenerator.generatePdfWithTextImage(
mailNo,
lottoLabelInfo.getPortCode(),
receiverDetailEntity.getName(),
receiverDetailEntity.getTelePhone(),
receiverDetailEntity.getPostCode(),
receiverDetailEntity.getDetailAddress(),
receiverDetailEntity.getOrderCode(),
lottoLabelInfo.getArea1(),
lottoLabelInfo.getArea2(),
lottoLabelInfo.getArea3(),
lottoLabelInfo.getArea4());
if (bytes == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "面单制作失败");
}
JSONObject result = new JSONObject();
result.put("mailNo", mailNo);
result.put("file", Base64.getEncoder().encodeToString(bytes));
return JsonResponse.generateLocalCommonSuccessResponse(result);
}
}
......@@ -655,22 +655,34 @@ public class PddOpenController {
reverseNotifyImpl.save(reverseNotifyEntity);
String orderCode = notifyRequest.getOrderCode();
if (notifyRequest.getType().toUpperCase().equals("HEBAO")) {
CollectOrderResponse collectOrderEntity = collectOrderImpl.getByOrderCode(orderCode);
CollectOrderEntity collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(orderCode);
if (collectOrderEntity != null) {
if (collectOrderEntity.getRemarks() == null) {
collectOrderEntity.setRemarks(notifyRequest.getStatus());
} else {
collectOrderEntity.setRemarks(collectOrderEntity.getRemarks() + " > " + notifyRequest.getStatus());
}
if (notifyRequest.getStatus().toUpperCase().equals("CANCELOUTBOUND")) {
collectOrderImpl.updateOrderStatus(11, collectOrderEntity.getUid());
collectOrderEntity.setStatus(11);
}
collectOrderImpl.updateById(collectOrderEntity);
}
} else if (notifyRequest.getType().toUpperCase().equals("JIYUN")) {
LogOrderEntity logOrderEntity = orderImpl.getByOrderCode(orderCode);
if (logOrderEntity != null) {
if (logOrderEntity.getRemarks() == null) {
logOrderEntity.setRemarks(notifyRequest.getStatus());
} else {
logOrderEntity.setRemarks(logOrderEntity.getRemarks() + " > " + notifyRequest.getStatus());
}
if (notifyRequest.getStatus().toUpperCase().equals("REJECTSIGN")) {
orderImpl.updateOrderStatus(11, logOrderEntity.getUid());
logOrderEntity.setStatus(11);
} else if (notifyRequest.getStatus().toUpperCase().equals("CANCELREJECTSIGN")) {
orderImpl.updateOrderStatus(21, logOrderEntity.getUid());
logOrderEntity.setStatus(21);
} else if (notifyRequest.getStatus().toUpperCase().equals("ONLYREFUNDSUC")) {
orderImpl.updateOrderStatus(31, logOrderEntity.getUid());
logOrderEntity.setStatus(31);
}
orderImpl.updateById(logOrderEntity);
}
}
}
......
......@@ -30,40 +30,45 @@ public class ImagePdfGenerator {
String area1,
String area2,
String area3,
String area4) throws Exception {
// 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”)
byte[] imageBytes = TextToImageUtils.textToImage(
mailCode,
portCode,
receiverName,
phone,
postCode,
address,
orderCode,
area1,
area2,
area3,
area4
);
String area4) {
try {
// 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”)
byte[] imageBytes = TextToImageUtils.textToImage(
mailCode,
portCode,
receiverName,
phone,
postCode,
address,
orderCode,
area1,
area2,
area3,
area4
);
// return imageBytes;
// 2. 初始化PDF
ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(pdfBaos);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc, new PageSize((int) (150 * 300 / 25.4), (int) (100 * 300 / 25.4)));
// 3. 将图片嵌入PDF
ImageData imageData = ImageDataFactory.create(imageBytes);
Image image = new Image(imageData);
// 设置图片在PDF中居中显示
image.setHorizontalAlignment(HorizontalAlignment.LEFT);
document.add(image);
// 4. 关闭文档
document.close();
return pdfBaos.toByteArray();
// 2. 初始化PDF
ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(pdfBaos);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc, new PageSize((int) (150 * 300 / 25.4), (int) (100 * 300 / 25.4)));
// 3. 将图片嵌入PDF
ImageData imageData = ImageDataFactory.create(imageBytes);
Image image = new Image(imageData);
// 设置图片在PDF中居中显示
image.setHorizontalAlignment(HorizontalAlignment.LEFT);
document.add(image);
// 4. 关闭文档
document.close();
return pdfBaos.toByteArray();
}catch (Exception e){
e.printStackTrace();
return null;
}
}
......
package org.ta.pddserver.lotto;
import lombok.Data;
@Data
public class LottoLabelInfo {
private String portCode;
private String area1;
private String area2;
private String area3;
private String area4;
}
......@@ -18,7 +18,7 @@ import java.util.List;
@Mapper
public interface CollectOrderMapper extends BaseMapper<CollectOrderEntity> {
@Select("SELECT `uid`,`orderCode`, `itemQuantityTotal`, `segmentCode`, `consoType` FROM `collect_order` WHERE `orderCode` = #{orderCode};")
@Select("SELECT `uid`,`orderCode`, `itemQuantityTotal`, `segmentCode`, `consoType`, `remarks` FROM `collect_order` WHERE `orderCode` = #{orderCode};")
CollectOrderResponse findByOrderCode(String orderCode);
@Update("UPDATE `collect_order` SET `status` = #{status} WHERE `uid` = #{uid};")
......
......@@ -20,4 +20,7 @@ public interface LogOrderMailDetailIoMapper extends BaseMapper<LogOrderMailDetai
@Select("SELECT `expressCode`, `mailNo` FROM `log_order_mail_detail_io` WHERE `logisticsOrderCode` = #{orderCode} AND `status` = 60 AND `action` = 'FINISHOUTBOUND';")
List<LogOrderMailDetailIoEntity> findOutByOrderCode(String orderCode);
@Select("SELECT `uid`, `created`,`status`, `logisticsOrderCode`, `expressCode`, `mailNo`, `action` FROM `log_order_mail_detail_io` WHERE `mailNo` = #{mailNo} AND `status` = 60 AND `action` = 'FINISHOUTBOUND';")
LogOrderMailDetailIoEntity findOutboundByMailNo(String mailNo);
}
......@@ -34,7 +34,7 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT a.`uid`, a.`logisticsOrderCode` , a.`expressCode` ,a.`mailNo`, a.`updated`, a.`status`, b.`num` FROM `log_order_mail_detail` a, `log_order` b WHERE a.`mailNo` = #{mailNo} AND a.`logisticsOrderCode` = b.`logisticsOrderCode` ORDER BY a.`uid` DESC LIMIT 1;")
@Select("SELECT a.`uid`, a.`logisticsOrderCode` , a.`expressCode` ,a.`mailNo`, a.`updated`, a.`status`, b.`remarks`, b.`num` FROM `log_order_mail_detail` a, `log_order` b WHERE a.`mailNo` = #{mailNo} AND a.`logisticsOrderCode` = b.`logisticsOrderCode` ORDER BY a.`uid` DESC LIMIT 1;")
MailNoResponse getInfoByMailNo(@Param("mailNo") String mailNo);
......
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.ta.pddserver.entity.LottoConfigEntity;
@Mapper
public interface LottoConfigMapper extends BaseMapper<LottoConfigEntity> {
@Select("SELECT * FROM `lotto_config` WHERE `tag2` = #{tag2} ORDER BY `id` ASC LIMIT 1;")
LottoConfigEntity findByTag2(String tag2);
}
......@@ -15,4 +15,6 @@ public class CollectOrderResponse {
private String consoType;
private String remarks;
}
......@@ -12,4 +12,5 @@ public class MailNoResponse {
private String updated;
private String status;
private int num;
private String remarks;
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.LottoConfigEntity;
public interface LottoConfigService extends IService<LottoConfigEntity> {
}
......@@ -32,4 +32,8 @@ public class LogOrderMailDetailIoImpl extends ServiceImpl<LogOrderMailDetailIoMa
public List<LogOrderMailDetailIoEntity> getOutByOrderCode(String orderCode) {
return this.baseMapper.findOutByOrderCode(orderCode);
}
public LogOrderMailDetailIoEntity getOutboundByMailNo(String mailNo) {
return this.baseMapper.findOutboundByMailNo(mailNo);
}
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.LottoConfigEntity;
import org.ta.pddserver.lotto.LottoLabelInfo;
import org.ta.pddserver.mapper.LottoConfigMapper;
import org.ta.pddserver.service.LottoConfigService;
@Service
public class LottoConfigImpl extends ServiceImpl<LottoConfigMapper, LottoConfigEntity> implements LottoConfigService {
public LottoLabelInfo getLottoLabelInfoByPostCode(String postCode){
LottoConfigEntity lottoConfigEntity = this.baseMapper.findByTag2(postCode);
if (lottoConfigEntity == null){
return null;
}
LottoLabelInfo info = new LottoLabelInfo();
info.setPortCode(lottoConfigEntity.getTag4());
info.setArea1(lottoConfigEntity.getTag3() + " - " + lottoConfigEntity.getTag5());
info.setArea2("X " + lottoConfigEntity.getTag7() + " " + lottoConfigEntity.getTag9());
info.setArea3(lottoConfigEntity.getTag11());
info.setArea4(lottoConfigEntity.getTag13());
return info;
}
}
\ No newline at end of file
......@@ -26,7 +26,8 @@ spring:
application:
name: PddServer
server:
port: 9000 # 正式端口号
# port: 9000 # 正式端口号 - 向拼多多正式环境开放接口
port: 9100 # 正式端口号 - 向海际系统正式环境开放接口
# port: 8600 # 测试端口号
logging:
level:
......@@ -39,5 +40,5 @@ mybatis-plus:
pdd:
jyt: 0
gd: 1
gd: 0
lotto: 1
\ No newline at end of file
......@@ -41,15 +41,24 @@ public class PdfTest {
@Test
public void test3() throws Exception {
// try (FileOutputStream outputStream = new FileOutputStream("./test.pdf")) {
// byte[] strToBytes = ImagePdfGenerator.generatePdfWithTextImage();
// outputStream.write(strToBytes);
// System.out.println("文件写入成功!");
// } catch (IOException e) {
// e.printStackTrace();
// } catch (FontFormatException e) {
// throw new RuntimeException(e);
// }
try (FileOutputStream outputStream = new FileOutputStream("./PP25112111811160070553457.pdf")) {
byte[] strToBytes = ImagePdfGenerator.generatePdfWithTextImage(
"317758904853",
"553",
"JIN JIANYU",
"01027179333",
"28488",
"충청북도 청주시 청원구 우암로 46 충청북도 청주시 청원구 우암동 362-21 202호",
"PP25112111811160070553457",
"M-K1-우07",
"X 청주시 청원구",
"청주우암(대)",
"우07-조영선");
outputStream.write(strToBytes);
System.out.println("文件写入成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment