ruanqi 1 year ago
parent
commit
bc835d7a2a
  1. 20
      src/main/java/com/xujie/sys/common/utils/DateUtils.java
  2. 34
      src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java
  3. 26
      src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java
  4. 10
      src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java
  5. 12
      src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyHeaderData.java
  6. 198
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotify.java
  7. 385
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyDetail.java
  8. 199
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyHeader.java
  9. 30
      src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java
  10. 15
      src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java
  11. 235
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java
  12. 77
      src/main/resources/mapper/ecss/CoDelMapper.xml

20
src/main/java/com/xujie/sys/common/utils/DateUtils.java

@ -298,7 +298,23 @@ public class DateUtils {
}
public static void main(String[] args) throws ParseException{
System.out.println(differentDays(DateUtil.parse("2022-11-17 12:00:00"),DateUtil.parse("2022-11-15")));
public static void main(String[] args) {
try {
try {
getDateByParten("777","yyyy-MM-dd");
}catch (ParseException e){
throw new RuntimeException("格式有误!");
}
}catch (Exception e){
System.out.println(e.getMessage()+"66666");
}
}
public static Date getDateByParten(String date, String parten)
throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(parten);
return sdf.parse(date);
}
}

34
src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java

@ -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();
}
}

26
src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java

@ -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;
}

10
src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java

@ -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 {
}

12
src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyHeaderData.java

@ -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;
}

198
src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotify.java

@ -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;
}

385
src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyDetail.java

@ -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;
}
}

199
src/main/java/com/xujie/sys/modules/ecss/entity/EcssCoDelNotifyHeader.java

@ -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;
}
}

30
src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java

@ -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);
}

15
src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java

@ -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);
}

235
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

@ -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());
}
}
}

77
src/main/resources/mapper/ecss/CoDelMapper.xml

@ -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>
Loading…
Cancel
Save