12 changed files with 1239 additions and 2 deletions
-
20src/main/java/com/xujie/sys/common/utils/DateUtils.java
-
34src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java
-
26src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java
-
10src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java
-
12src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyHeaderData.java
-
198src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotify.java
-
385src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyDetail.java
-
199src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyHeader.java
-
30src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java
-
15src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java
-
235src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java
-
77src/main/resources/mapper/ecss/CoDelMapper.xml
@ -0,0 +1,34 @@ |
|||
package com.xujie.sys.modules.ecss.controller; |
|||
|
|||
import com.xujie.sys.common.utils.PageUtils; |
|||
import com.xujie.sys.common.utils.R; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyData; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyHeaderData; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotify; |
|||
import com.xujie.sys.modules.ecss.service.CoDelService; |
|||
import com.xujie.sys.modules.orderIssure.entity.SOIssueNotifyHeaderData; |
|||
import com.xujie.sys.modules.part.vo.BomComponentVo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
@RestController |
|||
@RequestMapping("/ecss/coDel") |
|||
public class CoDelController { |
|||
@Autowired |
|||
private CoDelService coDelService; |
|||
|
|||
|
|||
@PostMapping(value="/searchEcssCoDelNotifyHeader") |
|||
@ResponseBody |
|||
public R searchEcssCoDelNotifyHeader(@RequestBody EcssCoDelNotifyHeaderData data) { |
|||
PageUtils page = coDelService.searchEcssCoDelNotifyHeader(data); |
|||
return R.ok().put("page", page); |
|||
} |
|||
|
|||
@PostMapping("/saveEcssCoDelNotifyByExcel") |
|||
public R saveEcssCoDelNotifyByExcel(@RequestParam(value = "file") MultipartFile file, @ModelAttribute EcssCoDelNotifyHeaderData data){ |
|||
coDelService.saveEcssCoDelNotifyByExcel(file, data); |
|||
return R.ok(); |
|||
} |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
package com.xujie.sys.modules.ecss.data; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotify; |
|||
import lombok.Data; |
|||
import org.apache.ibatis.type.Alias; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
@Alias("EcssCoDelNotifyData") |
|||
public class EcssCoDelNotifyData extends EcssCoDelNotify { |
|||
|
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date startDate; |
|||
|
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date endDate; |
|||
|
|||
private String username; |
|||
|
|||
private String buDesc; |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
package com.xujie.sys.modules.ecss.data; |
|||
|
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyDetail; |
|||
import lombok.Data; |
|||
import org.apache.ibatis.type.Alias; |
|||
|
|||
@Data |
|||
@Alias("EcssCoDelNotifyDetailData") |
|||
public class EcssCoDelNotifyDetailData extends EcssCoDelNotifyDetail { |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
package com.xujie.sys.modules.ecss.data; |
|||
|
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyHeader; |
|||
import lombok.Data; |
|||
import org.apache.ibatis.type.Alias; |
|||
|
|||
@Data |
|||
@Alias("EcssCoDelNotifyHeaderData") |
|||
public class EcssCoDelNotifyHeaderData extends EcssCoDelNotifyHeader { |
|||
private String buDesc; |
|||
private String username; |
|||
} |
|||
@ -0,0 +1,198 @@ |
|||
package com.xujie.sys.modules.ecss.entity; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.xujie.sys.common.utils.QueryPage; |
|||
import lombok.Data; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
@Data |
|||
public class EcssCoDelNotify extends QueryPage { |
|||
/** |
|||
* |
|||
*/ |
|||
private String site; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String buNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String delNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private Integer itemNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date notifyDate; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String salesOrder; |
|||
private Integer salesOrderItemNo; |
|||
/** |
|||
* |
|||
*/ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date readyDate; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String customerName; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String customerPO; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String line; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String status; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String family; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String partNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String partDescription; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal qty; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal lt; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String cmcInvoice; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String cmcComment; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String destination; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String saleType; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String awbBl; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String shippingNumber; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String shippingMode; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String forwarderInfo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String currency; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal tp; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal ttlAmount; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal sumPrice; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String so; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String upc; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String remark; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String erpFlag; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String notifyStatus; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String erpDelNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String erpDelItemNo; |
|||
|
|||
|
|||
} |
|||
|
|||
@ -0,0 +1,385 @@ |
|||
package com.xujie.sys.modules.ecss.entity; |
|||
|
|||
import com.xujie.sys.common.utils.QueryPage; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
public class EcssCoDelNotifyDetail extends QueryPage { |
|||
/** |
|||
* |
|||
*/ |
|||
private String site; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String buNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String delNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private Integer itemNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String salesOrder; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private Integer salesOrderItemNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String customerPO; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String line; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String status; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String family; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String partNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String partDescription; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal qty; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal lt; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String cmcInvoice; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String cmcComment; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String saleType; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String awbBl; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String shippingNumber; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String forwarderInfo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String currency; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal tp; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal ttlAmount; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private BigDecimal sumPrice; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String so; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String upc; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String remark; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private Integer erpDelItemNo; |
|||
|
|||
public String getSite() { |
|||
return site; |
|||
} |
|||
|
|||
public void setSite(String site) { |
|||
this.site = site; |
|||
} |
|||
|
|||
public String getBuNo() { |
|||
return buNo; |
|||
} |
|||
|
|||
public void setBuNo(String buNo) { |
|||
this.buNo = buNo; |
|||
} |
|||
|
|||
public String getDelNo() { |
|||
return delNo; |
|||
} |
|||
|
|||
public void setDelNo(String delNo) { |
|||
this.delNo = delNo; |
|||
} |
|||
|
|||
public Integer getItemNo() { |
|||
return itemNo; |
|||
} |
|||
|
|||
public void setItemNo(Integer itemNo) { |
|||
this.itemNo = itemNo; |
|||
} |
|||
|
|||
public String getSalesOrder() { |
|||
return salesOrder; |
|||
} |
|||
|
|||
public void setSalesOrder(String salesOrder) { |
|||
this.salesOrder = salesOrder; |
|||
} |
|||
|
|||
public Integer getSalesOrderItemNo() { |
|||
return salesOrderItemNo; |
|||
} |
|||
|
|||
public void setSalesOrderItemNo(Integer salesOrderItemNo) { |
|||
this.salesOrderItemNo = salesOrderItemNo; |
|||
} |
|||
|
|||
public String getCustomerPO() { |
|||
return customerPO; |
|||
} |
|||
|
|||
public void setCustomerPO(String customerPO) { |
|||
this.customerPO = customerPO; |
|||
} |
|||
|
|||
public String getLine() { |
|||
return line; |
|||
} |
|||
|
|||
public void setLine(String line) { |
|||
this.line = line; |
|||
} |
|||
|
|||
public String getVersion() { |
|||
return version; |
|||
} |
|||
|
|||
public void setVersion(String version) { |
|||
this.version = version; |
|||
} |
|||
|
|||
public String getStatus() { |
|||
return status; |
|||
} |
|||
|
|||
public void setStatus(String status) { |
|||
this.status = status; |
|||
} |
|||
|
|||
public String getFamily() { |
|||
return family; |
|||
} |
|||
|
|||
public void setFamily(String family) { |
|||
this.family = family; |
|||
} |
|||
|
|||
public String getPartNo() { |
|||
return partNo; |
|||
} |
|||
|
|||
public void setPartNo(String partNo) { |
|||
this.partNo = partNo; |
|||
} |
|||
|
|||
public String getPartDescription() { |
|||
return partDescription; |
|||
} |
|||
|
|||
public void setPartDescription(String partDescription) { |
|||
this.partDescription = partDescription; |
|||
} |
|||
|
|||
public BigDecimal getQty() { |
|||
return qty; |
|||
} |
|||
|
|||
public void setQty(BigDecimal qty) { |
|||
this.qty = qty; |
|||
} |
|||
|
|||
public BigDecimal getLt() { |
|||
return lt; |
|||
} |
|||
|
|||
public void setLt(BigDecimal lt) { |
|||
this.lt = lt; |
|||
} |
|||
|
|||
public String getCmcInvoice() { |
|||
return cmcInvoice; |
|||
} |
|||
|
|||
public void setCmcInvoice(String cmcInvoice) { |
|||
this.cmcInvoice = cmcInvoice; |
|||
} |
|||
|
|||
public String getCmcComment() { |
|||
return cmcComment; |
|||
} |
|||
|
|||
public void setCmcComment(String cmcComment) { |
|||
this.cmcComment = cmcComment; |
|||
} |
|||
|
|||
public String getSaleType() { |
|||
return saleType; |
|||
} |
|||
|
|||
public void setSaleType(String saleType) { |
|||
this.saleType = saleType; |
|||
} |
|||
|
|||
public String getAwbBl() { |
|||
return awbBl; |
|||
} |
|||
|
|||
public void setAwbBl(String awbBl) { |
|||
this.awbBl = awbBl; |
|||
} |
|||
|
|||
public String getShippingNumber() { |
|||
return shippingNumber; |
|||
} |
|||
|
|||
public void setShippingNumber(String shippingNumber) { |
|||
this.shippingNumber = shippingNumber; |
|||
} |
|||
|
|||
public String getForwarderInfo() { |
|||
return forwarderInfo; |
|||
} |
|||
|
|||
public void setForwarderInfo(String forwarderInfo) { |
|||
this.forwarderInfo = forwarderInfo; |
|||
} |
|||
|
|||
public String getCurrency() { |
|||
return currency; |
|||
} |
|||
|
|||
public void setCurrency(String currency) { |
|||
this.currency = currency; |
|||
} |
|||
|
|||
public BigDecimal getTp() { |
|||
return tp; |
|||
} |
|||
|
|||
public void setTp(BigDecimal tp) { |
|||
this.tp = tp; |
|||
} |
|||
|
|||
public BigDecimal getTtlAmount() { |
|||
return ttlAmount; |
|||
} |
|||
|
|||
public void setTtlAmount(BigDecimal ttlAmount) { |
|||
this.ttlAmount = ttlAmount; |
|||
} |
|||
|
|||
public BigDecimal getSumPrice() { |
|||
return sumPrice; |
|||
} |
|||
|
|||
public void setSumPrice(BigDecimal sumPrice) { |
|||
this.sumPrice = sumPrice; |
|||
} |
|||
|
|||
public String getSo() { |
|||
return so; |
|||
} |
|||
|
|||
public void setSo(String so) { |
|||
this.so = so; |
|||
} |
|||
|
|||
public String getUpc() { |
|||
return upc; |
|||
} |
|||
|
|||
public void setUpc(String upc) { |
|||
this.upc = upc; |
|||
} |
|||
|
|||
public String getRemark() { |
|||
return remark; |
|||
} |
|||
|
|||
public void setRemark(String remark) { |
|||
this.remark = remark; |
|||
} |
|||
|
|||
public Integer getErpDelItemNo() { |
|||
return erpDelItemNo; |
|||
} |
|||
|
|||
public void setErpDelItemNo(Integer erpDelItemNo) { |
|||
this.erpDelItemNo = erpDelItemNo; |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,199 @@ |
|||
package com.xujie.sys.modules.ecss.entity; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.xujie.sys.common.utils.PageUtils; |
|||
import com.xujie.sys.common.utils.QueryPage; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.util.Date; |
|||
|
|||
public class EcssCoDelNotifyHeader extends QueryPage { |
|||
/** |
|||
* |
|||
*/ |
|||
private String site; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String buNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String delNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String erpDelNo; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date readyDate; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date notifyDate; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String customerName; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String destination; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String shippingMode; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String erpFlag; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private String notifyStatus; |
|||
private String cmcInvoice; |
|||
/** |
|||
* |
|||
*/ |
|||
private String remark; |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
|||
private Date createDate; |
|||
private String createBy; |
|||
|
|||
public String getSite() { |
|||
return site; |
|||
} |
|||
|
|||
public void setSite(String site) { |
|||
this.site = site; |
|||
} |
|||
|
|||
public String getBuNo() { |
|||
return buNo; |
|||
} |
|||
|
|||
public void setBuNo(String buNo) { |
|||
this.buNo = buNo; |
|||
} |
|||
|
|||
public String getDelNo() { |
|||
return delNo; |
|||
} |
|||
|
|||
public void setDelNo(String delNo) { |
|||
this.delNo = delNo; |
|||
} |
|||
|
|||
public String getErpDelNo() { |
|||
return erpDelNo; |
|||
} |
|||
|
|||
public void setErpDelNo(String erpDelNo) { |
|||
this.erpDelNo = erpDelNo; |
|||
} |
|||
|
|||
public Date getReadyDate() { |
|||
return readyDate; |
|||
} |
|||
|
|||
public void setReadyDate(Date readyDate) { |
|||
this.readyDate = readyDate; |
|||
} |
|||
|
|||
public Date getNotifyDate() { |
|||
return notifyDate; |
|||
} |
|||
|
|||
public void setNotifyDate(Date notifyDate) { |
|||
this.notifyDate = notifyDate; |
|||
} |
|||
|
|||
public String getCustomerName() { |
|||
return customerName; |
|||
} |
|||
|
|||
public void setCustomerName(String customerName) { |
|||
this.customerName = customerName; |
|||
} |
|||
|
|||
public String getDestination() { |
|||
return destination; |
|||
} |
|||
|
|||
public void setDestination(String destination) { |
|||
this.destination = destination; |
|||
} |
|||
|
|||
public String getShippingMode() { |
|||
return shippingMode; |
|||
} |
|||
|
|||
public void setShippingMode(String shippingMode) { |
|||
this.shippingMode = shippingMode; |
|||
} |
|||
|
|||
public String getErpFlag() { |
|||
return erpFlag; |
|||
} |
|||
|
|||
public void setErpFlag(String erpFlag) { |
|||
this.erpFlag = erpFlag; |
|||
} |
|||
|
|||
public String getNotifyStatus() { |
|||
return notifyStatus; |
|||
} |
|||
|
|||
public void setNotifyStatus(String notifyStatus) { |
|||
this.notifyStatus = notifyStatus; |
|||
} |
|||
|
|||
public String getRemark() { |
|||
return remark; |
|||
} |
|||
|
|||
public void setRemark(String remark) { |
|||
this.remark = remark; |
|||
} |
|||
|
|||
public Date getCreateDate() { |
|||
return createDate; |
|||
} |
|||
|
|||
public void setCreateDate(Date createDate) { |
|||
this.createDate = createDate; |
|||
} |
|||
|
|||
public String getCreateBy() { |
|||
return createBy; |
|||
} |
|||
|
|||
public void setCreateBy(String createBy) { |
|||
this.createBy = createBy; |
|||
} |
|||
|
|||
public String getCmcInvoice() { |
|||
return cmcInvoice; |
|||
} |
|||
|
|||
public void setCmcInvoice(String cmcInvoice) { |
|||
this.cmcInvoice = cmcInvoice; |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,30 @@ |
|||
package com.xujie.sys.modules.ecss.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyData; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyHeaderData; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyDetail; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyHeader; |
|||
import com.xujie.sys.modules.orderIssure.entity.PartData; |
|||
import com.xujie.sys.modules.orderIssure.entity.SOIssueNotifyHeaderData; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Mapper |
|||
public interface CoDelMapper { |
|||
|
|||
IPage<EcssCoDelNotifyHeaderData> searchEcssCoDelNotifyHeader(Page<EcssCoDelNotifyHeaderData> ecssCoDelNotifyDataPage, @Param("query") EcssCoDelNotifyHeaderData data); |
|||
|
|||
String getSiteByBu(String buNo); |
|||
|
|||
List<EcssCoDelNotifyHeaderData> checkIfHasHeader(String inVoice); |
|||
|
|||
void updateTransNo(@Param("site") String site,@Param("transType") String transType); |
|||
String getTransNo(@Param("site") String site,@Param("transType") String transType); |
|||
void saveEcssCoDelNotifyHeader(EcssCoDelNotifyHeader inData); |
|||
void batchSaveEcssCoDelNotifyDetail(List<EcssCoDelNotifyData> list ); |
|||
List<PartData> checkPart(@Param("site") String site, @Param("partNo") String partNo); |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package com.xujie.sys.modules.ecss.service; |
|||
|
|||
import com.xujie.sys.common.utils.PageUtils; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyData; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyHeaderData; |
|||
import com.xujie.sys.modules.orderIssure.entity.SOIssueNotifyHeaderData; |
|||
|
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
public interface CoDelService { |
|||
|
|||
PageUtils searchEcssCoDelNotifyHeader(EcssCoDelNotifyHeaderData data); |
|||
|
|||
void saveEcssCoDelNotifyByExcel(MultipartFile file, EcssCoDelNotifyHeaderData data); |
|||
} |
|||
@ -0,0 +1,235 @@ |
|||
package com.xujie.sys.modules.ecss.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.xujie.sys.common.utils.DateUtils; |
|||
import com.xujie.sys.common.utils.PageUtils; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyData; |
|||
import com.xujie.sys.modules.ecss.data.EcssCoDelNotifyHeaderData; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotify; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyDetail; |
|||
import com.xujie.sys.modules.ecss.entity.EcssCoDelNotifyHeader; |
|||
import com.xujie.sys.modules.ecss.mapper.CoDelMapper; |
|||
import com.xujie.sys.modules.ecss.service.CoDelService; |
|||
import com.xujie.sys.modules.orderIssure.entity.PartData; |
|||
import com.xujie.sys.modules.orderIssure.entity.SOIssueNotifyHeaderData; |
|||
import com.xujie.sys.modules.part.entity.PartInformationEntity; |
|||
import com.xujie.sys.modules.part.entity.RoutingComponentEntity; |
|||
import com.xujie.sys.modules.part.vo.BomComponentVo; |
|||
import com.xujie.sys.modules.pms.mapper.EamMapper; |
|||
import com.xujie.sys.modules.sys.entity.SysUserEntity; |
|||
import org.apache.poi.ss.usermodel.Cell; |
|||
import org.apache.poi.ss.usermodel.CellType; |
|||
import org.apache.poi.ss.usermodel.DataFormatter; |
|||
import org.apache.poi.xssf.usermodel.XSSFRow; |
|||
import org.apache.poi.xssf.usermodel.XSSFSheet; |
|||
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|||
import org.apache.shiro.SecurityUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.io.InputStream; |
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
import java.text.ParseException; |
|||
import java.util.ArrayList; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Service |
|||
public class CoDelServiceImpl implements CoDelService { |
|||
@Autowired |
|||
private CoDelMapper coDelMapper; |
|||
@Autowired |
|||
private EamMapper eamMapper; |
|||
@Override |
|||
public PageUtils searchEcssCoDelNotifyHeader(EcssCoDelNotifyHeaderData data){ |
|||
IPage<EcssCoDelNotifyHeaderData> resultList = coDelMapper.searchEcssCoDelNotifyHeader(new Page<EcssCoDelNotifyHeaderData>(data.getPage(), data.getLimit()), data); |
|||
return new PageUtils(resultList); |
|||
|
|||
} |
|||
|
|||
@Override |
|||
@Transactional |
|||
public void saveEcssCoDelNotifyByExcel(MultipartFile file, EcssCoDelNotifyHeaderData inData){ |
|||
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); |
|||
String site= coDelMapper.getSiteByBu(inData.getBuNo()); |
|||
List<EcssCoDelNotifyData> excelList=new ArrayList<>(); |
|||
try { |
|||
// 转流 |
|||
InputStream is = file.getInputStream(); |
|||
// 读取工作簿 |
|||
XSSFWorkbook workbook = new XSSFWorkbook(is); |
|||
// 读取工作表 |
|||
XSSFSheet sheet = workbook.getSheetAt(0); |
|||
// 获取行数 |
|||
int rows = sheet.getPhysicalNumberOfRows(); |
|||
// 遍历每一行(从第二行开始) |
|||
for (int j = 1; j < rows; j++) { |
|||
// 创建对象 |
|||
EcssCoDelNotifyData task = new EcssCoDelNotifyData(); |
|||
// 获得该行 |
|||
XSSFRow row = sheet.getRow(j); |
|||
if (row.getCell(0) == null) { |
|||
throw new RuntimeException("第"+j+"行的Ready Date不能为空!"); |
|||
} |
|||
if (row.getCell(3) == null) { |
|||
throw new RuntimeException("第"+j+"行的SalesOrder不能为空!"); |
|||
} |
|||
if (row.getCell(4) == null) { |
|||
throw new RuntimeException("第"+j+"行的销售订单行号不能为空!"); |
|||
} |
|||
if (row.getCell(10) == null) { |
|||
throw new RuntimeException("第"+j+"行的PN不能为空!"); |
|||
} |
|||
if (row.getCell(12) == null) { |
|||
throw new RuntimeException("第"+j+"行的Qty不能为空!"); |
|||
} |
|||
|
|||
// 为对象赋值 |
|||
task.setSite(site); // site |
|||
task.setBuNo(inData.getBuNo()); // bu |
|||
Date readDate; |
|||
try { |
|||
String date=getStringCellValue(row, 0); |
|||
readDate= DateUtils.getDateByParten(date,"yyyy-MM-dd"); |
|||
}catch (ParseException e){ |
|||
throw new RuntimeException("第"+j+"行的ReadyDate格式有误!"); |
|||
} |
|||
task.setReadyDate(readDate); |
|||
task.setCustomerName(getStringCellValue(row, 1)); |
|||
task.setCustomerPO(getStringCellValue(row, 2)); |
|||
task.setSalesOrder(getStringCellValue(row, 3)); |
|||
task.setSalesOrderItemNo(getIntegerCellValue(row,4)); |
|||
task.setUpc(getStringCellValue(row,5)); |
|||
task.setLine(getStringCellValue(row,6)); |
|||
task.setVersion(getStringCellValue(row,7)); |
|||
task.setStatus(getStringCellValue(row,8)); |
|||
task.setFamily(getStringCellValue(row,9)); |
|||
task.setPartNo(getStringCellValue(row,10)); |
|||
task.setPartDescription(getStringCellValue(row,11)); |
|||
task.setQty(getNumericCellValueOrDefault(row,12)); |
|||
task.setLt(getNumericCellValueOrDefault(row,13)); |
|||
task.setCmcInvoice(getStringCellValue(row,14)); |
|||
task.setCmcComment(getStringCellValue(row,15)); |
|||
task.setDestination(getStringCellValue(row,16)); |
|||
task.setSaleType(getStringCellValue(row,17)); |
|||
task.setAwbBl(getStringCellValue(row,18)); |
|||
task.setShippingNumber(getStringCellValue(row,19)); |
|||
task.setShippingMode(getStringCellValue(row,20)); |
|||
task.setForwarderInfo(getStringCellValue(row,21)); |
|||
task.setCurrency(getStringCellValue(row,22)); |
|||
task.setTp(getNumericCellValueOrDefault(row,23)); |
|||
task.setTtlAmount(getNumericCellValueOrDefault(row,24)); |
|||
task.setSumPrice(getNumericCellValueOrDefault(row,25)); |
|||
task.setSo(getStringCellValue(row,26)); |
|||
task.setRemark(getStringCellValue(row,27)); |
|||
task.setErpFlag("N"); |
|||
task.setNotifyStatus("已计划"); |
|||
List<PartData> checkPart=coDelMapper.checkPart(task.getSite(),task.getPartNo()); |
|||
if(checkPart.size()==0){ |
|||
throw new RuntimeException("导入失败:物料:"+task.getPartNo()+"在当前工厂不存在!"); |
|||
} |
|||
excelList.add(task); |
|||
} |
|||
|
|||
} catch (Exception e) { |
|||
throw new RuntimeException("导入失败:"+e.getMessage()); |
|||
} |
|||
// 使用 groupingBy 进行分组 |
|||
Map<String, List<EcssCoDelNotifyData>> groupedByReadyDateAndCmcInvoice = excelList.stream() |
|||
.collect(Collectors.groupingBy(data -> data.getReadyDate() + "-" + data.getCmcInvoice())); |
|||
|
|||
// 每个分组创建一个销售发货单 |
|||
groupedByReadyDateAndCmcInvoice.forEach((key, list) -> { |
|||
String transNo; |
|||
//测试下有没有发票号已经录入并且转化了 |
|||
List<EcssCoDelNotifyHeaderData> checkIfHasHeader=coDelMapper.checkIfHasHeader(list.get(0).getCmcInvoice()); |
|||
if(checkIfHasHeader.size()==0){ |
|||
EcssCoDelNotifyHeader headerList=new EcssCoDelNotifyHeader(); |
|||
coDelMapper.updateTransNo(list.get(0).getSite(),"EC"); |
|||
transNo=coDelMapper.getTransNo(list.get(0).getSite(),"EC"); |
|||
headerList.setDelNo(transNo); |
|||
headerList.setSite(list.get(0).getSite()); |
|||
headerList.setBuNo(list.get(0).getBuNo()); |
|||
headerList.setCustomerName(list.get(0).getCustomerName()); |
|||
headerList.setDestination(list.get(0).getDestination()); |
|||
headerList.setNotifyStatus(list.get(0).getNotifyStatus()); |
|||
headerList.setReadyDate(list.get(0).getReadyDate()); |
|||
headerList.setShippingMode(list.get(0).getShippingMode()); |
|||
|
|||
headerList.setCustomerName(currentUser.getUsername()); |
|||
headerList.setCmcInvoice(list.get(0).getCmcInvoice()); |
|||
coDelMapper.saveEcssCoDelNotifyHeader(headerList); |
|||
}else { |
|||
// if("Y".equals(checkIfHasHeader.get(0).getErpFlag())){ |
|||
throw new RuntimeException("发票号:"+list.get(0).getCmcInvoice()+"已经生成了发货通知单,请先删除!"); |
|||
// } |
|||
|
|||
} |
|||
|
|||
for (int i = 0; i < list.size(); i++) { |
|||
list.get(i).setDelNo(transNo); |
|||
list.get(i).setItemNo(i+1); |
|||
} |
|||
coDelMapper.batchSaveEcssCoDelNotifyDetail(list); |
|||
}); |
|||
|
|||
} |
|||
|
|||
private String getStringCellValue(XSSFRow row, int columnIndex) { |
|||
Cell cell = row.getCell(columnIndex); |
|||
if (cell == null || cell.getCellType() == CellType.BLANK) { |
|||
return ""; |
|||
} |
|||
DataFormatter formatter = new DataFormatter(); |
|||
return formatter.formatCellValue(cell); |
|||
} |
|||
|
|||
public static Integer getIntegerCellValue(XSSFRow row, int columnIndex) { |
|||
Cell cell = row.getCell(columnIndex); |
|||
if (cell == null || cell.getCellType() == CellType.BLANK) { |
|||
return -1; |
|||
} |
|||
DataFormatter formatter = new DataFormatter(); |
|||
String cellValueAsString = formatter.formatCellValue(cell); |
|||
try { |
|||
// 尝试将字符串转换为整数 |
|||
return Integer.parseInt(cellValueAsString); |
|||
} catch (NumberFormatException e) { |
|||
// 如果转换失败,尝试将数字值四舍五入到最接近的整数 |
|||
if (cell.getCellType() == CellType.NUMERIC) { |
|||
return (int) Math.round(cell.getNumericCellValue()); |
|||
} |
|||
// 如果单元格既不是数字也不是可解析的字符串,则返回-1 |
|||
return -1; |
|||
} |
|||
} |
|||
|
|||
private BigDecimal getNumericCellValueOrDefault(XSSFRow row, int columnIndex) { |
|||
Cell cell = row.getCell(columnIndex); |
|||
if (cell == null || cell.getCellType() == CellType.BLANK) { |
|||
return BigDecimal.ZERO; |
|||
} |
|||
switch (cell.getCellType()) { |
|||
case NUMERIC: |
|||
BigDecimal value = BigDecimal.valueOf(cell.getNumericCellValue()); |
|||
return value.setScale(4, RoundingMode.HALF_UP); // 四舍五入保留四位小数 |
|||
case STRING: |
|||
try { |
|||
BigDecimal stringValue = new BigDecimal(cell.getStringCellValue()); |
|||
return stringValue.setScale(4, RoundingMode.HALF_UP); // 四舍五入保留四位小数 |
|||
} catch (NumberFormatException e) { |
|||
throw new RuntimeException("无效的数值格式: " + cell.getStringCellValue()); |
|||
} |
|||
default: |
|||
throw new RuntimeException("不支持的单元格类型: " + cell.getCellType()); |
|||
} |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,77 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.xujie.sys.modules.ecss.mapper.CoDelMapper"> |
|||
<!-- <select id="searchEcssCoDelNotify" parameterType="EcssCoDelNotifyData" resultType="EcssCoDelNotifyData">--> |
|||
<!-- select a.site,a.bu_no,a.delNo,a.item_no,a.notifyDate,a.salesOrder,a.ready_date,a.customer_name,a.customerPO,a.line,a.version,--> |
|||
<!--a.status,a.family,a.part_no,a.part_description,a.qty,a.lt,a.cmc_invoice,a.cmc_comment,a.Destination,a.saleType,--> |
|||
<!--a.awb_bl,a.shipping_number,a.shipping_mode,a.forwarder_info,a.currency,a.tp,a.ttl_amount,a.sum_price,a.so,a.upc,--> |
|||
<!--a.remark,a.erp_flag,a.notify_status,a.erp_delNo,a.erp_delItemNo,dbo.get_bu_desc(a.site,a.bu_no ) buDesc--> |
|||
<!-- from ecss_CoDelNotify a--> |
|||
|
|||
<!-- <where>--> |
|||
|
|||
<!-- <if test="query.username != null and query.username != ''">--> |
|||
<!-- AND a.NotifyNo = #{query.username}--> |
|||
<!-- </if>--> |
|||
|
|||
<!-- </where>--> |
|||
<!-- order by a.ready_date desc--> |
|||
<!-- </select>--> |
|||
|
|||
<select id="searchEcssCoDelNotifyHeader" resultType="EcssCoDelNotifyHeaderData"> |
|||
select a.site,a.bu_no,a.delNo,a.erp_delNo,a.ready_date,a.notifyDate,a.customer_name,a.Destination,a.shipping_mode,a.erp_flag, |
|||
a.notify_status,a.remark |
|||
from ecss_CoDelNotifyHeader a |
|||
left join accessBu D on A.site=D.site and A.bu_no=d.bu_no and D.username=#{query.username} |
|||
|
|||
<where> |
|||
|
|||
<if test="query.username != null and query.username != ''"> |
|||
AND a.NotifyNo = #{query.username} |
|||
</if> |
|||
|
|||
</where> |
|||
order by a.ready_date desc |
|||
</select> |
|||
|
|||
<select id="getSiteByBu" resultType="String"> |
|||
select top 1 site from BU where bu_no=#{buNo} |
|||
</select> |
|||
|
|||
<select id="checkIfHasHeader" resultType="EcssCoDelNotifyHeaderData"> |
|||
select top 1 * from ecss_CoDelNotifyHeader where cmc_invoice=#{inVoice} |
|||
</select> |
|||
|
|||
<update id="updateTransNo" > |
|||
EXEC UpdateTransNo #{site}, #{transType} |
|||
</update> |
|||
|
|||
<select id="getTransNo" resultType="String"> |
|||
SELECT |
|||
|
|||
dbo.Get_TransNo(#{site},#{transType}) as transNo |
|||
</select> |
|||
<insert id="saveEcssCoDelNotifyHeader" > |
|||
insert into ecss_CoDelNotifyHeader(site,bu_no,delNo,ready_date,customer_name,Destination,shipping_mode,erp_flag,notify_status, |
|||
remark,createDate,createBy,cmc_invoice) |
|||
values(#{site},#{buNo},#{delNo},#{readyDate},#{customerName},#{destination},#{shippingMode},'N',#{notifyStatus},#{remark},GetDate(), |
|||
#{createBy},#{cmcInvoice}) |
|||
</insert> |
|||
<insert id="batchSaveEcssCoDelNotifyDetail"> |
|||
insert into ecss_CoDelNotifyDetail (site,bu_no,delNo,item_no,salesOrder,salesOrder_item_no,customerPO,line,version, |
|||
status,family,part_no,part_description,qty,lt,cmc_invoice,cmc_comment,saleType, |
|||
awb_bl,shipping_number,forwarder_info,currency,tp,ttl_amount,sum_price, |
|||
so,upc,remark) |
|||
values |
|||
<foreach collection="list" separator="," item="item"> |
|||
(#{item.site},#{item.buNo},#{item.delNo},#{item.itemNo,jdbcType=INTEGER},#{item.salesOrder},#{item.salesOrderItemNo},#{item.customerPO},#{item.line},#{item.version}, |
|||
#{item.status},#{item.family},#{item.partNo},#{item.partDescription},#{item.qty,jdbcType=DECIMAL},#{item.lt,jdbcType=DECIMAL},#{item.cmcInvoice},#{item.cmcComment},#{item.saleType}, |
|||
#{item.awbBl},#{item.shippingNumber},#{item.forwarderInfo},#{item.currency},#{item.tp,jdbcType=DECIMAL},#{item.ttlAmount,jdbcType=DECIMAL},#{item.sumPrice,jdbcType=DECIMAL}, |
|||
#{item.so},#{item.upc},#{item.remark}) |
|||
</foreach> |
|||
</insert> |
|||
|
|||
<select id="checkPart" resultType="PartData"> |
|||
select site,part_no from Part where site=#{site,jdbcType=VARCHAR} and part_no=#{partNo} |
|||
</select> |
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue