yuansh 2 mēneši atpakaļ
vecāks
revīzija
9f510333cb
40 mainītis faili ar 2734 papildinājumiem un 34 dzēšanām
  1. 288 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/PurOrderB2bController.java
  2. 288 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/SaleOrderB2bController.java
  3. 191 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderB2b.java
  4. 153 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderProductB2b.java
  5. 87 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderShipB2b.java
  6. 217 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderB2b.java
  7. 153 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderProductB2b.java
  8. 87 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderShipB2b.java
  9. 17 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderB2bMapper.java
  10. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderProductB2bMapper.java
  11. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderShipB2bMapper.java
  12. 17 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderB2bMapper.java
  13. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderProductB2bMapper.java
  14. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderShipB2bMapper.java
  15. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderB2bMapper.xml
  16. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderProductB2bMapper.xml
  17. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderShipB2bMapper.xml
  18. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderB2bMapper.xml
  19. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderProductB2bMapper.xml
  20. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderShipB2bMapper.xml
  21. 51 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderB2bService.java
  22. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderProductB2bService.java
  23. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderShipB2bService.java
  24. 51 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderB2bService.java
  25. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderProductB2bService.java
  26. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderShipB2bService.java
  27. 98 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderB2bServiceImpl.java
  28. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderProductB2bServiceImpl.java
  29. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderShipB2bServiceImpl.java
  30. 98 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderB2bServiceImpl.java
  31. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderProductB2bServiceImpl.java
  32. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderShipB2bServiceImpl.java
  33. 195 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/PurOrderB2bPage.java
  34. 221 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/SaleOrderB2bPage.java
  35. 56 7
      srm-module-code/src/main/java/org/jeecg/modules/purCode/controller/PurOrderController.java
  36. 8 7
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleContractController.java
  37. 1 1
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleDeliveryController.java
  38. 23 5
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInvoiceController.java
  39. 32 7
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleOrderController.java
  40. 8 7
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleQuotationController.java

+ 288 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/PurOrderB2bController.java

