|
@@ -1,21 +1,25 @@
|
|
|
package org.jeecg.modules.splt.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import org.jeecg.common.util.oConvertUtils;
|
|
|
import org.jeecg.modules.spapl.entity.SizeTable;
|
|
|
+import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
|
|
|
import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
|
|
|
import org.jeecg.modules.spapl.mapper.SyPreAssembledPackingListItemMapper;
|
|
|
-import org.jeecg.modules.spapl.mapper.SyPreAssembledPackingListMapper;
|
|
|
import org.jeecg.modules.splt.entity.SyPackingListTailoring;
|
|
|
import org.jeecg.modules.splt.entity.SyPackingListTailoringItem;
|
|
|
import org.jeecg.modules.splt.mapper.SyPackingListTailoringItemMapper;
|
|
|
import org.jeecg.modules.splt.mapper.SyPackingListTailoringMapper;
|
|
|
import org.jeecg.modules.splt.service.ISyPackingListTailoringService;
|
|
|
+import org.jeecg.modules.splt.vo.SyPackingListTailoringVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.Serializable;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.List;
|
|
|
import java.util.Collection;
|
|
|
|
|
@@ -34,92 +38,143 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
|
|
|
private SyPackingListTailoringItemMapper syPackingListTailoringItemMapper;
|
|
|
@Autowired
|
|
|
private SyPreAssembledPackingListItemMapper syPreAssembledPackingListItemMapper;
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public void saveMain(SyPackingListTailoring syPackingListTailoring, List<SyPackingListTailoringItem> syPackingListTailoringItemList) {
|
|
|
- syPackingListTailoringMapper.insert(syPackingListTailoring);
|
|
|
- for(SyPackingListTailoringItem entity:syPackingListTailoringItemList) {
|
|
|
- //外键设置
|
|
|
- entity.setSyPackingListTailoringId(syPackingListTailoring.getId());
|
|
|
- syPackingListTailoringItemMapper.insert(entity);
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal add(List<SyPackingListTailoringItem> items,String pid){
|
|
|
+ BigDecimal box=new BigDecimal(0);//获取总箱数
|
|
|
+ for (SyPackingListTailoringItem item : items){
|
|
|
+ List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
|
|
|
+ item.setSyPackingListTailoringId(pid);//获取主表id
|
|
|
+ BigDecimal boxNumber1=item.getBoxNumber();//获取箱数
|
|
|
+ box=box.add(boxNumber1);//合计
|
|
|
+ item.setGroupId(oConvertUtils.id());
|
|
|
+ item.setDelFlag("0");//默认为未删除
|
|
|
+ for (SizeTable size : sizes){
|
|
|
+ SyPackingListTailoringItem item1=item;
|
|
|
+ BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
|
|
|
+ item1.setTotal(boxNumber);//该尺码件数
|
|
|
+ item1.setSize(size.getSize());//获取尺码
|
|
|
+ item1.setTotalPrice(boxNumber.multiply(item1.getUnitPrice()));//获取总价 箱数*单价-->件数*单价
|
|
|
+// item1.setBoxNumber(boxNumber);//获取箱数
|
|
|
+ boxNumber=boxNumber.divide(item.getPiecesBox(),6,BigDecimal.ROUND_HALF_UP);
|
|
|
+ item1.setTotalNetWeight(boxNumber.multiply(item1.getNetWeight()));//获取总净重 净重*箱数
|
|
|
+ item1.setTotalGrossWeight(boxNumber.multiply(item1.getGrossWeight()));//获取总毛重 箱数*毛重/箱
|
|
|
+ //item1.setTotalNetWeight(boxNumber.multiply(new BigDecimal(size.getProportion())));//获取净净重 不知
|
|
|
+ BigDecimal volume=boxNumber.multiply(item1.getOuterBoxHeight());
|
|
|
+ volume=volume.multiply(item1.getOuterBoxLength());
|
|
|
+ volume=volume.multiply(item1.getOuterBoxWidth());
|
|
|
+ item1.setTotalVolume(volume);//获取总体积 长*宽*高*箱数
|
|
|
+
|
|
|
+ item1.setSyPreAssembledPackingListItemId(size.getItemId());//获取到预装箱单子表id
|
|
|
+ item1.setSort(size.getNum());//获取序号
|
|
|
+ item1.setId(oConvertUtils.id());//获取到随机id
|
|
|
+ syPackingListTailoringItemMapper.insert(item1);//添加子表数据
|
|
|
+ }
|
|
|
}
|
|
|
+ return box;
|
|
|
}
|
|
|
|
|
|
+ BigDecimal update(List<SyPackingListTailoringItem> items,String pid){
|
|
|
+ BigDecimal box=new BigDecimal(0);//获取总箱数
|
|
|
+ for (SyPackingListTailoringItem item : items){
|
|
|
+ List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
|
|
|
+ BigDecimal boxNumber1=item.getBoxNumber();//获取箱数
|
|
|
+ box=box.add(boxNumber1);//合计
|
|
|
+ item.setGroupId(oConvertUtils.id());
|
|
|
+ item.setDelFlag("0");//删除
|
|
|
+ for (SizeTable size : sizes){
|
|
|
+ SyPackingListTailoringItem item1=item;
|
|
|
+ BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
|
|
|
+ item1.setSize(size.getSize());//获取尺码信息
|
|
|
+ item1.setTotal(boxNumber);//该尺码件数
|
|
|
+ item1.setTotalPrice(boxNumber.multiply(item1.getUnitPrice()));//获取总价 箱数*单价-->件数*单价
|
|
|
+ //item1.setBoxNumber(boxNumber);//获取箱数
|
|
|
+ boxNumber=boxNumber.divide(item.getPiecesBox(),6,BigDecimal.ROUND_HALF_UP);
|
|
|
+ item1.setTotalNetWeight(boxNumber.multiply(item1.getNetWeight()));//获取总净重 净重*箱数
|
|
|
+ item1.setTotalGrossWeight(boxNumber.multiply(item1.getGrossWeight()));//获取总毛重 箱数*毛重/箱
|
|
|
+ //item1.setTotalNetWeight(boxNumber.multiply(new BigDecimal(size.getProportion())));//获取净净重 不知
|
|
|
+ BigDecimal volume=boxNumber.multiply(item1.getOuterBoxHeight());//获取体积
|
|
|
+ volume=volume.multiply(item1.getOuterBoxLength());
|
|
|
+ volume=volume.multiply(item1.getOuterBoxWidth());
|
|
|
+ item1.setTotalVolume(volume);//获取总体积 长*宽*高*箱数
|
|
|
+
|
|
|
+ //item.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
|
|
|
+ item1.setId(size.getItemId());//从尺码表中获取到id
|
|
|
+ // 获取到预装箱单子表id
|
|
|
+ String syPreAssembledPackingListItemId=syPackingListTailoringItemMapper.selectById(item1.getId()).getSyPreAssembledPackingListItemId();
|
|
|
+ item1.setSyPreAssembledPackingListItemId(syPreAssembledPackingListItemId);
|
|
|
+ int row=syPackingListTailoringItemMapper.updateById(item1);//如果没修改成功就是新增数据
|
|
|
+ if(row==0){//如果为0就添加数据
|
|
|
+ item1.setSyPackingListTailoringId(pid);
|
|
|
+ syPackingListTailoringItemMapper.insert(item1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return box;
|
|
|
+ }
|
|
|
+
|
|
|
+ String randomStr(){
|
|
|
+ SimpleDateFormat sf= new SimpleDateFormat("yyyyMMdd");
|
|
|
+ QueryWrapper<SyPackingListTailoring> queryWrapperCount=new QueryWrapper<>();
|
|
|
+ queryWrapperCount.like("create_time", new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis()));
|
|
|
+ queryWrapperCount.select("lpad(count(0)+1,6,0) as id");
|
|
|
+ return "CY"+sf.format(System.currentTimeMillis())+getOne(queryWrapperCount).getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
public SyPackingListTailoring saveMain2(SyPackingListTailoring syPackingListTailoring){
|
|
|
List<SyPackingListTailoringItem> items=syPackingListTailoring.getSyPackingListTailoringItemList();
|
|
|
//SyPackingListTailoring.setDocumentNo(oConvertUtils.id());//随机单据号
|
|
|
syPackingListTailoring.setDelFlag("0");//删除状态默认为0
|
|
|
syPackingListTailoring.setPushState("0");//推送状态默认为0
|
|
|
- syPackingListTailoring.setTheDocumentsState("0");//单据装填默认为0
|
|
|
+ syPackingListTailoring.setTheDocumentsState("0");//单据装态默认为0
|
|
|
+ syPackingListTailoring.setOrderNumber(randomStr());//订单号
|
|
|
syPackingListTailoringMapper.insert(syPackingListTailoring);//往主表添加数据
|
|
|
- System.out.println("syPackingListTailoring的id为:\t"+syPackingListTailoring.getId());
|
|
|
- BigDecimal totalBoxes=new BigDecimal(0);//总箱数
|
|
|
- BigDecimal totalNetWeight=new BigDecimal(0);//总净重
|
|
|
- BigDecimal totalGrossWeight=new BigDecimal(0);//总毛重
|
|
|
- BigDecimal totalVolume=new BigDecimal(0);//总体积
|
|
|
- BigDecimal totalPrice=new BigDecimal(0);//总价
|
|
|
- for (SyPackingListTailoringItem item : items){
|
|
|
- totalBoxes=totalBoxes.add(item.getBoxNumber());//箱数
|
|
|
- totalNetWeight=totalNetWeight.add(item.getTotalNetWeight());//总净重
|
|
|
- totalGrossWeight=totalGrossWeight.add(item.getTotalGrossWeight());//总毛重
|
|
|
- totalVolume=totalVolume.add(item.getTotalVolume());//总体积
|
|
|
- totalPrice=totalPrice.add(item.getTotalPrice());//总价
|
|
|
- System.out.println("箱数\t"+totalBoxes);
|
|
|
- System.out.println("总净重\t"+totalNetWeight);
|
|
|
- System.out.println("总毛重\t"+totalGrossWeight);
|
|
|
- System.out.println("总体积\t"+totalVolume);
|
|
|
- System.out.println("总价\t"+totalPrice);
|
|
|
- List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
|
|
|
- BigDecimal total=item.getTotal();//总件数
|
|
|
- BigDecimal piecesBox=item.getPiecesBox();//箱/件数
|
|
|
- item.setSyPackingListTailoringId(syPackingListTailoring.getId());//获取主表id
|
|
|
- for (SizeTable size : sizes){
|
|
|
- BigDecimal quantity=total.divide(piecesBox,4,BigDecimal.ROUND_HALF_UP) ;//总件数除以箱/件数
|
|
|
- quantity=quantity.multiply(new BigDecimal(size.getProportion()));//乘以比例可获得
|
|
|
- item.setTotal(quantity);//该尺码件数
|
|
|
- item.setSize(size.getSize());//获取尺码信息
|
|
|
- item.setSyPreAssembledPackingListItemId(size.getItemId());//获取到预装箱单子表id
|
|
|
- item.setDelFlag("0");//默认为未删除
|
|
|
- item.setSort(size.getNum());//序号
|
|
|
- item.setId(oConvertUtils.id());//获取到随机id
|
|
|
- int row =syPackingListTailoringItemMapper.insert(item);//添加子表数据
|
|
|
- System.out.println("尺码大小:\t"+item.getSize());
|
|
|
- System.out.println("尺码件数:\t"+item.getTotal());
|
|
|
- System.out.println("尺码比例:\t"+size.getProportion());
|
|
|
- System.out.println("预装箱单主表id\t"+syPackingListTailoring.getSyPreAssembledPackingListId());
|
|
|
- System.out.println("预装箱单子表id\t"+item.getSyPreAssembledPackingListItemId());
|
|
|
- System.out.println("预装箱单子表id为"+item.getId());
|
|
|
- System.out.println("插入数据库后返回消息为"+row);
|
|
|
- }
|
|
|
+ if(syPackingListTailoring.getSyPackingListTailoringItemList()!=null){
|
|
|
+ BigDecimal box=add(syPackingListTailoring.getSyPackingListTailoringItemList(),syPackingListTailoring.getId());
|
|
|
+ syPackingListTailoring.setTotalBoxes(box);
|
|
|
+ syPackingListTailoringMapper.updateById(syPackingListTailoring);
|
|
|
}
|
|
|
- syPackingListTailoring.setTotalBoxes(totalBoxes);
|
|
|
- syPackingListTailoring.setTotalNetWeight(totalNetWeight);
|
|
|
- syPackingListTailoring.setTotalGrossWeight(totalGrossWeight);
|
|
|
- syPackingListTailoring.setTotalVolume(totalVolume);
|
|
|
- syPackingListTailoring.setTotalPrice(totalPrice);
|
|
|
- syPackingListTailoringMapper.updateById(syPackingListTailoring);
|
|
|
return syPackingListTailoring;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 专门处理云工厂数据
|
|
|
+ * @param syPackingListTailoring
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void updateMain(SyPackingListTailoring syPackingListTailoring, List<SyPackingListTailoringItem> syPackingListTailoringItemList) {
|
|
|
- syPackingListTailoringMapper.updateById(syPackingListTailoring);
|
|
|
-
|
|
|
- //1.先删除子表数据
|
|
|
- syPackingListTailoringItemMapper.deleteByMainId(syPackingListTailoring.getId());
|
|
|
-
|
|
|
- //2.子表数据重新插入
|
|
|
- for(SyPackingListTailoringItem entity:syPackingListTailoringItemList) {
|
|
|
- //外键设置
|
|
|
- entity.setSyPackingListTailoringId(syPackingListTailoring.getId());
|
|
|
- entity.setDelFlag("0");//修改成为未删除状态
|
|
|
- int row=syPackingListTailoringItemMapper.updateById(entity);
|
|
|
- if(row<1){//如果为0就insert
|
|
|
- syPackingListTailoringItemMapper.insert(entity);
|
|
|
+ public List<SyPackingListTailoring> saveList(List<SyPackingListTailoring> syPackingListTailoring) {
|
|
|
+ for (SyPackingListTailoring splt : syPackingListTailoring){
|
|
|
+ splt.setWhetherCloudFactoryPush("y");//y代表是云工厂推送的
|
|
|
+ splt.setId(null);//id设置为null
|
|
|
+ splt.setOrderNumber(randomStr());//订单号
|
|
|
+ syPackingListTailoringMapper.insert(splt);
|
|
|
+ for (SyPackingListTailoringItem item : splt.getSyPackingListTailoringItemList()){
|
|
|
+ item.setId(null);
|
|
|
+ syPackingListTailoringItemMapper.insert(item);
|
|
|
}
|
|
|
}
|
|
|
+ return syPackingListTailoring;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public SyPackingListTailoring updateMain2(SyPackingListTailoring syPackingListTailoring) {
|
|
|
+ /*if(!syPackingListTailoringMapper.selectById(syPackingListTailoring.getId()).getState().equals("0")){
|
|
|
+ throw new JeecgBootException("单据已提交不能修改!");
|
|
|
+ }*/
|
|
|
+ List<SyPackingListTailoringItem> items=syPackingListTailoring.getSyPackingListTailoringItemList();
|
|
|
+ syPackingListTailoringMapper.updateById(syPackingListTailoring);//修改主表数据
|
|
|
+ syPackingListTailoringItemMapper.deleteByMainId(syPackingListTailoring.getId());//将子表的删除状态都变成1
|
|
|
+ if(syPackingListTailoring.getSyPackingListTailoringItemList()!=null){
|
|
|
+ BigDecimal box= update(syPackingListTailoring.getSyPackingListTailoringItemList(),syPackingListTailoring.getId());
|
|
|
+ syPackingListTailoring.setTotalBoxes(box);
|
|
|
+ syPackingListTailoringMapper.updateById(syPackingListTailoring);
|
|
|
+ }
|
|
|
+ return syPackingListTailoring;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -151,7 +206,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
|
|
|
if(items.size()>0){
|
|
|
for (SyPackingListTailoringItem item : items){
|
|
|
//循环子表获得尺码组
|
|
|
- item.setSizeTables(sort(syPreAssembledPackingListItemMapper.querySize2(item.getColour(),item.getSyPreAssembledPackingListId())));
|
|
|
+ item.setSizeTables(sort(syPreAssembledPackingListItemMapper.querySize2(item.getGroupId(),item.getSyPreAssembledPackingListId())));
|
|
|
}
|
|
|
syPackingListTailoring.setSyPackingListTailoringItemList(items);
|
|
|
}
|
|
@@ -165,12 +220,22 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
|
|
|
*/
|
|
|
@Override
|
|
|
public SyPackingListTailoring queryId(String id) {
|
|
|
- SyPackingListTailoring syPackingListTailoring=queryId(id);
|
|
|
+ SyPackingListTailoring syPackingListTailoring=syPackingListTailoringMapper.selectById(id);
|
|
|
List<SyPackingListTailoringItem> items=syPackingListTailoringItemMapper.queryId(id);
|
|
|
+ List<SizeTable> size=syPackingListTailoringItemMapper.sizes(syPackingListTailoring.getId());
|
|
|
+ syPackingListTailoring.setSizeTables(size);//获取id
|
|
|
+ for (SyPackingListTailoringItem item : items){
|
|
|
+ item.setSizeTables(syPackingListTailoringItemMapper.size(item.getColour(),item.getSyPackingListTailoringId()));
|
|
|
+ }
|
|
|
syPackingListTailoring.setSyPackingListTailoringItemList(items);
|
|
|
return syPackingListTailoring;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public IPage<SyPackingListTailoringVo> selectList(IPage<SyPackingListTailoringVo> page, QueryWrapper<SyPackingListTailoringVo> queryWrapper) {
|
|
|
+ return syPackingListTailoringMapper.selectList(page,queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
public List<SizeTable> sort(List<SizeTable> sizes) {
|
|
|
int i=0;
|
|
|
for(SizeTable size : sizes){
|