src/main/java/com/zy/asrs/controller/MatV2Controller.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/OrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OrderDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/OrderDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/order/order.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/order/order.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/MatV2Controller.java
@@ -151,8 +151,21 @@ @RequestMapping(value = "/matV2/auth") @ManagerAuth public R find(@RequestParam("matnr") String matnr,@RequestParam("type") Integer type) { MatV2 matV2 = matV2Service.selectOne(new EntityWrapper<MatV2>().eq("matnr", matnr)); return R.ok(); List<MatV2> matV2s = new ArrayList<>(); MatV2 matV2 = matV2Service.selectOne(new EntityWrapper<MatV2>().eq("matnr", matnr));; // type: 1:当前物料 2:当前节点所有物料 3:子节点所有物料 switch (type) { case 1: matV2s = matV2Service.selectList(new EntityWrapper<MatV2>().eq("matnr", matnr)); break; case 2: matV2s = matV2Service.selectList(new EntityWrapper<MatV2>().eq("uuid", matV2.getUuid())); break; case 3: matV2s = matV2Service.selectList(new EntityWrapper<MatV2>().eq("uuid", matV2.getTagId())); break; } return R.ok().add(matV2s); } } src/main/java/com/zy/asrs/controller/OrderController.java
@@ -12,12 +12,23 @@ import com.zy.asrs.service.*; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; @Slf4j @RestController public class OrderController extends BaseController { @@ -33,6 +44,8 @@ private WrkDetlService wrkDetlService; @Autowired private WaitPakinService waitPakinService; @Autowired private MatService matService; @RequestMapping(value = "/order/nav/list/auth") @ManagerAuth @@ -343,4 +356,138 @@ return R.ok(); } /** * excel导入 */ @PostMapping(value = "/order/excel/import/auth") @ManagerAuth(memo = "销售单Excel导入") @Transactional public R cstmrExcelImport(MultipartFile file) throws IOException { InputStream inStream = file.getInputStream(); String fileMime = file.getContentType(); int excelVersion = 2007; if ("application/vnd.ms-excel".equals(fileMime)) { excelVersion = 2003; } Workbook book = null; try { if (excelVersion == 2003) { book = new HSSFWorkbook(inStream); } else { // 当 excel 是 2007 时 book = new XSSFWorkbook(inStream); } } catch (Exception e) { log.error("fail", e); return R.error("导入文件格式错误,请使用xls后缀的文件!"); } Sheet sheet = book.getSheetAt(0); int totalRows = sheet.getLastRowNum() + 1; // 总 Long userId = getUserId(); Date now = new Date(); DataFormatter dataFormatter = new DataFormatter(); for (int i = 1; i < totalRows; i++) { Row row = sheet.getRow(i); // 订单编号 String uuid = dataFormatter.formatCellValue(row.getCell(0)); // 商品名称 String maktx = dataFormatter.formatCellValue(row.getCell(1)); // 商品编码 String matnr = dataFormatter.formatCellValue(row.getCell(2)); // 数量 Double anfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(3))); // 下单时间 String timeStr = dataFormatter.formatCellValue(row.getCell(4)); if (Cools.isEmpty(timeStr)) { timeStr = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(now); } // 单据类型 Long orderType = Long.parseLong(dataFormatter.formatCellValue(row.getCell(5))); Date time = null; try { time = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss_F); } catch (Exception e) { throw new CoolException("第" + i + "行下的那时间解析失败,请重新导入!"); } // 商品系列 String tagName = dataFormatter.formatCellValue(row.getCell(5)); // 规格 String specs = dataFormatter.formatCellValue(row.getCell(6)); Mat mat = matService.selectByMatnr(matnr); if (null == mat) { throw new CoolException(matnr + "商品编码的商品不存在,请重新导入!"); } Order order = orderService.selectByNo(uuid); if (null == order) { order = new Order( String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] uuid, // 订单编号 timeStr, // 单据日期 orderType, // 单据类型 null, // 项目编号 null, // null, // 调拨项目编号 null, // 初始票据号 null, // 票据号 null, // 客户编号 null, // 客户 null, // 联系方式 null, // 操作人员 null, // 合计金额 null, // 优惠率 null, // 优惠金额 null, // 销售或采购费用合计 null, // 实付金额 null, // 付款类型 null, // 业务员 null, // 结算天数 null, // 邮费支付类型 null, // 邮费 null, // 付款时间 null, // 发货时间 null, // 物流名称 null, // 物流单号 1L, // 订单状态 1, // 状态 userId, // 添加人员 now, // 添加时间 userId, // 修改人员 now, // 修改时间 null // 备注 ); if (!orderService.insert(order)) { throw new CoolException("生成单据主档失败,请重新导入!"); } } OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), matnr, null); if (orderDetl == null) { orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setBatch(null); orderDetl.setAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setCreateBy(userId); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(userId); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("生成单据明细失败,请重新导入!"); } } else { if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme)) { throw new CoolException("生成单据明细失败,请重新导入!"); } } } return R.ok("导入成功"); } } src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -38,4 +38,6 @@ Integer checkAllDetlFinish(@Param("orderNo") String orderNo); Integer sameOrderComb(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch); int increaseAnfme(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty); } src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -41,4 +41,6 @@ Boolean checkAllDetlFinish(String orderNo); Integer sameOrderComb(String orderNo, String matnr, String batch); boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -79,9 +79,10 @@ private ManLocDetlService manLocDetlService; @Autowired private ManLocDetlMapper manLocDetlMapper; @Autowired private DocTypeService docTypeService; @Autowired private MatV2Service matV2Service; @Override @Transactional public void comb(CombParam param, Long userId) { @@ -136,11 +137,16 @@ for (DetlDto detlDto : detlDtos) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); WaitPakin waitPakin = new WaitPakin(); if (Cools.isEmpty(mat)) { MatV2 matV2 = matV2Service.selectOne(new EntityWrapper<MatV2>().eq("matnr", detlDto.getMatnr())); if(Cools.isEmpty(matV2)){ throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(matV2); } else { waitPakin.sync(mat); } waitPakin.setBatch(detlDto.getBatch()); waitPakin.setZpallet(param.getBarcode()); // 托盘码 waitPakin.setIoStatus("N"); // 入出状态 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -60,6 +60,8 @@ private NodeService nodeService; @Autowired private ManLocDetlService manLocDetlService; @Autowired private MatV2Service matV2Service; @Override @Transactional @@ -125,11 +127,16 @@ } for (DetlDto detlDto : list) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); OrderDetl orderDetl = new OrderDetl(); if (Cools.isEmpty(mat)) { MatV2 matV2 = matV2Service.selectOne(new EntityWrapper<MatV2>().eq("matnr", detlDto.getMatnr())); if(Cools.isEmpty(matV2)){ throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品"); } OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(matV2); } else { orderDetl.sync(mat); } //批号为空会出现问题,设置一个默认值 if (detlDto.getBatch() == null) { src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -108,4 +108,9 @@ Integer sum = this.baseMapper.sameOrderComb(orderNo, matnr, batch); return sum != null ? sum : 0; } @Override public boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty) { return this.baseMapper.increaseAnfme(orderId, matnr, batch, qty) > 0; } } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -210,10 +210,6 @@ LocMast locMast = locMastService.selectById(dto.getLocNo()); Integer outSta = staNo.getDevNo(); //2号堆垛机全板出库站指定为204站,拣料站指定为202 if(locMast.getCrnNo()==2){ outSta = ioType == 101 ? 204 : 202; } // 获取路径 StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); src/main/resources/mapper/OrderDetlMapper.xml
@@ -218,4 +218,20 @@ </choose> </update> <update id="increaseAnfme"> update man_order_detl set anfme = anfme + #{qty} where 1=1 and order_id = #{orderId} and matnr = #{matnr} <choose> <when test="batch != null and batch != ''"> and batch = #{batch} </when> <otherwise> and (batch IS NULL OR batch = '') </otherwise> </choose> </update> </mapper> src/main/webapp/static/js/order/order.js
@@ -1,4 +1,6 @@ var insTbCount = 0; var admin; var insTb var printMatCodeNos = []; layui.config({ base: baseUrl + "/static/layui/lay/modules/" @@ -8,7 +10,7 @@ var form = layui.form; var table = layui.table; var util = layui.util; var admin = layui.admin; admin = layui.admin; var xmSelect = layui.xmSelect; var layDate = layui.laydate; @@ -83,6 +85,11 @@ // 添加 $("#orderAddBtn").click(function () { showEditModel(); }); // 导入销售单 $("#importOrder").click(function () { $("#importExcel").trigger("click"); }); // 工具条点击事件 @@ -556,3 +563,45 @@ }) } }); function upload(obj){ if(!obj.files) { return; } var file = obj.files[0]; admin.confirm('确认导入 [' + file.name +'] 文件吗?', function (index) { layer.load(1, {shade: [0.1,'#fff']}); var url = baseUrl + "/order/excel/import/auth"; var form = new FormData(); form.append("file", file); let xhr = new XMLHttpRequest(); xhr.open("post", url, true); xhr.setRequestHeader('token', localStorage.getItem('token')); xhr.onload = uploadComplete; xhr.onerror = uploadFailed; xhr.onloadend = function () { layer.closeAll('loading'); }; // xhr.upload.onprogress = progressFunction; xhr.upload.onloadstart = function(){ ot = new Date().getTime(); oloaded = 0; }; xhr.send(form); }, function(index){ }); } function uploadComplete(evt) { let res = JSON.parse(evt.target.responseText); if(res.code === 200) { layer.msg(res.msg, {icon: 1}); insTb.reload({page: {curr: 1}}); } else { alert(res.msg); // layer.msg(res.msg, {icon: 2}); } } function uploadFailed(evt) { let res = JSON.parse(evt.target.responseText); alert(res.msg); // layer.msg(res.msg, {icon: 2}); } src/main/webapp/views/order/order.html
@@ -83,6 +83,10 @@ </button> <button id="orderAddBtn" class="layui-btn icon-btn btn-add"><i class="layui-icon"></i>添加 </button> <button id="importOrder" class="layui-btn icon-btn btn-add"> <i class="layui-icon layui-icon-upload"></i> 导入销售单 </button> <input style="display:none" id="importExcel" type="file" onchange="upload(this)" > </div> </div> </div>