wei.zhou

提交代码

D类字段校验
明细:
1.商品明细必须有效,如果只是添加了商品明细,没有填写任何信息,系统会给出提示,不能保存也不能提交【必填项校验】
2.成交数量,成交单位,第一法定数量,原产地,总价,征免,币值,最终目的国,境内货源地必填;成交数量,申报金额,申报重量必须是数值类型。【数据类型校验】
3.品名必填且必须包含中文字符。【正则校验+逻辑校验】
申报要素中除'GNIT','CAS','其他'项外,其他必填
4.当每行的成交单位,法定计量单位如为千克,克,斤时,成交数量,法定计量数量转换为千克后和申报重量必须相同,否则就给予相关提示【逻辑校验】
5.运单明细法定数量部分,HS CODE自动带出有法定计量单位的部分需要强制填写法定数量,若有必填项未填写,点击“保存”或“提交”按钮时,系统会给出相应提示。
即如果货物信息带出的第一法定单位有值,则第一法定数量必填,第二法定单位为空,则第二法定数量必不填。带出的第二法定单位有值,则第二法定数量必填。
保存按钮:不论什么情况都可保存,必填字段未填会给出边框变红的提示。【必填项校验】
提交按钮:图片必须上传。未上传图片则无法成功提交。若必填字段未填写完整,则按照图像系统提交。
联系人,联系方式:必填,为空时,可保存不可提交【必填项校验】
清关图片上传:上传前必须填写运单号,联系人,联系方式
必填字段:
运单号,出境口岸,出境关别代码,生产核销单位海关编码,生产核销单位统一信用代码,生产核销单位,运输方式,监管方式,征免性质,成交方式,包装种类
,境内发货人统一信用代码,境内发货人海关编码,运单件数,毛重(公斤),净重(公斤),抵运国(地区),指运港,贸易国(地区),境外发货人名称(外文)
当成交方式为:CFR、CPT时,运费,运费币制必填,
当为CIF、CIP、DDP、DDU、DAP时,运费,运费币制,保费,保费币制必填,
当为C&I等时,保费,保费币制必填。为空时可保存。提交确认则按照图像系统提交
当为FOB、FCA、EXW时,没有运费,保费校验
\ No newline at end of file
......@@ -51,6 +51,12 @@ public class ChmConsignment implements Serializable {
@Column(name = "DECLARED_UNIT_NAME")
private String declaredUnitName;
/**
* 申报口岸
*/
@Column(name = "DECLARED_PORT")
private String declaredPort;
/**
* 合同协议号
......@@ -367,6 +373,18 @@ public class ChmConsignment implements Serializable {
@Column(name = "OWNER_CODE_SCC")
private String ownerCodeScc;
/**
* 运单类型ID
*/
@Column(name = "CONS_TYPE_ID")
private String consTypeId;
/**
* 运单类型
*/
@Column(name = "CONS_TYPE")
private String consType;
@OneToMany(mappedBy = "chmConsignment", cascade = CascadeType.ALL)
private List<ChmConsignmentDetail> chmConsignmentDetailList;
......
......@@ -153,7 +153,12 @@ public class ChmConsignmentService {
result.setFromCountry(fromCountryDictionaryEntries.getChineseName());
}
//运单类型
DictionaryEntries consType = Constant.dictionaryEntriesCache.get(Constant.MSG_TYPE_D);
if(consType != null){
result.setConsTypeId(String.valueOf(consType.getId()));
result.setConsType(consType.getChineseName());
}
//监管方式
DictionaryEntries tradeModeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.SUPERVISION_MODE+mawb.getTradeMode());
......@@ -233,6 +238,11 @@ public class ChmConsignmentService {
result.setConsStatus(transferWaybillStatusDictionaryEntries.getChineseName());
}
//西门子数据都为TSN口岸,可通过口岸查询查看
if (creator.equals("IDE")){
result.setDeclaredPort("TSN");
}
//推送时间作为创建时间,可以用来校验数据的有序性,如果新的推送时间小于已有的创建时间,就不更新数据
result.setCreateTime(new Date());
result.setUpdateTime(pushTime);
......@@ -345,6 +355,7 @@ public class ChmConsignmentService {
//条件1、状态为 待申报海关
//条件2、本次推送时间 > 上次推送的时间
}else if(!Objects.equals(chmConsignmentDB,null)
//TODO 确定是不是transferWaybillStatus_5
&& Objects.equals(chmConsignmentDB.getConsStatusDic().getCode(),"transferWaybillStatus_5")
//TODO 提交时需要打开
&& pushTime.getTime()>chmConsignmentDB.getUpdateTime().getTime()
......@@ -362,6 +373,7 @@ public class ChmConsignmentService {
// }
// }
// }
//TODO 因为现在有了DetailId,所以可以根据DetailID进行更新,所以需要改为 update,去的掉detele的动作
List<Long> detailIdList = new ArrayList();
chmConsignmentDB.getChmConsignmentDetailList().forEach(detail->{
detailIdList.add(detail.getId());
......@@ -371,6 +383,10 @@ public class ChmConsignmentService {
chmConsignmentDB.setChmConsignmentDetailList(null);
}
chmConsignment.setId(chmConsignmentDB.getId());
chmConsignment.setCreateTime(chmConsignmentDB.getCreateTime());
chmConsignment.setUpdateTime(pushTime);
......