|
|
@@ -0,0 +1,81 @@
|
|
|
+package org.springblade.los.vgm.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import io.jsonwebtoken.lang.Collections;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.los.Util.VgmUtils;
|
|
|
+import org.springblade.los.business.sea.entity.Bills;
|
|
|
+import org.springblade.los.business.sea.entity.Containers;
|
|
|
+import org.springblade.los.business.sea.mapper.BillsMapper;
|
|
|
+import org.springblade.los.business.sea.mapper.ContainersMapper;
|
|
|
+import org.springblade.los.enums.VgmOperationType;
|
|
|
+import org.springblade.los.vgm.VgmDeclaration;
|
|
|
+import org.springblade.los.vgm.VgmDeclarationSend;
|
|
|
+import org.springblade.los.vgm.service.IVgmService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author Rain
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class VgmServiceImpl implements IVgmService {
|
|
|
+
|
|
|
+ private final BillsMapper billsMapper;
|
|
|
+
|
|
|
+ private final ContainersMapper containersMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R sendVgm(String billId) throws IllegalAccessException, UnsupportedEncodingException {
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ Bills bills = billsMapper.selectOne(new LambdaQueryWrapper<Bills>().eq(Bills::getTenantId, bladeUser.getTenantId())
|
|
|
+ .eq(Bills::getId, billId).eq(Bills::getIsDeleted, 0).last("limit 1"));
|
|
|
+ if (Objects.isNull(bills)) {
|
|
|
+ return R.fail("未找到对应的提单");
|
|
|
+ }
|
|
|
+ List<Containers> containers = containersMapper.selectList(new LambdaQueryWrapper<Containers>()
|
|
|
+ .eq(Containers::getPid, billId).eq(Containers::getIsDeleted, 0).eq(Containers::getTenantId, bladeUser.getTenantId()));
|
|
|
+ if (Collections.isEmpty(containers)) {
|
|
|
+ return R.fail("未找到对应的提单下的箱列表");
|
|
|
+ }
|
|
|
+ List<VgmDeclaration> vgmDeclarationList = new ArrayList<>();
|
|
|
+ VgmDeclarationSend sendData = new VgmDeclarationSend();
|
|
|
+ sendData.setTdh(bills.getBillNo());
|
|
|
+ sendData.setData(vgmDeclarationList);
|
|
|
+ for (Containers container : containers) {
|
|
|
+ String xx = container.getCntrTypeCode().substring(2, 3);
|
|
|
+ String cc = container.getCntrTypeCode().substring(0, 1);
|
|
|
+ VgmDeclaration vgmDeclaration = new VgmDeclaration();
|
|
|
+ vgmDeclarationList.add(vgmDeclaration);
|
|
|
+ vgmDeclaration.setXh(container.getCntrNo());
|
|
|
+ vgmDeclaration.setXx(xx);
|
|
|
+ vgmDeclaration.setCc(cc);
|
|
|
+ vgmDeclaration.setWeight(String.valueOf(container.getVgmWeight()));
|
|
|
+ vgmDeclaration.setCzdm(bills.getPodCyCode());
|
|
|
+ vgmDeclaration.setMtdm(bills.getPortTerminalCyCode());
|
|
|
+ vgmDeclaration.setWeightMethod("SM1");
|
|
|
+ vgmDeclaration.setBookingNo(bills.getBookingNo());
|
|
|
+ vgmDeclaration.setLinkMan(bladeUser.getUserName());
|
|
|
+ vgmDeclaration.setWeightUnit("kgs");
|
|
|
+ vgmDeclaration.setXsgsm("COS");
|
|
|
+
|
|
|
+ vgmDeclaration.setApplyPerson("x");
|
|
|
+ vgmDeclaration.setApplyPhone("x");
|
|
|
+ vgmDeclaration.setUserName("x");
|
|
|
+ vgmDeclaration.setLinkPhone("x");
|
|
|
+ vgmDeclaration.setLinkMail("x");
|
|
|
+
|
|
|
+ }
|
|
|
+ String result = VgmUtils.sendVgmToPlatform(sendData, VgmOperationType.RECEIVE_VGM_REPORT);
|
|
|
+ return R.success(result);
|
|
|
+ }
|
|
|
+}
|