@@ -0,0 +1,288 @@
+package org.jeecg.modules.b2bCode.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.query.QueryRuleEnum;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderB2b;
+import org.jeecg.modules.b2bCode.vo.PurOrderB2bPage;
+import org.jeecg.modules.b2bCode.service.IPurOrderB2bService;
+import org.jeecg.modules.b2bCode.service.IPurOrderShipB2bService;
+import org.jeecg.modules.b2bCode.service.IPurOrderProductB2bService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+
+ /**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Api(tags="采购订单b2b")
+@RestController
+@RequestMapping("/b2bCode/purOrderB2b")
+@Slf4j
+public class PurOrderB2bController {
+	@Autowired
+	private IPurOrderB2bService purOrderB2bService;
+	@Autowired
+	private IPurOrderShipB2bService purOrderShipB2bService;
+	@Autowired
+	private IPurOrderProductB2bService purOrderProductB2bService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param purOrderB2b
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "采购订单b2b-分页列表查询")
+	@ApiOperation(value="采购订单b2b-分页列表查询", notes="采购订单b2b-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PurOrderB2b>> queryPageList(PurOrderB2b purOrderB2b,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        QueryWrapper<PurOrderB2b> queryWrapper = QueryGenerator.initQueryWrapper(purOrderB2b, req.getParameterMap());
+		Page<PurOrderB2b> page = new Page<PurOrderB2b>(pageNo, pageSize);
+		IPage<PurOrderB2b> pageList = purOrderB2bService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param purOrderB2bPage
+	 * @return
+	 */
+	@AutoLog(value = "采购订单b2b-添加")
+	@ApiOperation(value="采购订单b2b-添加", notes="采购订单b2b-添加")
+    @RequiresPermissions("b2bCode:pur_order_b2b:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PurOrderB2bPage purOrderB2bPage) {
+		PurOrderB2b purOrderB2b = new PurOrderB2b();
+		BeanUtils.copyProperties(purOrderB2bPage, purOrderB2b);
+		purOrderB2bService.saveMain(purOrderB2b, purOrderB2bPage.getPurOrderShipB2bList(),purOrderB2bPage.getPurOrderProductB2bList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param purOrderB2bPage
+	 * @return
+	 */
+	@AutoLog(value = "采购订单b2b-编辑")
+	@ApiOperation(value="采购订单b2b-编辑", notes="采购订单b2b-编辑")
+    @RequiresPermissions("b2bCode:pur_order_b2b:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PurOrderB2bPage purOrderB2bPage) {
+		PurOrderB2b purOrderB2b = new PurOrderB2b();
+		BeanUtils.copyProperties(purOrderB2bPage, purOrderB2b);
+		PurOrderB2b purOrderB2bEntity = purOrderB2bService.getById(purOrderB2b.getId());
+		if(purOrderB2bEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		purOrderB2bService.updateMain(purOrderB2b, purOrderB2bPage.getPurOrderShipB2bList(),purOrderB2bPage.getPurOrderProductB2bList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "采购订单b2b-通过id删除")
+	@ApiOperation(value="采购订单b2b-通过id删除", notes="采购订单b2b-通过id删除")
+    @RequiresPermissions("b2bCode:pur_order_b2b:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		purOrderB2bService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "采购订单b2b-批量删除")
+	@ApiOperation(value="采购订单b2b-批量删除", notes="采购订单b2b-批量删除")
+    @RequiresPermissions("b2bCode:pur_order_b2b:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.purOrderB2bService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "采购订单b2b-通过id查询")
+	@ApiOperation(value="采购订单b2b-通过id查询", notes="采购订单b2b-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PurOrderB2b> queryById(@RequestParam(name="id",required=true) String id) {
+		PurOrderB2b purOrderB2b = purOrderB2bService.getById(id);
+		if(purOrderB2b==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(purOrderB2b);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "采购订单b2b子表 - 船明细通过主表ID查询")
+	@ApiOperation(value="采购订单b2b子表 - 船明细主表ID查询", notes="采购订单b2b子表 - 船明细-通主表ID查询")
+	@GetMapping(value = "/queryPurOrderShipB2bByMainId")
+	public Result<List<PurOrderShipB2b>> queryPurOrderShipB2bListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<PurOrderShipB2b> purOrderShipB2bList = purOrderShipB2bService.selectByMainId(id);
+		return Result.OK(purOrderShipB2bList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "采购订单b2b子表 - 产品明细通过主表ID查询")
+	@ApiOperation(value="采购订单b2b子表 - 产品明细主表ID查询", notes="采购订单b2b子表 - 产品明细-通主表ID查询")
+	@GetMapping(value = "/queryPurOrderProductB2bByMainId")
+	public Result<List<PurOrderProductB2b>> queryPurOrderProductB2bListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<PurOrderProductB2b> purOrderProductB2bList = purOrderProductB2bService.selectByMainId(id);
+		return Result.OK(purOrderProductB2bList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param purOrderB2b
+    */
+    @RequiresPermissions("b2bCode:pur_order_b2b:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PurOrderB2b purOrderB2b) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<PurOrderB2b> queryWrapper = QueryGenerator.initQueryWrapper(purOrderB2b, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 获取导出数据
+      List<PurOrderB2b> purOrderB2bList = purOrderB2bService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<PurOrderB2bPage> pageList = new ArrayList<PurOrderB2bPage>();
+      for (PurOrderB2b main : purOrderB2bList) {
+          PurOrderB2bPage vo = new PurOrderB2bPage();
+          BeanUtils.copyProperties(main, vo);
+          List<PurOrderShipB2b> purOrderShipB2bList = purOrderShipB2bService.selectByMainId(main.getId());
+          vo.setPurOrderShipB2bList(purOrderShipB2bList);
+          List<PurOrderProductB2b> purOrderProductB2bList = purOrderProductB2bService.selectByMainId(main.getId());
+          vo.setPurOrderProductB2bList(purOrderProductB2bList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "采购订单b2b列表");
+      mv.addObject(NormalExcelConstants.CLASS, PurOrderB2bPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("采购订单b2b数据", "导出人:"+sysUser.getRealname(), "采购订单b2b"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("b2bCode:pur_order_b2b:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<PurOrderB2bPage> list = ExcelImportUtil.importExcel(file.getInputStream(), PurOrderB2bPage.class, params);
+              for (PurOrderB2bPage page : list) {
+                  PurOrderB2b po = new PurOrderB2b();
+                  BeanUtils.copyProperties(page, po);
+                  purOrderB2bService.saveMain(po, page.getPurOrderShipB2bList(),page.getPurOrderProductB2bList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+}

+ 288 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/SaleOrderB2bController.java

@@ -0,0 +1,288 @@
+package org.jeecg.modules.b2bCode.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.query.QueryRuleEnum;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderB2b;
+import org.jeecg.modules.b2bCode.vo.SaleOrderB2bPage;
+import org.jeecg.modules.b2bCode.service.ISaleOrderB2bService;
+import org.jeecg.modules.b2bCode.service.ISaleOrderShipB2bService;
+import org.jeecg.modules.b2bCode.service.ISaleOrderProductB2bService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+
+ /**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Api(tags="销售订单b2b")
+@RestController
+@RequestMapping("/b2bCode/saleOrderB2b")
+@Slf4j
+public class SaleOrderB2bController {
+	@Autowired
+	private ISaleOrderB2bService saleOrderB2bService;
+	@Autowired
+	private ISaleOrderShipB2bService saleOrderShipB2bService;
+	@Autowired
+	private ISaleOrderProductB2bService saleOrderProductB2bService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param saleOrderB2b
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "销售订单b2b-分页列表查询")
+	@ApiOperation(value="销售订单b2b-分页列表查询", notes="销售订单b2b-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SaleOrderB2b>> queryPageList(SaleOrderB2b saleOrderB2b,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        QueryWrapper<SaleOrderB2b> queryWrapper = QueryGenerator.initQueryWrapper(saleOrderB2b, req.getParameterMap());
+		Page<SaleOrderB2b> page = new Page<SaleOrderB2b>(pageNo, pageSize);
+		IPage<SaleOrderB2b> pageList = saleOrderB2bService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param saleOrderB2bPage
+	 * @return
+	 */
+	@AutoLog(value = "销售订单b2b-添加")
+	@ApiOperation(value="销售订单b2b-添加", notes="销售订单b2b-添加")
+    @RequiresPermissions("b2bCode:sale_order_b2b:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SaleOrderB2bPage saleOrderB2bPage) {
+		SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+		BeanUtils.copyProperties(saleOrderB2bPage, saleOrderB2b);
+		saleOrderB2bService.saveMain(saleOrderB2b, saleOrderB2bPage.getSaleOrderShipB2bList(),saleOrderB2bPage.getSaleOrderProductB2bList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param saleOrderB2bPage
+	 * @return
+	 */
+	@AutoLog(value = "销售订单b2b-编辑")
+	@ApiOperation(value="销售订单b2b-编辑", notes="销售订单b2b-编辑")
+    @RequiresPermissions("b2bCode:sale_order_b2b:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SaleOrderB2bPage saleOrderB2bPage) {
+		SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+		BeanUtils.copyProperties(saleOrderB2bPage, saleOrderB2b);
+		SaleOrderB2b saleOrderB2bEntity = saleOrderB2bService.getById(saleOrderB2b.getId());
+		if(saleOrderB2bEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		saleOrderB2bService.updateMain(saleOrderB2b, saleOrderB2bPage.getSaleOrderShipB2bList(),saleOrderB2bPage.getSaleOrderProductB2bList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "销售订单b2b-通过id删除")
+	@ApiOperation(value="销售订单b2b-通过id删除", notes="销售订单b2b-通过id删除")
+    @RequiresPermissions("b2bCode:sale_order_b2b:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		saleOrderB2bService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "销售订单b2b-批量删除")
+	@ApiOperation(value="销售订单b2b-批量删除", notes="销售订单b2b-批量删除")
+    @RequiresPermissions("b2bCode:sale_order_b2b:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.saleOrderB2bService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "销售订单b2b-通过id查询")
+	@ApiOperation(value="销售订单b2b-通过id查询", notes="销售订单b2b-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SaleOrderB2b> queryById(@RequestParam(name="id",required=true) String id) {
+		SaleOrderB2b saleOrderB2b = saleOrderB2bService.getById(id);
+		if(saleOrderB2b==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(saleOrderB2b);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "销售订单b2b子表 - 船明细通过主表ID查询")
+	@ApiOperation(value="销售订单b2b子表 - 船明细主表ID查询", notes="销售订单b2b子表 - 船明细-通主表ID查询")
+	@GetMapping(value = "/querySaleOrderShipB2bByMainId")
+	public Result<List<SaleOrderShipB2b>> querySaleOrderShipB2bListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<SaleOrderShipB2b> saleOrderShipB2bList = saleOrderShipB2bService.selectByMainId(id);
+		return Result.OK(saleOrderShipB2bList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "销售订单b2b子表 - 产品明细通过主表ID查询")
+	@ApiOperation(value="销售订单b2b子表 - 产品明细主表ID查询", notes="销售订单b2b子表 - 产品明细-通主表ID查询")
+	@GetMapping(value = "/querySaleOrderProductB2bByMainId")
+	public Result<List<SaleOrderProductB2b>> querySaleOrderProductB2bListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<SaleOrderProductB2b> saleOrderProductB2bList = saleOrderProductB2bService.selectByMainId(id);
+		return Result.OK(saleOrderProductB2bList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param saleOrderB2b
+    */
+    @RequiresPermissions("b2bCode:sale_order_b2b:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SaleOrderB2b saleOrderB2b) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<SaleOrderB2b> queryWrapper = QueryGenerator.initQueryWrapper(saleOrderB2b, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 获取导出数据
+      List<SaleOrderB2b> saleOrderB2bList = saleOrderB2bService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<SaleOrderB2bPage> pageList = new ArrayList<SaleOrderB2bPage>();
+      for (SaleOrderB2b main : saleOrderB2bList) {
+          SaleOrderB2bPage vo = new SaleOrderB2bPage();
+          BeanUtils.copyProperties(main, vo);
+          List<SaleOrderShipB2b> saleOrderShipB2bList = saleOrderShipB2bService.selectByMainId(main.getId());
+          vo.setSaleOrderShipB2bList(saleOrderShipB2bList);
+          List<SaleOrderProductB2b> saleOrderProductB2bList = saleOrderProductB2bService.selectByMainId(main.getId());
+          vo.setSaleOrderProductB2bList(saleOrderProductB2bList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "销售订单b2b列表");
+      mv.addObject(NormalExcelConstants.CLASS, SaleOrderB2bPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("销售订单b2b数据", "导出人:"+sysUser.getRealname(), "销售订单b2b"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("b2bCode:sale_order_b2b:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<SaleOrderB2bPage> list = ExcelImportUtil.importExcel(file.getInputStream(), SaleOrderB2bPage.class, params);
+              for (SaleOrderB2bPage page : list) {
+                  SaleOrderB2b po = new SaleOrderB2b();
+                  BeanUtils.copyProperties(page, po);
+                  saleOrderB2bService.saveMain(po, page.getSaleOrderShipB2bList(),page.getSaleOrderProductB2bList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+}

+ 191 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderB2b.java

@@ -0,0 +1,191 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="pur_order_b2b对象", description="采购订单b2b")
+@Data
+@TableName("pur_order_b2b")
+public class PurOrderB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**客户确认(1-已确认,0-未确认)*/
+	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+    @ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15)
+    @ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**关闭(close)1是0否*/
+	@Excel(name = "关闭(close)1是0否", width = 15)
+    @ApiModelProperty(value = "关闭(close)1是0否")
+    private String close;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+    @ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+    @ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**供应商(supplier)*/
+	@Excel(name = "供应商(supplier)", width = 15)
+    @ApiModelProperty(value = "供应商(supplier)")
+    private String supplier;
+	/**供应商名称*/
+	@Excel(name = "供应商名称", width = 15)
+    @ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+	/**业务类型(busyness type)*/
+	@Excel(name = "业务类型(busyness type)", width = 15)
+    @ApiModelProperty(value = "业务类型(busyness type)")
+    private String busynessType;
+	/**优先级(priority)*/
+	@Excel(name = "优先级(priority)", width = 15)
+    @ApiModelProperty(value = "优先级(priority)")
+    private String priority;
+	/**产品分类(production class)*/
+	@Excel(name = "产品分类(production class)", width = 15)
+    @ApiModelProperty(value = "产品分类(production class)")
+    private String productionClass;
+	/**机型(model)*/
+	@Excel(name = "机型(model)", width = 15)
+    @ApiModelProperty(value = "机型(model)")
+    private String model;
+	/**厂家(maker)*/
+	@Excel(name = "厂家(maker)", width = 15)
+    @ApiModelProperty(value = "厂家(maker)")
+    private String maker;
+	/**贸易条款(trade Terms)*/
+	@Excel(name = "贸易条款(trade Terms)", width = 15)
+    @ApiModelProperty(value = "贸易条款(trade Terms)")
+    private String tradeTerms;
+	/**是否出口(export)*/
+	@Excel(name = "是否出口(export)", width = 15)
+    @ApiModelProperty(value = "是否出口(export)")
+    private String isExport;
+	/**包装要求(packageb requirement)*/
+	@Excel(name = "包装要求(packageb requirement)", width = 15)
+    @ApiModelProperty(value = "包装要求(packageb requirement)")
+    private String packagebRequirement;
+	/**收件人(recipient)*/
+	@Excel(name = "收件人(recipient)", width = 15)
+    @ApiModelProperty(value = "收件人(recipient)")
+    private String recipient;
+	/**收件人电话(recipient tel)*/
+	@Excel(name = "收件人电话(recipient tel)", width = 15)
+    @ApiModelProperty(value = "收件人电话(recipient tel)")
+    private String recipientTel;
+	/**收件人地址(recipient address)*/
+	@Excel(name = "收件人地址(recipient address)", width = 15)
+    @ApiModelProperty(value = "收件人地址(recipient address)")
+    private String recipientAddress;
+	/**付款条件(payment terms)*/
+	@Excel(name = "付款条件(payment terms)", width = 15)
+    @ApiModelProperty(value = "付款条件(payment terms)")
+    private String paymentTerms;
+	/**发货方式(delivery)*/
+	@Excel(name = "发货方式(delivery)", width = 15)
+    @ApiModelProperty(value = "发货方式(delivery)")
+    private String delivery;
+	/**质保期(warranty period)/月*/
+	@Excel(name = "质保期(warranty period)/月", width = 15)
+    @ApiModelProperty(value = "质保期(warranty period)/月")
+    private String warrantyPeriod;
+	/**质保条款(warranty terms)*/
+	@Excel(name = "质保条款(warranty terms)", width = 15)
+    @ApiModelProperty(value = "质保条款(warranty terms)")
+    private String warrantyTerms;
+	/**汇率(exchange rate)*/
+	@Excel(name = "汇率(exchange rate)", width = 15)
+    @ApiModelProperty(value = "汇率(exchange rate)")
+    private java.math.BigDecimal exchangeRate;
+	/**采购员(purchaseman)*/
+	@Excel(name = "采购员(purchaseman)", width = 15)
+    @ApiModelProperty(value = "采购员(purchaseman)")
+    private String purchaseman;
+	/**采购部门(purchase department)*/
+	@Excel(name = "采购部门(purchase department)", width = 15)
+    @ApiModelProperty(value = "采购部门(purchase department)")
+    private String purchaseDepartment;
+	/**币种(currency)*/
+	@Excel(name = "币种(currency)", width = 15)
+    @ApiModelProperty(value = "币种(currency)")
+    private String currency;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**附件(attachs)*/
+	@Excel(name = "附件(attachs)", width = 15)
+    @ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+	/**版本号*/
+	@Excel(name = "版本号", width = 15)
+    @ApiModelProperty(value = "版本号")
+    private String version;
+	/**来源*/
+	@Excel(name = "来源", width = 15)
+    @ApiModelProperty(value = "来源")
+    private String sourceCode;
+	/**来源2*/
+	@Excel(name = "来源2", width = 15)
+    @ApiModelProperty(value = "来源2")
+    private String sourceCode2;
+}

+ 153 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderProductB2b.java

@@ -0,0 +1,153 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 采购订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="pur_order_product_b2b对象", description="采购订单b2b子表 - 产品明细")
+@Data
+@TableName("pur_order_product_b2b")
+public class PurOrderProductB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@Excel(name = "状态(1-启用,0-停用)", width = 15)
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(销售订单)*/
+    @ApiModelProperty(value = "表头主键(销售订单)")
+    private String headId;
+	/**交期*/
+	@Excel(name = "交期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "交期")
+    private Date deliveryTime;
+	/**最早发货日期(earliest delivery date)*/
+	@Excel(name = "最早发货日期(earliest delivery date)", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "最早发货日期(earliest delivery date)")
+    private Date earliestDeliveryDate;
+	/**最晚发货日期(latest delivery date)*/
+	@Excel(name = "最晚发货日期(latest delivery date)", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "最晚发货日期(latest delivery date)")
+    private Date latestDeliveryDate;
+	/**产品id*/
+	@Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+	/**产品中文名(chinese name)*/
+	@Excel(name = "产品中文名(chinese name)", width = 15)
+    @ApiModelProperty(value = "产品中文名(chinese name)")
+    private String chineseName;
+	/**产品英文名*/
+	@Excel(name = "产品英文名", width = 15)
+    @ApiModelProperty(value = "产品英文名")
+    private String englishName;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private String specifications;
+	/**型号*/
+	@Excel(name = "型号", width = 15)
+    @ApiModelProperty(value = "型号")
+    private String model;
+	/**备件号*/
+	@Excel(name = "备件号", width = 15)
+    @ApiModelProperty(value = "备件号")
+    private String partno;
+	/**图号*/
+	@Excel(name = "图号", width = 15)
+    @ApiModelProperty(value = "图号")
+    private String drawingno;
+	/**订货号*/
+	@Excel(name = "订货号", width = 15)
+    @ApiModelProperty(value = "订货号")
+    private String orderno;
+	/**厂家*/
+	@Excel(name = "厂家", width = 15)
+    @ApiModelProperty(value = "厂家")
+    private String factory;
+	/**质量等级*/
+	@Excel(name = "质量等级", width = 15)
+    @ApiModelProperty(value = "质量等级")
+    private String qualityGrade;
+	/**需要船检证书(need ship inspection certificate)*/
+	@Excel(name = "需要船检证书(need ship inspection certificate)", width = 15)
+    @ApiModelProperty(value = "需要船检证书(need ship inspection certificate)")
+    private String needShipInspection;
+	/**船检证书(ship inspection certificate)*/
+	@Excel(name = "船检证书(ship inspection certificate)", width = 15)
+    @ApiModelProperty(value = "船检证书(ship inspection certificate)")
+    private String shipInspection;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Double quantity;
+	/**含税单价(tax price)*/
+	@Excel(name = "含税单价(tax price)", width = 15)
+    @ApiModelProperty(value = "含税单价(tax price)")
+    private java.math.BigDecimal taxPrice;
+	/**含税金额(tax amount)*/
+	@Excel(name = "含税金额(tax amount)", width = 15)
+    @ApiModelProperty(value = "含税金额(tax amount)")
+    private java.math.BigDecimal taxAmount;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**参照来源id*/
+	@Excel(name = "参照来源id", width = 15)
+    @ApiModelProperty(value = "参照来源id")
+    private String sourceId;
+	/**参照来源*/
+	@Excel(name = "参照来源", width = 15)
+    @ApiModelProperty(value = "参照来源")
+    private String sourceType;
+}

+ 87 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderShipB2b.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 采购订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="pur_order_ship_b2b对象", description="采购订单b2b子表 - 船明细")
+@Data
+@TableName("pur_order_ship_b2b")
+public class PurOrderShipB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@Excel(name = "状态(1-启用,0-停用)", width = 15)
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(采购订单)*/
+    @ApiModelProperty(value = "表头主键(采购订单)")
+    private String headId;
+	/**船id*/
+	@Excel(name = "船id", width = 15)
+    @ApiModelProperty(value = "船id")
+    private String shipId;
+	/**船名*/
+	@Excel(name = "船名", width = 15)
+    @ApiModelProperty(value = "船名")
+    private String shipName;
+	/**主机号*/
+	@Excel(name = "主机号", width = 15)
+    @ApiModelProperty(value = "主机号")
+    private String hostNumber;
+	/**工程编号*/
+	@Excel(name = "工程编号", width = 15)
+    @ApiModelProperty(value = "工程编号")
+    private String projectNo;
+	/**船厂*/
+	@Excel(name = "船厂", width = 15)
+    @ApiModelProperty(value = "船厂")
+    private String shipFactory;
+	/**船东*/
+	@Excel(name = "船东", width = 15)
+    @ApiModelProperty(value = "船东")
+    private String shipowner;
+}

+ 217 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderB2b.java

@@ -0,0 +1,217 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="sale_order_b2b对象", description="销售订单b2b")
+@Data
+@TableName("sale_order_b2b")
+public class SaleOrderB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**客户确认(1-已确认,0-未确认)*/
+	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+    @ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15)
+    @ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**关闭(close)1是0否*/
+	@Excel(name = "关闭(close)1是0否", width = 15)
+    @ApiModelProperty(value = "关闭(close)1是0否")
+    private String close;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+    @ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+    @ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户(customer)*/
+	@Excel(name = "客户(customer)", width = 15)
+    @ApiModelProperty(value = "客户(customer)")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**业务类型(busyness type)*/
+	@Excel(name = "业务类型(busyness type)", width = 15)
+    @ApiModelProperty(value = "业务类型(busyness type)")
+    private String busynessType;
+	/**中间人(intermediator)*/
+	@Excel(name = "中间人(intermediator)", width = 15)
+    @ApiModelProperty(value = "中间人(intermediator)")
+    private String intermediator;
+	/**中间人名称*/
+	@Excel(name = "中间人名称", width = 15)
+    @ApiModelProperty(value = "中间人名称")
+    private String intermediatorName;
+	/**优先级(priority)*/
+	@Excel(name = "优先级(priority)", width = 15)
+    @ApiModelProperty(value = "优先级(priority)")
+    private String priority;
+	/**产品分类(production class)*/
+	@Excel(name = "产品分类(production class)", width = 15)
+    @ApiModelProperty(value = "产品分类(production class)")
+    private String productionClass;
+	/**机型(model)*/
+	@Excel(name = "机型(model)", width = 15)
+    @ApiModelProperty(value = "机型(model)")
+    private String model;
+	/**厂家(maker)*/
+	@Excel(name = "厂家(maker)", width = 15)
+    @ApiModelProperty(value = "厂家(maker)")
+    private String maker;
+	/**币种(currency)*/
+	@Excel(name = "币种(currency)", width = 15)
+    @ApiModelProperty(value = "币种(currency)")
+    private String currency;
+	/**汇率(exchange rate)*/
+	@Excel(name = "汇率(exchange rate)", width = 15)
+    @ApiModelProperty(value = "汇率(exchange rate)")
+    private java.math.BigDecimal exchangeRate;
+	/**交货条款(delivery terms)*/
+	@Excel(name = "交货条款(delivery terms)", width = 15)
+    @ApiModelProperty(value = "交货条款(delivery terms)")
+    private String deliveryTerms;
+	/**付款条件(payment terms)*/
+	@Excel(name = "付款条件(payment terms)", width = 15)
+    @ApiModelProperty(value = "付款条件(payment terms)")
+    private String paymentTerms;
+	/**交期(delivery time)*/
+	@Excel(name = "交期(delivery time)", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "交期(delivery time)")
+    private Date deliveryTime;
+	/**发货方式(delivery)*/
+	@Excel(name = "发货方式(delivery)", width = 15)
+    @ApiModelProperty(value = "发货方式(delivery)")
+    private String delivery;
+	/**交货地点(delivery address)*/
+	@Excel(name = "交货地点(delivery address)", width = 15)
+    @ApiModelProperty(value = "交货地点(delivery address)")
+    private String deliveryAddress;
+	/**开票抬头(Invoice header)*/
+	@Excel(name = "开票抬头(Invoice header)", width = 15)
+    @ApiModelProperty(value = "开票抬头(Invoice header)")
+    private String invoiceHeader;
+	/**质保期(warranty period)*/
+	@Excel(name = "质保期(warranty period)", width = 15)
+    @ApiModelProperty(value = "质保期(warranty period)")
+    private String warrantyPeriod;
+	/**是否出口(export) 1是0否*/
+	@Excel(name = "是否出口(export) 1是0否", width = 15)
+    @ApiModelProperty(value = "是否出口(export) 1是0否")
+    private String isExport;
+	/**包装要求(packageb requirement)*/
+	@Excel(name = "包装要求(packageb requirement)", width = 15)
+    @ApiModelProperty(value = "包装要求(packageb requirement)")
+    private String packagebRequirement;
+	/**销售部门(sale department)*/
+	@Excel(name = "销售部门(sale department)", width = 15)
+    @ApiModelProperty(value = "销售部门(sale department)")
+    private String saleDepartment;
+	/**业务员(salesman)*/
+	@Excel(name = "业务员(salesman)", width = 15)
+    @ApiModelProperty(value = "业务员(salesman)")
+    private String salesman;
+	/**销售部门(sale department)名称*/
+	@Excel(name = "销售部门(sale department)名称", width = 15)
+    @ApiModelProperty(value = "销售部门(sale department)名称")
+    private String saleDepartmentName;
+	/**业务员(salesman)名称*/
+	@Excel(name = "业务员(salesman)名称", width = 15)
+    @ApiModelProperty(value = "业务员(salesman)名称")
+    private String salesmanName;
+	/**附件(attachs)*/
+	@Excel(name = "附件(attachs)", width = 15)
+    @ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**客户订单号(customer order number)*/
+	@Excel(name = "客户订单号(customer order number)", width = 15)
+    @ApiModelProperty(value = "客户订单号(customer order number)")
+    private String customerOrder;
+	/**折上折(double discount)*/
+	@Excel(name = "折上折(double discount)", width = 15)
+    @ApiModelProperty(value = "折上折(double discount)")
+    private java.math.BigDecimal doubleDiscount;
+	/**折后金额(converted amount)*/
+	@Excel(name = "折后金额(converted amount)", width = 15)
+    @ApiModelProperty(value = "折后金额(converted amount)")
+    private String convertedAmount;
+	/**质保条款(warranty terms)*/
+	@Excel(name = "质保条款(warranty terms)", width = 15)
+    @ApiModelProperty(value = "质保条款(warranty terms)")
+    private String warrantyTerms;
+	/**预付比例(advance ratio)*/
+	@Excel(name = "预付比例(advance ratio)", width = 15)
+    @ApiModelProperty(value = "预付比例(advance ratio)")
+    private String advanceRatio;
+	/**版本号*/
+	@Excel(name = "版本号", width = 15)
+    @ApiModelProperty(value = "版本号")
+    private String version;
+}

+ 153 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderProductB2b.java

@@ -0,0 +1,153 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 销售订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="sale_order_product_b2b对象", description="销售订单b2b子表 - 产品明细")
+@Data
+@TableName("sale_order_product_b2b")
+public class SaleOrderProductB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@Excel(name = "状态(1-启用,0-停用)", width = 15)
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(销售订单)*/
+    @ApiModelProperty(value = "表头主键(销售订单)")
+    private String headId;
+	/**交期*/
+	@Excel(name = "交期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "交期")
+    private Date deliveryTime;
+	/**产品id*/
+	@Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+	/**产品分类*/
+	@Excel(name = "产品分类", width = 15)
+    @ApiModelProperty(value = "产品分类")
+    private String productClass;
+	/**产品编码*/
+	@Excel(name = "产品编码", width = 15)
+    @ApiModelProperty(value = "产品编码")
+    private String productCode;
+	/**产品中文名*/
+	@Excel(name = "产品中文名", width = 15)
+    @ApiModelProperty(value = "产品中文名")
+    private String chineseName;
+	/**产品英文名*/
+	@Excel(name = "产品英文名", width = 15)
+    @ApiModelProperty(value = "产品英文名")
+    private String englishName;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private String specifications;
+	/**型号*/
+	@Excel(name = "型号", width = 15)
+    @ApiModelProperty(value = "型号")
+    private String model;
+	/**备件号*/
+	@Excel(name = "备件号", width = 15)
+    @ApiModelProperty(value = "备件号")
+    private String partno;
+	/**图号*/
+	@Excel(name = "图号", width = 15)
+    @ApiModelProperty(value = "图号")
+    private String drawingno;
+	/**订货号*/
+	@Excel(name = "订货号", width = 15)
+    @ApiModelProperty(value = "订货号")
+    private String orderno;
+	/**厂家*/
+	@Excel(name = "厂家", width = 15)
+    @ApiModelProperty(value = "厂家")
+    private String factory;
+	/**质量等级*/
+	@Excel(name = "质量等级", width = 15)
+    @ApiModelProperty(value = "质量等级")
+    private String qualityGrade;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Double quantity;
+	/**税率(tax rate)*/
+	@Excel(name = "税率(tax rate)", width = 15)
+    @ApiModelProperty(value = "税率(tax rate)")
+    private java.math.BigDecimal taxRate;
+	/**折扣(discount)*/
+	@Excel(name = "折扣(discount)", width = 15)
+    @ApiModelProperty(value = "折扣(discount)")
+    private java.math.BigDecimal discount;
+	/**含税单价(tax price)*/
+	@Excel(name = "含税单价(tax price)", width = 15)
+    @ApiModelProperty(value = "含税单价(tax price)")
+    private java.math.BigDecimal taxPrice;
+	/**含税金额(tax amount)*/
+	@Excel(name = "含税金额(tax amount)", width = 15)
+    @ApiModelProperty(value = "含税金额(tax amount)")
+    private java.math.BigDecimal taxAmount;
+	/**折后单价(discounted unit price)*/
+	@Excel(name = "折后单价(discounted unit price)", width = 15)
+    @ApiModelProperty(value = "折后单价(discounted unit price)")
+    private java.math.BigDecimal discountedPrice;
+	/**折后金额(converted amount)*/
+	@Excel(name = "折后金额(converted amount)", width = 15)
+    @ApiModelProperty(value = "折后金额(converted amount)")
+    private java.math.BigDecimal discountedAmount;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**参照来源*/
+	@Excel(name = "参照来源", width = 15)
+    @ApiModelProperty(value = "参照来源")
+    private String sourceId;
+}

+ 87 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderShipB2b.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.b2bCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 销售订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@ApiModel(value="sale_order_ship_b2b对象", description="销售订单b2b子表 - 船明细")
+@Data
+@TableName("sale_order_ship_b2b")
+public class SaleOrderShipB2b implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@Excel(name = "状态(1-启用,0-停用)", width = 15)
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(销售订单)*/
+    @ApiModelProperty(value = "表头主键(销售订单)")
+    private String headId;
+	/**船id*/
+	@Excel(name = "船id", width = 15)
+    @ApiModelProperty(value = "船id")
+    private String shipId;
+	/**船名*/
+	@Excel(name = "船名", width = 15)
+    @ApiModelProperty(value = "船名")
+    private String shipName;
+	/**主机号*/
+	@Excel(name = "主机号", width = 15)
+    @ApiModelProperty(value = "主机号")
+    private String hostNumber;
+	/**工程编号*/
+	@Excel(name = "工程编号", width = 15)
+    @ApiModelProperty(value = "工程编号")
+    private String projectNo;
+	/**船厂*/
+	@Excel(name = "船厂", width = 15)
+    @ApiModelProperty(value = "船厂")
+    private String shipFactory;
+	/**船东*/
+	@Excel(name = "船东", width = 15)
+    @ApiModelProperty(value = "船东")
+    private String shipowner;
+}

+ 17 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderB2bMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.b2bCode.entity.PurOrderB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface PurOrderB2bMapper extends BaseMapper<PurOrderB2b> {
+
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderProductB2bMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 采购订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface PurOrderProductB2bMapper extends BaseMapper<PurOrderProductB2b> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<PurOrderProductB2b>
+   */
+	public List<PurOrderProductB2b> selectByMainId(@Param("mainId") String mainId);
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/PurOrderShipB2bMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 采购订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface PurOrderShipB2bMapper extends BaseMapper<PurOrderShipB2b> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<PurOrderShipB2b>
+   */
+	public List<PurOrderShipB2b> selectByMainId(@Param("mainId") String mainId);
+}

+ 17 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderB2bMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.b2bCode.entity.SaleOrderB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface SaleOrderB2bMapper extends BaseMapper<SaleOrderB2b> {
+
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderProductB2bMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 销售订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface SaleOrderProductB2bMapper extends BaseMapper<SaleOrderProductB2b> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<SaleOrderProductB2b>
+   */
+	public List<SaleOrderProductB2b> selectByMainId(@Param("mainId") String mainId);
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/SaleOrderShipB2bMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.b2bCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 销售订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface SaleOrderShipB2bMapper extends BaseMapper<SaleOrderShipB2b> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<SaleOrderShipB2b>
+   */
+	public List<SaleOrderShipB2b> selectByMainId(@Param("mainId") String mainId);
+}

+ 5 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderB2bMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.b2bCode.mapper.PurOrderB2bMapper">
+
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderProductB2bMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.b2bCode.mapper.PurOrderProductB2bMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  pur_order_product_b2b 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.b2bCode.entity.PurOrderProductB2b">
+		SELECT * 
+		FROM  pur_order_product_b2b
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/PurOrderShipB2bMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.b2bCode.mapper.PurOrderShipB2bMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  pur_order_ship_b2b 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.b2bCode.entity.PurOrderShipB2b">
+		SELECT * 
+		FROM  pur_order_ship_b2b
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderB2bMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.b2bCode.mapper.SaleOrderB2bMapper">
+
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderProductB2bMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.b2bCode.mapper.SaleOrderProductB2bMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sale_order_product_b2b 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b">
+		SELECT * 
+		FROM  sale_order_product_b2b
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/mapper/xml/SaleOrderShipB2bMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.b2bCode.mapper.SaleOrderShipB2bMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sale_order_ship_b2b 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b">
+		SELECT * 
+		FROM  sale_order_ship_b2b
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 51 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderB2bService.java

@@ -0,0 +1,51 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface IPurOrderB2bService extends IService<PurOrderB2b> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param purOrderB2b
+	 * @param purOrderShipB2bList
+	 * @param purOrderProductB2bList
+	 */
+	public void saveMain(PurOrderB2b purOrderB2b,List<PurOrderShipB2b> purOrderShipB2bList,List<PurOrderProductB2b> purOrderProductB2bList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+   * @param purOrderB2b
+   * @param purOrderShipB2bList
+   * @param purOrderProductB2bList
+	 */
+	public void updateMain(PurOrderB2b purOrderB2b,List<PurOrderShipB2b> purOrderShipB2bList,List<PurOrderProductB2b> purOrderProductB2bList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderProductB2bService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 采购订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface IPurOrderProductB2bService extends IService<PurOrderProductB2b> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<PurOrderProductB2b>
+	 */
+	public List<PurOrderProductB2b> selectByMainId(String mainId);
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/IPurOrderShipB2bService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 采购订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface IPurOrderShipB2bService extends IService<PurOrderShipB2b> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<PurOrderShipB2b>
+	 */
+	public List<PurOrderShipB2b> selectByMainId(String mainId);
+}

+ 51 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderB2bService.java

@@ -0,0 +1,51 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface ISaleOrderB2bService extends IService<SaleOrderB2b> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param saleOrderB2b
+	 * @param saleOrderShipB2bList
+	 * @param saleOrderProductB2bList
+	 */
+	public void saveMain(SaleOrderB2b saleOrderB2b,List<SaleOrderShipB2b> saleOrderShipB2bList,List<SaleOrderProductB2b> saleOrderProductB2bList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+   * @param saleOrderB2b
+   * @param saleOrderShipB2bList
+   * @param saleOrderProductB2bList
+	 */
+	public void updateMain(SaleOrderB2b saleOrderB2b,List<SaleOrderShipB2b> saleOrderShipB2bList,List<SaleOrderProductB2b> saleOrderProductB2bList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderProductB2bService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 销售订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface ISaleOrderProductB2bService extends IService<SaleOrderProductB2b> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<SaleOrderProductB2b>
+	 */
+	public List<SaleOrderProductB2b> selectByMainId(String mainId);
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/ISaleOrderShipB2bService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.b2bCode.service;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 销售订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+public interface ISaleOrderShipB2bService extends IService<SaleOrderShipB2b> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<SaleOrderShipB2b>
+	 */
+	public List<SaleOrderShipB2b> selectByMainId(String mainId);
+}

+ 98 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderB2bServiceImpl.java

@@ -0,0 +1,98 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import org.jeecg.modules.b2bCode.mapper.PurOrderShipB2bMapper;
+import org.jeecg.modules.b2bCode.mapper.PurOrderProductB2bMapper;
+import org.jeecg.modules.b2bCode.mapper.PurOrderB2bMapper;
+import org.jeecg.modules.b2bCode.service.IPurOrderB2bService;
+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.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class PurOrderB2bServiceImpl extends ServiceImpl<PurOrderB2bMapper, PurOrderB2b> implements IPurOrderB2bService {
+
+	@Autowired
+	private PurOrderB2bMapper purOrderB2bMapper;
+	@Autowired
+	private PurOrderShipB2bMapper purOrderShipB2bMapper;
+	@Autowired
+	private PurOrderProductB2bMapper purOrderProductB2bMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(PurOrderB2b purOrderB2b, List<PurOrderShipB2b> purOrderShipB2bList,List<PurOrderProductB2b> purOrderProductB2bList) {
+		purOrderB2bMapper.insert(purOrderB2b);
+		if(purOrderShipB2bList!=null && purOrderShipB2bList.size()>0) {
+			for(PurOrderShipB2b entity:purOrderShipB2bList) {
+				//外键设置
+				entity.setHeadId(purOrderB2b.getId());
+				purOrderShipB2bMapper.insert(entity);
+			}
+		}
+		if(purOrderProductB2bList!=null && purOrderProductB2bList.size()>0) {
+			for(PurOrderProductB2b entity:purOrderProductB2bList) {
+				//外键设置
+				entity.setHeadId(purOrderB2b.getId());
+				purOrderProductB2bMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(PurOrderB2b purOrderB2b,List<PurOrderShipB2b> purOrderShipB2bList,List<PurOrderProductB2b> purOrderProductB2bList) {
+		purOrderB2bMapper.updateById(purOrderB2b);
+		
+		//1.先删除子表数据
+		purOrderShipB2bMapper.deleteByMainId(purOrderB2b.getId());
+		purOrderProductB2bMapper.deleteByMainId(purOrderB2b.getId());
+		
+		//2.子表数据重新插入
+		if(purOrderShipB2bList!=null && purOrderShipB2bList.size()>0) {
+			for(PurOrderShipB2b entity:purOrderShipB2bList) {
+				//外键设置
+				entity.setHeadId(purOrderB2b.getId());
+				purOrderShipB2bMapper.insert(entity);
+			}
+		}
+		if(purOrderProductB2bList!=null && purOrderProductB2bList.size()>0) {
+			for(PurOrderProductB2b entity:purOrderProductB2bList) {
+				//外键设置
+				entity.setHeadId(purOrderB2b.getId());
+				purOrderProductB2bMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		purOrderShipB2bMapper.deleteByMainId(id);
+		purOrderProductB2bMapper.deleteByMainId(id);
+		purOrderB2bMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			purOrderShipB2bMapper.deleteByMainId(id.toString());
+			purOrderProductB2bMapper.deleteByMainId(id.toString());
+			purOrderB2bMapper.deleteById(id);
+		}
+	}
+	
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderProductB2bServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import org.jeecg.modules.b2bCode.mapper.PurOrderProductB2bMapper;
+import org.jeecg.modules.b2bCode.service.IPurOrderProductB2bService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 采购订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class PurOrderProductB2bServiceImpl extends ServiceImpl<PurOrderProductB2bMapper, PurOrderProductB2b> implements IPurOrderProductB2bService {
+	
+	@Autowired
+	private PurOrderProductB2bMapper purOrderProductB2bMapper;
+	
+	@Override
+	public List<PurOrderProductB2b> selectByMainId(String mainId) {
+		return purOrderProductB2bMapper.selectByMainId(mainId);
+	}
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/PurOrderShipB2bServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import org.jeecg.modules.b2bCode.mapper.PurOrderShipB2bMapper;
+import org.jeecg.modules.b2bCode.service.IPurOrderShipB2bService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 采购订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class PurOrderShipB2bServiceImpl extends ServiceImpl<PurOrderShipB2bMapper, PurOrderShipB2b> implements IPurOrderShipB2bService {
+	
+	@Autowired
+	private PurOrderShipB2bMapper purOrderShipB2bMapper;
+	
+	@Override
+	public List<PurOrderShipB2b> selectByMainId(String mainId) {
+		return purOrderShipB2bMapper.selectByMainId(mainId);
+	}
+}

+ 98 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderB2bServiceImpl.java

@@ -0,0 +1,98 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import org.jeecg.modules.b2bCode.mapper.SaleOrderShipB2bMapper;
+import org.jeecg.modules.b2bCode.mapper.SaleOrderProductB2bMapper;
+import org.jeecg.modules.b2bCode.mapper.SaleOrderB2bMapper;
+import org.jeecg.modules.b2bCode.service.ISaleOrderB2bService;
+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.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class SaleOrderB2bServiceImpl extends ServiceImpl<SaleOrderB2bMapper, SaleOrderB2b> implements ISaleOrderB2bService {
+
+	@Autowired
+	private SaleOrderB2bMapper saleOrderB2bMapper;
+	@Autowired
+	private SaleOrderShipB2bMapper saleOrderShipB2bMapper;
+	@Autowired
+	private SaleOrderProductB2bMapper saleOrderProductB2bMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(SaleOrderB2b saleOrderB2b, List<SaleOrderShipB2b> saleOrderShipB2bList,List<SaleOrderProductB2b> saleOrderProductB2bList) {
+		saleOrderB2bMapper.insert(saleOrderB2b);
+		if(saleOrderShipB2bList!=null && saleOrderShipB2bList.size()>0) {
+			for(SaleOrderShipB2b entity:saleOrderShipB2bList) {
+				//外键设置
+				entity.setHeadId(saleOrderB2b.getId());
+				saleOrderShipB2bMapper.insert(entity);
+			}
+		}
+		if(saleOrderProductB2bList!=null && saleOrderProductB2bList.size()>0) {
+			for(SaleOrderProductB2b entity:saleOrderProductB2bList) {
+				//外键设置
+				entity.setHeadId(saleOrderB2b.getId());
+				saleOrderProductB2bMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(SaleOrderB2b saleOrderB2b,List<SaleOrderShipB2b> saleOrderShipB2bList,List<SaleOrderProductB2b> saleOrderProductB2bList) {
+		saleOrderB2bMapper.updateById(saleOrderB2b);
+		
+		//1.先删除子表数据
+		saleOrderShipB2bMapper.deleteByMainId(saleOrderB2b.getId());
+		saleOrderProductB2bMapper.deleteByMainId(saleOrderB2b.getId());
+		
+		//2.子表数据重新插入
+		if(saleOrderShipB2bList!=null && saleOrderShipB2bList.size()>0) {
+			for(SaleOrderShipB2b entity:saleOrderShipB2bList) {
+				//外键设置
+				entity.setHeadId(saleOrderB2b.getId());
+				saleOrderShipB2bMapper.insert(entity);
+			}
+		}
+		if(saleOrderProductB2bList!=null && saleOrderProductB2bList.size()>0) {
+			for(SaleOrderProductB2b entity:saleOrderProductB2bList) {
+				//外键设置
+				entity.setHeadId(saleOrderB2b.getId());
+				saleOrderProductB2bMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		saleOrderShipB2bMapper.deleteByMainId(id);
+		saleOrderProductB2bMapper.deleteByMainId(id);
+		saleOrderB2bMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			saleOrderShipB2bMapper.deleteByMainId(id.toString());
+			saleOrderProductB2bMapper.deleteByMainId(id.toString());
+			saleOrderB2bMapper.deleteById(id);
+		}
+	}
+	
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderProductB2bServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import org.jeecg.modules.b2bCode.mapper.SaleOrderProductB2bMapper;
+import org.jeecg.modules.b2bCode.service.ISaleOrderProductB2bService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 销售订单b2b子表 - 产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class SaleOrderProductB2bServiceImpl extends ServiceImpl<SaleOrderProductB2bMapper, SaleOrderProductB2b> implements ISaleOrderProductB2bService {
+	
+	@Autowired
+	private SaleOrderProductB2bMapper saleOrderProductB2bMapper;
+	
+	@Override
+	public List<SaleOrderProductB2b> selectByMainId(String mainId) {
+		return saleOrderProductB2bMapper.selectByMainId(mainId);
+	}
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/service/impl/SaleOrderShipB2bServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.b2bCode.service.impl;
+
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import org.jeecg.modules.b2bCode.mapper.SaleOrderShipB2bMapper;
+import org.jeecg.modules.b2bCode.service.ISaleOrderShipB2bService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 销售订单b2b子表 - 船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Service
+public class SaleOrderShipB2bServiceImpl extends ServiceImpl<SaleOrderShipB2bMapper, SaleOrderShipB2b> implements ISaleOrderShipB2bService {
+	
+	@Autowired
+	private SaleOrderShipB2bMapper saleOrderShipB2bMapper;
+	
+	@Override
+	public List<SaleOrderShipB2b> selectByMainId(String mainId) {
+		return saleOrderShipB2bMapper.selectByMainId(mainId);
+	}
+}

+ 195 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/PurOrderB2bPage.java

@@ -0,0 +1,195 @@
+package org.jeecg.modules.b2bCode.vo;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.PurOrderB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.PurOrderProductB2b;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 采购订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="pur_order_b2bPage对象", description="采购订单b2b")
+public class PurOrderB2bPage {
+
+	/**主键id*/
+	@ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**客户确认(1-已确认,0-未确认)*/
+	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+	@ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15)
+	@ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**关闭(close)1是0否*/
+	@Excel(name = "关闭(close)1是0否", width = 15)
+	@ApiModelProperty(value = "关闭(close)1是0否")
+    private String close;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    private Integer delFlag;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+	@ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+	@ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+	@ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**供应商(supplier)*/
+	@Excel(name = "供应商(supplier)", width = 15)
+	@ApiModelProperty(value = "供应商(supplier)")
+    private String supplier;
+	/**供应商名称*/
+	@Excel(name = "供应商名称", width = 15)
+	@ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+	/**业务类型(busyness type)*/
+	@Excel(name = "业务类型(busyness type)", width = 15)
+	@ApiModelProperty(value = "业务类型(busyness type)")
+    private String busynessType;
+	/**优先级(priority)*/
+	@Excel(name = "优先级(priority)", width = 15)
+	@ApiModelProperty(value = "优先级(priority)")
+    private String priority;
+	/**产品分类(production class)*/
+	@Excel(name = "产品分类(production class)", width = 15)
+	@ApiModelProperty(value = "产品分类(production class)")
+    private String productionClass;
+	/**机型(model)*/
+	@Excel(name = "机型(model)", width = 15)
+	@ApiModelProperty(value = "机型(model)")
+    private String model;
+	/**厂家(maker)*/
+	@Excel(name = "厂家(maker)", width = 15)
+	@ApiModelProperty(value = "厂家(maker)")
+    private String maker;
+	/**贸易条款(trade Terms)*/
+	@Excel(name = "贸易条款(trade Terms)", width = 15)
+	@ApiModelProperty(value = "贸易条款(trade Terms)")
+    private String tradeTerms;
+	/**是否出口(export)*/
+	@Excel(name = "是否出口(export)", width = 15)
+	@ApiModelProperty(value = "是否出口(export)")
+    private String isExport;
+	/**包装要求(packageb requirement)*/
+	@Excel(name = "包装要求(packageb requirement)", width = 15)
+	@ApiModelProperty(value = "包装要求(packageb requirement)")
+    private String packagebRequirement;
+	/**收件人(recipient)*/
+	@Excel(name = "收件人(recipient)", width = 15)
+	@ApiModelProperty(value = "收件人(recipient)")
+    private String recipient;
+	/**收件人电话(recipient tel)*/
+	@Excel(name = "收件人电话(recipient tel)", width = 15)
+	@ApiModelProperty(value = "收件人电话(recipient tel)")
+    private String recipientTel;
+	/**收件人地址(recipient address)*/
+	@Excel(name = "收件人地址(recipient address)", width = 15)
+	@ApiModelProperty(value = "收件人地址(recipient address)")
+    private String recipientAddress;
+	/**付款条件(payment terms)*/
+	@Excel(name = "付款条件(payment terms)", width = 15)
+	@ApiModelProperty(value = "付款条件(payment terms)")
+    private String paymentTerms;
+	/**发货方式(delivery)*/
+	@Excel(name = "发货方式(delivery)", width = 15)
+	@ApiModelProperty(value = "发货方式(delivery)")
+    private String delivery;
+	/**质保期(warranty period)/月*/
+	@Excel(name = "质保期(warranty period)/月", width = 15)
+	@ApiModelProperty(value = "质保期(warranty period)/月")
+    private String warrantyPeriod;
+	/**质保条款(warranty terms)*/
+	@Excel(name = "质保条款(warranty terms)", width = 15)
+	@ApiModelProperty(value = "质保条款(warranty terms)")
+    private String warrantyTerms;
+	/**汇率(exchange rate)*/
+	@Excel(name = "汇率(exchange rate)", width = 15)
+	@ApiModelProperty(value = "汇率(exchange rate)")
+    private java.math.BigDecimal exchangeRate;
+	/**采购员(purchaseman)*/
+	@Excel(name = "采购员(purchaseman)", width = 15)
+	@ApiModelProperty(value = "采购员(purchaseman)")
+    private String purchaseman;
+	/**采购部门(purchase department)*/
+	@Excel(name = "采购部门(purchase department)", width = 15)
+	@ApiModelProperty(value = "采购部门(purchase department)")
+    private String purchaseDepartment;
+	/**币种(currency)*/
+	@Excel(name = "币种(currency)", width = 15)
+	@ApiModelProperty(value = "币种(currency)")
+    private String currency;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+	@ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**附件(attachs)*/
+	@Excel(name = "附件(attachs)", width = 15)
+	@ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+	/**版本号*/
+	@Excel(name = "版本号", width = 15)
+	@ApiModelProperty(value = "版本号")
+    private String version;
+	/**来源*/
+	@Excel(name = "来源", width = 15)
+	@ApiModelProperty(value = "来源")
+    private String sourceCode;
+	/**来源2*/
+	@Excel(name = "来源2", width = 15)
+	@ApiModelProperty(value = "来源2")
+    private String sourceCode2;
+
+	@ExcelCollection(name="采购订单b2b子表 - 船明细")
+	@ApiModelProperty(value = "采购订单b2b子表 - 船明细")
+	private List<PurOrderShipB2b> purOrderShipB2bList;
+	@ExcelCollection(name="采购订单b2b子表 - 产品明细")
+	@ApiModelProperty(value = "采购订单b2b子表 - 产品明细")
+	private List<PurOrderProductB2b> purOrderProductB2bList;
+
+}

+ 221 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/SaleOrderB2bPage.java

@@ -0,0 +1,221 @@
+package org.jeecg.modules.b2bCode.vo;
+
+import java.util.List;
+import org.jeecg.modules.b2bCode.entity.SaleOrderB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderShipB2b;
+import org.jeecg.modules.b2bCode.entity.SaleOrderProductB2b;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 销售订单b2b
+ * @Author: jeecg-boot
+ * @Date:   2025-02-28
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="sale_order_b2bPage对象", description="销售订单b2b")
+public class SaleOrderB2bPage {
+
+	/**主键id*/
+	@ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**客户确认(1-已确认,0-未确认)*/
+	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+	@ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15)
+	@ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**关闭(close)1是0否*/
+	@Excel(name = "关闭(close)1是0否", width = 15)
+	@ApiModelProperty(value = "关闭(close)1是0否")
+    private String close;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    private Integer delFlag;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+	@ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+	@ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+	@ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户(customer)*/
+	@Excel(name = "客户(customer)", width = 15)
+	@ApiModelProperty(value = "客户(customer)")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+	@ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**业务类型(busyness type)*/
+	@Excel(name = "业务类型(busyness type)", width = 15)
+	@ApiModelProperty(value = "业务类型(busyness type)")
+    private String busynessType;
+	/**中间人(intermediator)*/
+	@Excel(name = "中间人(intermediator)", width = 15)
+	@ApiModelProperty(value = "中间人(intermediator)")
+    private String intermediator;
+	/**中间人名称*/
+	@Excel(name = "中间人名称", width = 15)
+	@ApiModelProperty(value = "中间人名称")
+    private String intermediatorName;
+	/**优先级(priority)*/
+	@Excel(name = "优先级(priority)", width = 15)
+	@ApiModelProperty(value = "优先级(priority)")
+    private String priority;
+	/**产品分类(production class)*/
+	@Excel(name = "产品分类(production class)", width = 15)
+	@ApiModelProperty(value = "产品分类(production class)")
+    private String productionClass;
+	/**机型(model)*/
+	@Excel(name = "机型(model)", width = 15)
+	@ApiModelProperty(value = "机型(model)")
+    private String model;
+	/**厂家(maker)*/
+	@Excel(name = "厂家(maker)", width = 15)
+	@ApiModelProperty(value = "厂家(maker)")
+    private String maker;
+	/**币种(currency)*/
+	@Excel(name = "币种(currency)", width = 15)
+	@ApiModelProperty(value = "币种(currency)")
+    private String currency;
+	/**汇率(exchange rate)*/
+	@Excel(name = "汇率(exchange rate)", width = 15)
+	@ApiModelProperty(value = "汇率(exchange rate)")
+    private java.math.BigDecimal exchangeRate;
+	/**交货条款(delivery terms)*/
+	@Excel(name = "交货条款(delivery terms)", width = 15)
+	@ApiModelProperty(value = "交货条款(delivery terms)")
+    private String deliveryTerms;
+	/**付款条件(payment terms)*/
+	@Excel(name = "付款条件(payment terms)", width = 15)
+	@ApiModelProperty(value = "付款条件(payment terms)")
+    private String paymentTerms;
+	/**交期(delivery time)*/
+	@Excel(name = "交期(delivery time)", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "交期(delivery time)")
+    private Date deliveryTime;
+	/**发货方式(delivery)*/
+	@Excel(name = "发货方式(delivery)", width = 15)
+	@ApiModelProperty(value = "发货方式(delivery)")
+    private String delivery;
+	/**交货地点(delivery address)*/
+	@Excel(name = "交货地点(delivery address)", width = 15)
+	@ApiModelProperty(value = "交货地点(delivery address)")
+    private String deliveryAddress;
+	/**开票抬头(Invoice header)*/
+	@Excel(name = "开票抬头(Invoice header)", width = 15)
+	@ApiModelProperty(value = "开票抬头(Invoice header)")
+    private String invoiceHeader;
+	/**质保期(warranty period)*/
+	@Excel(name = "质保期(warranty period)", width = 15)
+	@ApiModelProperty(value = "质保期(warranty period)")
+    private String warrantyPeriod;
+	/**是否出口(export) 1是0否*/
+	@Excel(name = "是否出口(export) 1是0否", width = 15)
+	@ApiModelProperty(value = "是否出口(export) 1是0否")
+    private String isExport;
+	/**包装要求(packageb requirement)*/
+	@Excel(name = "包装要求(packageb requirement)", width = 15)
+	@ApiModelProperty(value = "包装要求(packageb requirement)")
+    private String packagebRequirement;
+	/**销售部门(sale department)*/
+	@Excel(name = "销售部门(sale department)", width = 15)
+	@ApiModelProperty(value = "销售部门(sale department)")
+    private String saleDepartment;
+	/**业务员(salesman)*/
+	@Excel(name = "业务员(salesman)", width = 15)
+	@ApiModelProperty(value = "业务员(salesman)")
+    private String salesman;
+	/**销售部门(sale department)名称*/
+	@Excel(name = "销售部门(sale department)名称", width = 15)
+	@ApiModelProperty(value = "销售部门(sale department)名称")
+    private String saleDepartmentName;
+	/**业务员(salesman)名称*/
+	@Excel(name = "业务员(salesman)名称", width = 15)
+	@ApiModelProperty(value = "业务员(salesman)名称")
+    private String salesmanName;
+	/**附件(attachs)*/
+	@Excel(name = "附件(attachs)", width = 15)
+	@ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+	@ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**客户订单号(customer order number)*/
+	@Excel(name = "客户订单号(customer order number)", width = 15)
+	@ApiModelProperty(value = "客户订单号(customer order number)")
+    private String customerOrder;
+	/**折上折(double discount)*/
+	@Excel(name = "折上折(double discount)", width = 15)
+	@ApiModelProperty(value = "折上折(double discount)")
+    private java.math.BigDecimal doubleDiscount;
+	/**折后金额(converted amount)*/
+	@Excel(name = "折后金额(converted amount)", width = 15)
+	@ApiModelProperty(value = "折后金额(converted amount)")
+    private String convertedAmount;
+	/**质保条款(warranty terms)*/
+	@Excel(name = "质保条款(warranty terms)", width = 15)
+	@ApiModelProperty(value = "质保条款(warranty terms)")
+    private String warrantyTerms;
+	/**预付比例(advance ratio)*/
+	@Excel(name = "预付比例(advance ratio)", width = 15)
+	@ApiModelProperty(value = "预付比例(advance ratio)")
+    private String advanceRatio;
+	/**版本号*/
+	@Excel(name = "版本号", width = 15)
+	@ApiModelProperty(value = "版本号")
+    private String version;
+
+	@ExcelCollection(name="销售订单b2b子表 - 船明细")
+	@ApiModelProperty(value = "销售订单b2b子表 - 船明细")
+	private List<SaleOrderShipB2b> saleOrderShipB2bList;
+	@ExcelCollection(name="销售订单b2b子表 - 产品明细")
+	@ApiModelProperty(value = "销售订单b2b子表 - 产品明细")
+	private List<SaleOrderProductB2b> saleOrderProductB2bList;
+
+}

+ 56 - 7
srm-module-code/src/main/java/org/jeecg/modules/purCode/controller/PurOrderController.java

@@ -39,6 +39,8 @@ import org.jeecg.modules.purCode.entity.*;
 import org.jeecg.modules.purCode.service.*;
 import org.jeecg.modules.purCode.vo.PurOrderAlert;
 import org.jeecg.modules.saleCode.entity.*;
+import org.jeecg.modules.saleCode.service.ISaleOrderProductService;
+import org.jeecg.modules.saleCode.service.ISaleQuotationProductService;
 import org.jeecg.modules.system.entity.SysDictItem;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysDictService;
@@ -111,6 +113,12 @@ public class PurOrderController {
     private IBaseProductArchiveService baseProductArchiveService;
     @Autowired
     private ISysDictService sysDictService;
+    @Autowired
+    private ISaleQuotationProductService saleQuotationProductService;
+    @Autowired
+    private ISaleOrderProductService saleOrderProductService;
+    @Autowired
+    private IPurQuotationSelectionProductService purQuotationSelectionProductService;
 
     @Value(value = "${jeecg.path.upload}")
     private String uploadpath;
@@ -270,9 +278,10 @@ public class PurOrderController {
         String version = purOrderEntity.getVersion();
         int newV = Integer.valueOf(version) + 1;
 
+        List<PurOrderShip> purOrderShipListOld = purOrderShipService.selectByMainId(purOrder.getId());
         List<PurOrderShipHis> purOrderShipHisList = new ArrayList<>();
-        if (purOrderPage.getPurOrderShipList() !=null && purOrderPage.getPurOrderShipList().size() > 0) {
-            for (PurOrderShip o : purOrderPage.getPurOrderShipList()) {
+        if (purOrderShipListOld !=null && purOrderShipListOld.size() > 0) {
+            for (PurOrderShip o : purOrderShipListOld) {
                 PurOrderShipHis his = new PurOrderShipHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -282,10 +291,11 @@ public class PurOrderController {
 
         }
 
+        List<PurOrderProduct> purOrderProductListOld = purOrderProductService.selectByMainId(purOrder.getId());
         List<PurOrderProductHis> purOrderProductList = new ArrayList<>();
-        if (purOrderPage.getPurOrderProductList() !=null && purOrderPage.getPurOrderProductList().size() > 0) {
+        if (purOrderProductListOld !=null && purOrderProductListOld.size() > 0) {
 
-            for (PurOrderProduct o : purOrderPage.getPurOrderProductList()) {
+            for (PurOrderProduct o : purOrderProductListOld) {
                 PurOrderProductHis his = new PurOrderProductHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -296,10 +306,9 @@ public class PurOrderController {
         }
 
         PurOrderHis purOrderHis = new PurOrderHis();
-        BeanUtils.copyProperties(purOrderPage, purOrderHis);
+        BeanUtils.copyProperties(purOrderEntity, purOrderHis);
         purOrderHis.setId(null);
-        purOrderHis.setHisId(purOrderPage.getId());
-        purOrderHis.setVersion(version);
+        purOrderHis.setHisId(purOrderEntity.getId());
         purOrderHisService.saveMain(purOrderHis, purOrderShipHisList, purOrderProductList);
 
         purOrder.setVersion(String.valueOf(newV));
@@ -910,6 +919,29 @@ public class PurOrderController {
                     productWrapper.in(BaseProductArchive::getId, productList.stream().map(PurOrderProduct::getProductId).collect(Collectors.toList()));
                     productArchiveList = baseProductArchiveService.list(productWrapper);
                 }
+
+                // 获取销售订单行
+                List<SaleOrderProduct> saleOrderProductList = new ArrayList<>();
+                if (oConvertUtils.listIsNotEmpty(productList)){
+                    LambdaQueryWrapper<SaleOrderProduct> productWrapper = new LambdaQueryWrapper<>();
+                    productWrapper.in(SaleOrderProduct::getId, productList.stream().map(PurOrderProduct::getSourceId).collect(Collectors.toList()));
+                    saleOrderProductList = saleOrderProductService.list(productWrapper);
+                }
+                // 获取报价单行
+                List<SaleQuotationProduct> saleQuotationProductList = new ArrayList<>();
+                if (oConvertUtils.listIsNotEmpty(saleOrderProductList)){
+                    LambdaQueryWrapper<SaleQuotationProduct> productWrapper = new LambdaQueryWrapper<>();
+                    productWrapper.in(SaleQuotationProduct::getId, saleOrderProductList.stream().map(SaleOrderProduct::getSourceId).collect(Collectors.toList()));
+                    saleQuotationProductList = saleQuotationProductService.list(productWrapper);
+                }
+                // 获取报价单行
+                List<PurQuotationSelectionProduct> purQuotationSelectionProductList = new ArrayList<>();
+                if (oConvertUtils.listIsNotEmpty(saleQuotationProductList)){
+                    LambdaQueryWrapper<PurQuotationSelectionProduct> productWrapper = new LambdaQueryWrapper<>();
+                    productWrapper.in(PurQuotationSelectionProduct::getId, saleQuotationProductList.stream().map(SaleQuotationProduct::getSourceId).collect(Collectors.toList()));
+                    purQuotationSelectionProductList = purQuotationSelectionProductService.list(productWrapper);
+                }
+
                 // 查询数据字典
                 String paymentTermsText = sysDictService.queryDictTextByKey("supplier_payment_terms", purOrder.getPaymentTerms());
                 String currencyText = sysDictService.queryDictTextByKey("currency", purOrder.getCurrency());
@@ -936,6 +968,23 @@ public class PurOrderController {
                             }
                         }
                     }
+
+                    SaleOrderProduct saleOrderProduct = saleOrderProductList.stream().filter(e -> e.getId().equals(product.getSourceId())).findFirst().orElse(null);
+                    if (saleOrderProduct != null) {
+
+                        SaleQuotationProduct saleQuotationProduct = saleQuotationProductList.stream().filter(e -> e.getId().equals(saleOrderProduct.getSourceId())).findFirst().orElse(null);
+                        if (saleOrderProduct != null) {
+                            PurQuotationSelectionProduct quotationSelectionProduct = purQuotationSelectionProductList.stream().filter(e -> e.getId().equals(saleQuotationProduct.getSourceId())).findFirst().orElse(null);
+                            if (oConvertUtils.isNotEmpty(quotationSelectionProduct.getDiscount())) {
+                                product.setDiscountText(quotationSelectionProduct.getDiscount().intValue() + "%");
+                            }
+                            if (oConvertUtils.isNotEmpty(quotationSelectionProduct.getTaxPriceOriginal())) {
+                                product.setTaxPrice(quotationSelectionProduct.getTaxPriceOriginal());
+                            }
+                        }
+
+                    }
+
                 }
                 if(productList.size() > 0){
 

+ 8 - 7
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleContractController.java

@@ -213,9 +213,10 @@ public class SaleContractController {
         String version = saleContractEntity.getVersion();
         int newV = Integer.valueOf(version) + 1;
 
+        List<SaleContractShip> saleContractShipListOld = saleContractShipService.selectByMainId(saleContract.getId());
         List<SaleContractShipHis> saleContractShipList = new ArrayList<>();
-        if(saleContractPage.getSaleContractShipList() !=null && saleContractPage.getSaleContractShipList().size() > 0){
-            for (SaleContractShip o : saleContractPage.getSaleContractShipList()) {
+        if(saleContractShipListOld !=null && saleContractShipListOld.size() > 0){
+            for (SaleContractShip o : saleContractShipListOld) {
                 SaleContractShipHis his = new SaleContractShipHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -225,9 +226,10 @@ public class SaleContractController {
 
         }
 
+        List<SaleContractProduct> saleContractOld = saleContractProductService.selectByMainId(saleContract.getId());
         List<SaleContractProductHis> saleContractProductList = new ArrayList<>();
-        if(saleContractPage.getSaleContractProductList() !=null && saleContractPage.getSaleContractProductList().size() > 0){
-            for (SaleContractProduct o : saleContractPage.getSaleContractProductList()) {
+        if(saleContractOld !=null && saleContractOld.size() > 0){
+            for (SaleContractProduct o : saleContractOld) {
                 SaleContractProductHis his = new SaleContractProductHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -237,10 +239,9 @@ public class SaleContractController {
         }
 
         SaleContractHis saleContractHis = new SaleContractHis();
-        BeanUtils.copyProperties(saleContractPage, saleContractHis);
+        BeanUtils.copyProperties(saleContractEntity, saleContractHis);
         saleContractHis.setId(null);
-        saleContractHis.setHisId(saleContractPage.getId());
-        saleContractHis.setVersion(version);
+        saleContractHis.setHisId(saleContractEntity.getId());
         saleContractHisService.saveMain(saleContractHis, saleContractShipList, saleContractProductList);
 
         saleContract.setVersion(String.valueOf(newV));

+ 1 - 1
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleDeliveryController.java

@@ -238,7 +238,7 @@ public class SaleDeliveryController {
     }
 
     /**
-     * 不在使用
+     * 销售出库单 选择发货单主数据后,查询子数据时使用
      *
      * @param saleInquiryForm
      * @param pageNo

+ 23 - 5
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInvoiceController.java

@@ -134,6 +134,8 @@ public class SaleInvoiceController {
     private SaleDeliveryMapper saleDeliveryMapper;
     @Autowired
     private PlatCommissionOrderMapper platCommissionOrderMapper;
+    @Autowired
+    private ISaleQuotationProductService saleQuotationProductService;
 
     @Value(value = "${jeecg.path.upload}")
     private String uploadpath;
@@ -162,8 +164,8 @@ public class SaleInvoiceController {
         String dept = sysUser.getOrgCode();
         String userName =  sysUser.getUsername();
 
-        if(!userName.equals("admin") && !"A02A05".equals(dept)){
-            queryWrapper.likeLeft("sys_org_code_delivery",dept);
+        if(!userName.equals("admin") && !userName.equals("jack") && !userName.equals("max") && !"A02A05".equals(dept)){
+            queryWrapper.likeRight("sys_org_code_delivery",dept);
             IPage<SaleInvoice> pageList = saleInvoiceService.selectSaleInvoicePage(page, queryWrapper);
             return Result.OK(pageList);
         }
@@ -556,7 +558,7 @@ public class SaleInvoiceController {
             //销售订单单号
             String xsCode = list.get(0).getSourceCode();
             QueryWrapper<PurOrder> queryPurOrder = new QueryWrapper();
-            queryPurOrder.likeLeft("source_code2", xsCode);
+            queryPurOrder.likeRight("source_code2", xsCode);
             List<PurOrder> cgList = purOrderService.list(queryPurOrder);
             if (cgList.size() > 0) {
                 return Result.OK(cgList.get(0));
@@ -850,6 +852,13 @@ public class SaleInvoiceController {
                     productWrapper.in(SaleOrderProduct::getId, saleDeliveryDetailsList.stream().map(SaleDeliveryDetails::getSourceId).collect(Collectors.toList()));
                     saleOrderProductList = saleOrderProductService.list(productWrapper);
                 }
+                // 获取报价单行
+                List<SaleQuotationProduct> saleQuotationProductList = new ArrayList<>();
+                if (oConvertUtils.listIsNotEmpty(saleOrderProductList)){
+                    LambdaQueryWrapper<SaleQuotationProduct> productWrapper = new LambdaQueryWrapper<>();
+                    productWrapper.in(SaleQuotationProduct::getId, saleOrderProductList.stream().map(SaleOrderProduct::getSourceId).collect(Collectors.toList()));
+                    saleQuotationProductList = saleQuotationProductService.list(productWrapper);
+                }
                 // 获取销售订单
                 saleInvoice.setPaymentTerms(saleOrder.getPaymentTerms());
                 // 客户订单号
@@ -884,9 +893,18 @@ public class SaleInvoiceController {
                     if (saleDeliveryDetails != null) {
                         SaleOrderProduct saleOrderProduct = saleOrderProductList.stream().filter(e -> e.getId().equals(saleDeliveryDetails.getSourceId())).findFirst().orElse(null);
                         if (saleOrderProduct != null) {
-                            if (oConvertUtils.isNotEmpty(saleOrderProduct.getDiscount()) && saleOrderProduct.getDiscount().intValue() != 0) {
-                                o.setDiscountText(saleOrderProduct.getDiscount().intValue() + "%");
+
+                            SaleQuotationProduct saleQuotationProduct = saleQuotationProductList.stream().filter(e -> e.getId().equals(saleOrderProduct.getSourceId())).findFirst().orElse(null);
+
+                            if (oConvertUtils.isNotEmpty(saleQuotationProduct.getDiscount())) {
+                                o.setDiscountText(saleQuotationProduct.getDiscount().intValue() + "%");
+                            }
+                            if (oConvertUtils.isNotEmpty(saleQuotationProduct.getPurchasePrice())) {
+                                o.setTaxPrice(saleQuotationProduct.getPurchasePrice());
                             }
+//                            if (oConvertUtils.isNotEmpty(saleOrderProduct.getDiscount()) && saleOrderProduct.getDiscount().intValue() != 0) {
+//                                o.setDiscountText(saleOrderProduct.getDiscount().intValue() + "%");
+//                            }
                         }
                     }
                 }

+ 32 - 7
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleOrderController.java

@@ -123,6 +123,10 @@ public class SaleOrderController {
     private IBaseProjectArchiveService baseProjectArchiveService;
     @Autowired
     private ISysDictService sysDictService;
+    @Autowired
+    private ISaleQuotationService saleQuotationService;
+    @Autowired
+    private ISaleQuotationProductService saleQuotationProductService;
 
     @Value(value = "${jeecg.path.upload}")
     private String uploadpath;
@@ -355,9 +359,10 @@ public class SaleOrderController {
         String version = saleOrderEntity.getVersion();
         int newV = Integer.valueOf(version) + 1;
 
+        List<SaleOrderShip> saleOrderShipListOld = saleOrderShipService.selectByMainId(saleOrder.getId());
         List<SaleOrderShipHis> saleOrderShipHisList = new ArrayList<>();
-        if (saleOrderPage.getSaleOrderShipList() !=null && saleOrderPage.getSaleOrderShipList().size() > 0) {
-            for (SaleOrderShip o : saleOrderPage.getSaleOrderShipList()) {
+        if (saleOrderShipListOld !=null && saleOrderShipListOld.size() > 0) {
+            for (SaleOrderShip o : saleOrderShipListOld) {
                 SaleOrderShipHis his = new SaleOrderShipHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -367,10 +372,11 @@ public class SaleOrderController {
 
         }
 
+        List<SaleOrderProduct> saleOrderProductListOld = saleOrderProductService.selectByMainId(saleOrder.getId());
         List<SaleOrderProductHis> saleOrderProductList = new ArrayList<>();
-        if (saleOrderPage.getSaleOrderProductList() !=null && saleOrderPage.getSaleOrderProductList().size() > 0) {
+        if (saleOrderProductListOld !=null && saleOrderProductListOld.size() > 0) {
 
-            for (SaleOrderProduct o : saleOrderPage.getSaleOrderProductList()) {
+            for (SaleOrderProduct o : saleOrderProductListOld) {
                 SaleOrderProductHis his = new SaleOrderProductHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -381,10 +387,9 @@ public class SaleOrderController {
         }
 
         SaleOrderHis saleOrderHis = new SaleOrderHis();
-        BeanUtils.copyProperties(saleOrderPage, saleOrderHis);
+        BeanUtils.copyProperties(saleOrderEntity, saleOrderHis);
         saleOrderHis.setId(null);
-        saleOrderHis.setHisId(saleOrderPage.getId());
-        saleOrderHis.setVersion(version);
+        saleOrderHis.setHisId(saleOrderEntity.getId());
         saleOrderHisService.saveMain(saleOrderHis, saleOrderShipHisList, saleOrderProductList);
 
         saleOrder.setVersion(String.valueOf(newV));
@@ -973,8 +978,17 @@ public class SaleOrderController {
         BaseTemplates templatesN = baseTemplatesService.getByTemplateType("订单确认无折上折");
         BaseTemplates templatesZ = baseTemplatesService.getByTemplateType("订单确认有折上折");
         SaleOrder saleOrder = saleOrderService.getById(saleOrder1.getId());
+        String sourceCode = saleOrder.getSourceCode();//销售报价单
+
         List<SaleOrderProduct> productList = saleOrderProductService.selectByMainId(saleOrder.getId());
         List<SaleOrderShip> saleOrderShipList = saleOrderShipService.selectByMainId(saleOrder.getId());
+        QueryWrapper<SaleQuotation> saleQuotationWrapper = new QueryWrapper<>();
+        saleQuotationWrapper.eq("bill_code",sourceCode);
+        List<SaleQuotation> listSaleQuotation = saleQuotationService.list(saleQuotationWrapper);
+        List<SaleQuotationProduct> saleQuotationProduct = new ArrayList<>();
+        if(listSaleQuotation.size() > 0){
+            saleQuotationProduct = saleQuotationProductService.selectByMainId(listSaleQuotation.get(0).getId());
+        }
         BaseTemplates templates = null;
         if (saleOrder.getDoubleDiscount() == null) {
             templates = templatesN;
@@ -1059,6 +1073,17 @@ public class SaleOrderController {
                             }
                         }
                     }
+                    if(saleQuotationProduct.size() > 0){
+
+                        for(SaleQuotationProduct a:saleQuotationProduct){
+                            String saleId = a.getId();
+                            if(StringUtils.isNotBlank(o.getSourceId()) && o.getSourceId().equals(saleId)){
+                                o.setDiscountText(a.getDiscount().setScale(2).toString());
+                                o.setTaxPrice(a.getPurchasePrice().setScale(2));
+                            }
+                        }
+                    }
+
                 }
                 orderMoney = orderMoney.setScale(2);
                 saleOrder.setOrderMoney(orderMoney);

+ 8 - 7
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleQuotationController.java

@@ -278,9 +278,10 @@ public class SaleQuotationController {
         String version = saleQuotationEntity.getVersion();
         int newV = Integer.valueOf(version) + 1;
 
+        List<SaleQuotationShip> saleQuotationShipListOld = saleQuotationShipService.selectByMainId(saleQuotation.getId());
         List<SaleQuotationShipHis> saleQuotationShipHisList = new ArrayList<>();
-        if (saleQuotationPage.getSaleQuotationShipList() != null && saleQuotationPage.getSaleQuotationShipList().size() > 0) {
-            for (SaleQuotationShip o : saleQuotationPage.getSaleQuotationShipList()) {
+        if (saleQuotationShipListOld != null && saleQuotationShipListOld.size() > 0) {
+            for (SaleQuotationShip o : saleQuotationShipListOld) {
                 SaleQuotationShipHis his = new SaleQuotationShipHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -290,10 +291,11 @@ public class SaleQuotationController {
 
         }
 
+        List<SaleQuotationProduct> saleQuotationProductListOld = saleQuotationProductService.selectByMainId(saleQuotation.getId());
         List<SaleQuotationProductHis> saleQuotationProductList = new ArrayList<>();
-        if (saleQuotationPage.getSaleQuotationProductList() != null && saleQuotationPage.getSaleQuotationProductList().size() > 0) {
+        if (saleQuotationProductListOld != null && saleQuotationProductListOld.size() > 0) {
 
-            for (SaleQuotationProduct o : saleQuotationPage.getSaleQuotationProductList()) {
+            for (SaleQuotationProduct o : saleQuotationProductListOld) {
                 SaleQuotationProductHis his = new SaleQuotationProductHis();
                 BeanUtils.copyProperties(o, his);
                 his.setId(null);
@@ -304,10 +306,9 @@ public class SaleQuotationController {
         }
 
         SaleQuotationHis saleQuotationHis = new SaleQuotationHis();
-        BeanUtils.copyProperties(saleQuotationPage, saleQuotationHis);
+        BeanUtils.copyProperties(saleQuotationEntity, saleQuotationHis);
         saleQuotationHis.setId(null);
-        saleQuotationHis.setHisId(saleQuotationPage.getId());
-        saleQuotationHis.setVersion(version);
+        saleQuotationHis.setHisId(saleQuotationEntity.getId());
         saleQuotationHisService.saveMain(saleQuotationHis, saleQuotationShipHisList, saleQuotationProductList);
 
         saleQuotation.setVersion(String.valueOf(newV));