From 7d7bb8298935b1002ee2770fdf00fc382a53864c Mon Sep 17 00:00:00 2001 From: whycq <123456> Date: 星期三, 03 七月 2024 09:43:10 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/phpsasrs' into phpsasrs --- src/main/java/com/zy/asrs/entity/param/CombParam.java | 6 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 3 src/main/java/com/zy/asrs/service/BomMatService.java | 10 src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java | 2 src/main/java/com/zy/system/entity/license/CustomLicenseManager.java | 46 src/main/java/bomMat.sql | 18 src/main/resources/mapper/LocDetlMapper.xml | 98 +++ src/main/webapp/views/pakStore/locDetlQuery.html | 5 src/main/resources/mapper/BomMatMapper.xml | 37 + src/main/resources/mapper/WrkDetlMapper.xml | 8 src/main/java/com/zy/asrs/entity/param/CheckBom.java | 12 src/main/webapp/static/image/logo1.png | 0 src/main/webapp/static/js/order/out.js | 9 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 6 src/main/webapp/views/index.html | 2 src/main/java/com/zy/asrs/entity/WrkDetl.java | 4 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 177 ++++++ src/main/webapp/static/js/common.js | 1 src/main/java/com/zy/asrs/controller/OutController.java | 8 src/main/webapp/views/order/view.html | 20 src/main/java/com/zy/asrs/mapper/BomMatMapper.java | 16 src/main/java/com/zy/asrs/service/MobileService.java | 11 src/main/java/com/zy/asrs/service/WrkDetlService.java | 2 src/main/java/com/zy/asrs/entity/WrkDetlLog.java | 4 src/main/webapp/static/image/logo2.png | 0 src/main/java/com/zy/asrs/entity/OrderDetl.java | 7 src/main/java/com/zy/asrs/service/LocDetlService.java | 4 src/main/resources/mapper/WaitPakinMapper.xml | 1 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java | 5 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 10 src/main/java/com/zy/asrs/controller/MobileController.java | 42 + src/main/java/com/zy/asrs/entity/BomMat.java | 240 ++++++++ src/main/java/com/zy/common/CodeBuilder.java | 2 src/main/resources/mapper/OrderDetlMapper.xml | 1 src/main/webapp/static/js/bomMat/bomMat.js | 325 +++++++++++ src/main/webapp/static/js/locDetl/locDetl.js | 1 /dev/null | 0 src/main/java/com/zy/asrs/entity/WaitPakinLog.java | 4 src/main/java/com/zy/asrs/entity/WaitPakin.java | 4 src/main/java/com/zy/asrs/entity/LocDetl.java | 4 src/main/webapp/static/js/order/order.js | 18 src/main/java/com/zy/asrs/service/impl/BomMatServiceImpl.java | 19 src/main/java/com/zy/asrs/controller/BomMatController.java | 288 +++++++++ src/main/webapp/views/bomMat/bomMat.html | 202 ++++++ src/main/webapp/views/login.html | 6 45 files changed, 1,644 insertions(+), 44 deletions(-) diff --git a/src/main/java/bomMat.sql b/src/main/java/bomMat.sql new file mode 100644 index 0000000..a19d5c1 --- /dev/null +++ b/src/main/java/bomMat.sql @@ -0,0 +1,18 @@ +-- save bomMat record +-- mysql +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat/bomMat.html', 'bomMat绠$悊', null , '2', null , '1'); + +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat#view', '鏌ヨ', '', '3', '0', '1'); +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat#btn-add', '鏂板', '', '3', '1', '1'); +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat#btn-edit', '缂栬緫', '', '3', '2', '1'); +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat#btn-delete', '鍒犻櫎', '', '3', '3', '1'); +insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'bomMat#btn-export', '瀵煎嚭', '', '3', '4', '1'); + +-- sqlserver +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat/bomMat.html', N'bomMat绠$悊', null, '2', null, '1'); + +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat#view', N'鏌ヨ', '', '3', '0', '1'); +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat#btn-add', N'鏂板', '', '3', '1', '1'); +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat#btn-edit', N'缂栬緫', '', '3', '2', '1'); +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat#btn-delete', N'鍒犻櫎', '', '3', '3', '1'); +insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'bomMat#btn-export', N'瀵煎嚭', '', '3', '4', '1'); diff --git a/src/main/java/com/zy/asrs/controller/BomMatController.java b/src/main/java/com/zy/asrs/controller/BomMatController.java new file mode 100644 index 0000000..59de2ce --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/BomMatController.java @@ -0,0 +1,288 @@ +package com.zy.asrs.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.core.common.DateUtils; +import com.core.exception.CoolException; +import com.zy.asrs.entity.BomMat; +import com.zy.asrs.service.BomMatService; +import com.core.annotations.ManagerAuth; +import com.core.common.BaseRes; +import com.core.common.Cools; +import com.core.common.R; +import com.zy.common.entity.MatExcel; +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 javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.util.*; + +@Slf4j +@RestController +public class BomMatController extends BaseController { + + @Autowired + private BomMatService bomMatService; + + @RequestMapping(value = "/bomMat/{id}/auth") + @ManagerAuth + public R get(@PathVariable("id") String id) { + return R.ok(bomMatService.selectById(String.valueOf(id))); + } + + @RequestMapping(value = "/bomMat/list/auth") + @ManagerAuth + public R list(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false)String orderByField, + @RequestParam(required = false)String orderByType, + @RequestParam Map<String, Object> param){ + EntityWrapper<BomMat> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} + return R.ok(bomMatService.selectPage(new Page<>(curr, limit), wrapper)); + } + + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ + for (Map.Entry<String, Object> entry : map.entrySet()){ + String val = String.valueOf(entry.getValue()); + if (val.contains(RANGE_TIME_LINK)){ + String[] dates = val.split(RANGE_TIME_LINK); + wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); + wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else { + wrapper.like(entry.getKey(), val); + } + } + } + + @RequestMapping(value = "/bomMat/add/auth") + @ManagerAuth + public R add(BomMat bomMat) { + Date now = new Date(); + bomMat.setZpalletAnfme(bomMat.getBomAnfme() * bomMat.getBomCount()); + bomMat.setModiUser(getUserId()); + bomMat.setModiTime(now); + bomMat.setAppeUser(getUserId()); + bomMat.setAppeTime(now); + bomMatService.insert(bomMat); + return R.ok(); + } + + @RequestMapping(value = "/bomMat/update/auth") + @ManagerAuth + public R update(BomMat bomMat){ + if (Cools.isEmpty(bomMat) || null==bomMat.getId()){ + return R.error(); + } + bomMat.setZpalletAnfme(bomMat.getBomAnfme() * bomMat.getBomCount()); + bomMat.setModiUser(getUserId()); + bomMat.setModiTime(new Date()); + bomMatService.updateById(bomMat); + return R.ok(); + } + + @RequestMapping(value = "/bomMat/delete/auth") + @ManagerAuth + public R delete(@RequestParam(value="ids[]") Long[] ids){ + for (Long id : ids){ + bomMatService.deleteById(id); + } + return R.ok(); + } + + @RequestMapping(value = "/bomMat/export/auth") + @ManagerAuth + public R export(@RequestBody JSONObject param){ + EntityWrapper<BomMat> wrapper = new EntityWrapper<>(); + List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); + Map<String, Object> map = excludeTrash(param.getJSONObject("bomMat")); + convert(map, wrapper); + List<BomMat> list = bomMatService.selectList(wrapper); + return R.ok(exportSupport(list, fields)); + } + + @RequestMapping(value = "/bomMatQuery/auth") + @ManagerAuth + public R query(String condition) { + EntityWrapper<BomMat> wrapper = new EntityWrapper<>(); + wrapper.like("id", condition); + Page<BomMat> page = bomMatService.selectPage(new Page<>(0, 10), wrapper); + List<Map<String, Object>> result = new ArrayList<>(); + for (BomMat bomMat : page.getRecords()){ + Map<String, Object> map = new HashMap<>(); + map.put("id", bomMat.getId()); + map.put("value", bomMat.getId()); + result.add(map); + } + return R.ok(result); + } + + @RequestMapping(value = "/bomMat/check/column/auth") + @ManagerAuth + public R query(@RequestBody JSONObject param) { + Wrapper<BomMat> wrapper = new EntityWrapper<BomMat>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); + if (null != bomMatService.selectOne(wrapper)){ + return R.parse(BaseRes.REPEAT).add(getComment(BomMat.class, String.valueOf(param.get("key")))); + } + return R.ok(); + } + + /** + * excel瀵煎叆 + */ + @PostMapping(value = "/bomMat/excel/import/auth") + @ManagerAuth(memo = "缁勪欢妗fexcel瀵煎叆") + @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 unitNum = dataFormatter.formatCellValue(row.getCell(0)); + // 閮ㄤ欢鍝佸悕 + String unitName = dataFormatter.formatCellValue(row.getCell(1)); + // 閮ㄤ欢瑙勬牸 + String unitSpace = dataFormatter.formatCellValue(row.getCell(2)); + // 缁勪欢鍝佸彿 + String bomNum = dataFormatter.formatCellValue(row.getCell(3)); + // 缁勪欢鍝佸悕 + String bomName = dataFormatter.formatCellValue(row.getCell(4)); + // 缁勪欢瑙勬牸 + String bomSpace = dataFormatter.formatCellValue(row.getCell(5)); + // 鍏冧欢鍝佸彿 + String elementNum = dataFormatter.formatCellValue(row.getCell(6)); + // 鍏冧欢鍝佸悕 + String elementName = dataFormatter.formatCellValue(row.getCell(7)); + // 鍏冧欢瑙勬牸 + String elementSpace = dataFormatter.formatCellValue(row.getCell(8)); + // 澶囨敞 + String memo = dataFormatter.formatCellValue(row.getCell(9)); + // 濂楁暟 + Double bomCount = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(10))); + // 缁勬垚鐢ㄩ噺 + Double bomAnfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(11))); + BomMat bomMat = bomMatService.selectByThreeCode(unitNum, bomNum, elementNum); + // 娌℃湁灏辨柊寤猴紝鏈夊氨鏇存柊 + if (Cools.isEmpty(bomMat)) { + createBomMat(unitNum, unitName, unitSpace, bomNum, bomName, bomSpace, elementNum, elementName, elementSpace, memo, bomCount, bomAnfme,getUserId()); + } else { + updateBomMat(bomMat,unitName,unitSpace,bomName,bomSpace,elementName,elementSpace,memo,bomCount,bomAnfme,userId); + } + + } + return R.ok(); + } + + /** + * excel瀵煎叆妯℃澘涓嬭浇 + */ + @RequestMapping(value = "/bomMat/excel/import/mould") + public void matExcelImportMould(HttpServletResponse response) throws IOException { + List<BomMat> excels = new ArrayList<>(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("缁勪欢妗fExcel瀵煎叆妯℃澘", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), BomMat.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("sheet1") + .doWrite(excels); + } + + private void createBomMat(String unitNum,String unitName,String unitSpace, + String bomNum,String bomName,String bomSpace, + String elementNum, String elementName,String elementSpace, + String memo,Double bomCount,Double bomAnfme,Long userId) { + Date now = new Date(); + BomMat bomMat = new BomMat(); + bomMat.setUnitNum(unitNum); + bomMat.setUnitName(unitName); + bomMat.setUnitSpace(unitSpace); + + bomMat.setBomNum(bomNum); + bomMat.setBomName(bomName); + bomMat.setBomSpace(bomSpace); + + bomMat.setElementNum(elementNum); + bomMat.setElementName(elementName); + bomMat.setElementSpace(elementSpace); + + bomMat.setMemo(memo); + bomMat.setBomCount(bomCount); + bomMat.setBomAnfme(bomAnfme); + bomMat.setZpalletAnfme(bomAnfme * bomCount); + + bomMat.setModiUser(userId); + bomMat.setModiTime(now); + bomMat.setAppeUser(userId); + bomMat.setAppeTime(now); + + bomMat.setIsDeleted((short)0); + if (!bomMatService.insert(bomMat)) { + throw new CoolException("鏂板缓缁勪欢妗f澶辫触锛�"); + } + } + private void updateBomMat(BomMat bomMat,String unitName,String unitSpace,String bomName,String bomSpace,String elementName,String elementSpace,String memo,Double bomCount,Double bomAnfme,Long userId) { + Date now = new Date(); + bomMat.setUnitName(unitName); + bomMat.setUnitSpace(unitSpace); + bomMat.setBomName(bomName); + bomMat.setBomSpace(bomSpace); + bomMat.setElementName(elementName); + bomMat.setElementSpace(elementSpace); + bomMat.setMemo(memo); + bomMat.setBomCount(bomCount); + bomMat.setBomAnfme(bomAnfme); + bomMat.setZpalletAnfme(bomCount*bomAnfme); + bomMat.setModiUser(userId); + bomMat.setModiTime(now); + if (!bomMatService.update(bomMat,new EntityWrapper<BomMat>().eq("unit_num",bomMat.getUnitNum()).eq("bom_num",bomMat.getBomNum()).eq("element_num",bomMat.getElementNum()))) { + throw new CoolException("鏇存柊缁勪欢妗f澶辫触锛�"); + } + + } +} diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index 00dff10..630bdd7 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -59,6 +59,8 @@ private CommonService commonService; @Autowired private MatService matService; + @Autowired + private BomMatService bomMatService; // 鍟嗗搧涓婃灦 @RequestMapping("/mat/onSale/auth") @@ -111,6 +113,46 @@ return R.ok("缁勬墭鎴愬姛"); } + @RequestMapping("/comb/auth2") + @ManagerAuth(memo = "缁勬墭") + public R comb2(@RequestBody CombParam combParam){ + mobileService.comb2(combParam, getUserId()); + return R.ok("缁勬墭鎴愬姛"); + } + + @RequestMapping("/comb/checkBom") + @ManagerAuth(memo = "鏍¢獙Bom") + public R checkBom(@RequestBody CheckBom checkBom){ + BomMat bomMat = new BomMat(); + // 娌℃湁杈撳叆bom鍙锋甯哥粍鎵� + if (Cools.isEmpty(checkBom.getBomCode())) { + return R.ok(); + } + + if (Cools.isEmpty(checkBom.getMatnr())) { + return R.ok().add(bomMat); + } else { + // 妫�鏌ユ槸鍚﹀湪bom娓呭崟鍐� + bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", checkBom.getBomCode()).eq("element_num", checkBom.getMatnr())); + if (Cools.isEmpty(bomMat)) { + throw new CoolException("褰撳墠鐗╂枡" + checkBom.getMatnr() + "涓嶅湪Bom娓呭崟鍐�"); + } else { + // 妫�鏌ュ簱瀛樹腑鏄惁鏈夊綋鍓峛om鐨勭墿鏂� + Double bomQyt = locDetlService.getBomQyt(checkBom.getBomCode(), checkBom.getMatnr()); + if (!Cools.isEmpty(bomQyt)) { + bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt); + } + Double bomQty = wrkDetlService.getBomQty(checkBom.getBomCode(), checkBom.getMatnr()); + if (!Cools.isEmpty(bomQty)) { + bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQty); + } + // 妫�鏌ュ伐浣滄。涓槸鍚︽湁褰撳墠bom鐨勭墿鏂� + + } + } + return R.ok().add(bomMat); + } + @RequestMapping("/pack/get/auth") @ManagerAuth public R packGet(@RequestParam String barcode){ diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index d0b363b..a7004eb 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -62,9 +62,15 @@ Set<String> exist = new HashSet<>(); for (OrderDetl orderDetl : orderDetls) { + List<LocDetl> locDetls = new ArrayList<>(); double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); if (issued <= 0.0D) { continue; } - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + //if (Cools.isEmpty(orderDetl.getBomCode())) { + // locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + //} else { + // locDetls = locDetlService.queryStockByBomcode(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBomCode(),null, exist); + //} + locDetls = locDetlService.queryStockByBomcode(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBomCode(),null, exist); for (LocDetl locDetl : locDetls) { if (issued > 0) { LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), diff --git a/src/main/java/com/zy/asrs/entity/BomMat.java b/src/main/java/com/zy/asrs/entity/BomMat.java new file mode 100644 index 0000000..b30acfe --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/BomMat.java @@ -0,0 +1,240 @@ +package com.zy.asrs.entity; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableField; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("man_bom_mat") +public class BomMat implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + @ExcelIgnore + private Long id; + + /** + * 閮ㄤ欢鍝佸彿 + */ + @ApiModelProperty(value= "閮ㄤ欢鍝佸彿") + @TableField("unit_num") + @ExcelProperty(value = "閮ㄤ欢鍝佸彿") + private String unitNum; + + /** + * 閮ㄤ欢鍝佸悕 + */ + @ApiModelProperty(value= "閮ㄤ欢鍝佸悕") + @TableField("unit_name") + @ExcelProperty(value = "閮ㄤ欢鍝佸悕") + private String unitName; + + /** + * 閮ㄤ欢瑙勬牸 + */ + @ApiModelProperty(value= "閮ㄤ欢瑙勬牸") + @TableField("unit_space") + @ExcelProperty(value = "閮ㄤ欢瑙勬牸") + private String unitSpace; + + /** + * 缁勪欢鍝佸彿 + */ + @ApiModelProperty(value= "缁勪欢鍝佸彿") + @TableField("bom_num") + @ExcelProperty(value = "缁勪欢鍝佸彿") + private String bomNum; + + /** + * 缁勪欢鍝佸悕 + */ + @ApiModelProperty(value= "缁勪欢鍝佸悕") + @TableField("bom_name") + @ExcelProperty(value = "缁勪欢鍝佸悕") + private String bomName; + + /** + * 缁勪欢瑙勬牸 + */ + @ApiModelProperty(value= "缁勪欢瑙勬牸") + @TableField("bom_space") + @ExcelProperty(value = "缁勪欢瑙勬牸") + private String bomSpace; + + /** + * 鍏冧欢鍝佸彿 + */ + @ApiModelProperty(value= "鍏冧欢鍝佸彿") + @TableField("element_num") + @ExcelProperty(value = "鍏冧欢鍝佸彿") + private String elementNum; + + /** + * 鍏冧欢鍝佸悕 + */ + @ApiModelProperty(value= "鍏冧欢鍝佸悕") + @TableField("element_name") + @ExcelProperty(value = "鍏冧欢鍝佸悕") + private String elementName; + + /** + * 鍏冧欢瑙勬牸 + */ + @ApiModelProperty(value= "鍏冧欢瑙勬牸") + @TableField("element_space") + @ExcelProperty(value = "鍏冧欢瑙勬牸") + private String elementSpace; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + @ExcelProperty(value = "澶囨敞") + private String memo; + + /** + * 濂楁暟 + */ + @ApiModelProperty(value= "濂楁暟") + @TableField("bom_count") + @ExcelProperty(value = "濂楁暟") + private Double bomCount; + + /** + * 缁勬垚鐢ㄩ噺 + */ + @ApiModelProperty(value= "缁勬垚鐢ㄩ噺") + @TableField("bom_anfme") + @ExcelProperty(value = "缁勬垚鐢ㄩ噺") + private Double bomAnfme; + + /** + * 鎵樼洏鏁伴噺 + */ + @ApiModelProperty(value= "鎵樼洏鏁伴噺") + @TableField("zpallet_anfme") + @ExcelProperty(value = "鎵樼洏鏁伴噺") + @ExcelIgnore + private Double zpalletAnfme; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("modi_user") + @ExcelIgnore + private Long modiUser; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("modi_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ExcelIgnore + private Date modiTime; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + @TableField("appe_user") + @ExcelIgnore + private Long appeUser; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("appe_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ExcelIgnore + private Date appeTime; + + /** + * 鏄惁鍒犻櫎 + */ + @ApiModelProperty(value= "鏄惁鍒犻櫎") + @TableField("is_deleted") + @ExcelIgnore + private Short isDeleted; + + public BomMat() {} + + public BomMat(Long id,String unitNum,String unitName,String unitSpace,String bomNum,String bomName,String bomSpace,String elementNum,String elementName,String elementSpace,String memo,Double bomCount,Double bomAnfme,Double zpalletAnfme,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Short isDeleted) { + this.id = id; + this.unitNum = unitNum; + this.unitName = unitName; + this.unitSpace = unitSpace; + this.bomNum = bomNum; + this.bomName = bomName; + this.bomSpace = bomSpace; + this.elementNum = elementNum; + this.elementName = elementName; + this.elementSpace = elementSpace; + this.memo = memo; + this.bomCount = bomCount; + this.bomAnfme = bomAnfme; + this.zpalletAnfme = zpalletAnfme; + this.modiUser = modiUser; + this.modiTime = modiTime; + this.appeUser = appeUser; + this.appeTime = appeTime; + this.isDeleted = isDeleted; + } + +// BomMat bomMat = new BomMat( +// null, // ID[闈炵┖] +// null, // 閮ㄤ欢鍝佸彿 +// null, // 閮ㄤ欢鍝佸悕 +// null, // 閮ㄤ欢瑙勬牸 +// null, // 缁勪欢鍝佸彿 +// null, // 缁勪欢鍝佸悕 +// null, // 缁勪欢瑙勬牸 +// null, // 鍏冧欢鍝佸彿 +// null, // 鍏冧欢鍝佸悕 +// null, // 鍏冧欢瑙勬牸 +// null, // 澶囨敞 +// null, // 濂楁暟 +// null, // 缁勬垚鐢ㄩ噺 +// null, // 鎵樼洏鏁伴噺 +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿 +// null // 鏄惁鍒犻櫎 +// ); + + public String getModiTime$(){ + if (Cools.isEmpty(this.modiTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); + } + + public String getAppeTime$(){ + if (Cools.isEmpty(this.appeTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); + } + + +} diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java index 333ccc0..6ded1d8 100644 --- a/src/main/java/com/zy/asrs/entity/LocDetl.java +++ b/src/main/java/com/zy/asrs/entity/LocDetl.java @@ -158,6 +158,10 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public String getLocNo$(){ LocMastService service = SpringUtils.getBean(LocMastService.class); LocMast locMast = service.selectById(this.locNo); diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java index cbfd85f..0fc7fc4 100644 --- a/src/main/java/com/zy/asrs/entity/OrderDetl.java +++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java @@ -296,9 +296,13 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public OrderDetl() {} - public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) { + public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, String bomCode) { this.orderId = orderId; this.orderNo = orderNo; this.anfme = anfme; @@ -338,6 +342,7 @@ this.updateBy = updateBy; this.updateTime = updateTime; this.memo = memo; + this.bomCode = bomCode; } public String getOrderId$(){ diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java index 11608f6..35bef45 100644 --- a/src/main/java/com/zy/asrs/entity/WaitPakin.java +++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java @@ -160,6 +160,10 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public String getBeBatch$(){ if (null == this.beBatch){ return null; } switch (this.beBatch){ diff --git a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java index 8909bc8..94d795b 100644 --- a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java +++ b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java @@ -152,6 +152,10 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public String getBeBatch$(){ if (null == this.beBatch){ return null; } switch (this.beBatch){ diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java index 5978fdc..02f3d1f 100644 --- a/src/main/java/com/zy/asrs/entity/WrkDetl.java +++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java @@ -270,6 +270,10 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public String getIoTime$(){ if (Cools.isEmpty(this.ioTime)){ return ""; diff --git a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java index b4e7076..c6c4521 100644 --- a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java +++ b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java @@ -271,6 +271,10 @@ @ApiModelProperty(value= "澶囨敞") private String memo; + @ApiModelProperty(value= "bom鍙�") + @TableField("bom_code") + private String bomCode; + public String getIoTime$(){ if (Cools.isEmpty(this.ioTime)){ return ""; diff --git a/src/main/java/com/zy/asrs/entity/param/CheckBom.java b/src/main/java/com/zy/asrs/entity/param/CheckBom.java new file mode 100644 index 0000000..ba24b5f --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/CheckBom.java @@ -0,0 +1,12 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +@Data +public class CheckBom { + // BOM鍙� + private String bomCode; + + // 鐗╂枡鍙� + private String matnr; +} diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java index d8e1ed8..e8370ef 100644 --- a/src/main/java/com/zy/asrs/entity/param/CombParam.java +++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java @@ -10,6 +10,9 @@ @Data public class CombParam { + // bom鍙� + private String bomCode; + // 鍗曟嵁缂栧彿 private String orderNo; @@ -26,6 +29,9 @@ //璁㈠崟缂栧彿 private String orderNo; + // Bom鍙� + private String bomCode; + // 鐗╂枡缂栧彿 private String matnr; diff --git a/src/main/java/com/zy/asrs/mapper/BomMatMapper.java b/src/main/java/com/zy/asrs/mapper/BomMatMapper.java new file mode 100644 index 0000000..0364814 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/BomMatMapper.java @@ -0,0 +1,16 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.BomMat; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface BomMatMapper extends BaseMapper<BomMat> { + + BomMat selectByThreeCode(@Param("unit_num")String unitNum, @Param("bom_num")String bomNum, @Param("element_num")String elementNum); + + +} diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java index c33ab13..2df04c5 100644 --- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java @@ -56,6 +56,8 @@ List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos); + List<LocDetl> queryStockByBomcode(@Param("matnr")String matnr, @Param("batch")String batch, @Param("bomCode")String bomCode, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos); + Double queryStockAnfme(String matnr, String batch); List<StockVo> queryStockTotal(); @@ -67,4 +69,5 @@ Double selectLocDetlSumQty(String locNo); + Double getBomQyt(String bomCode,String matnr); } diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java index 97d48d8..e94b8a6 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java @@ -23,4 +23,6 @@ int updateInspect( @Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch); List<WrkDetl> selectPakoutQuery(@Param("staNo")Integer staNo, @Param("matnr")String matnr); + + Double getBomQty(String bomCode,String matnr); } diff --git a/src/main/java/com/zy/asrs/service/BomMatService.java b/src/main/java/com/zy/asrs/service/BomMatService.java new file mode 100644 index 0000000..6818afe --- /dev/null +++ b/src/main/java/com/zy/asrs/service/BomMatService.java @@ -0,0 +1,10 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.BomMat; +import com.baomidou.mybatisplus.service.IService; + +public interface BomMatService extends IService<BomMat> { + + BomMat selectByThreeCode(String unitNum, String bomNum, String elementNum); + +} diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java index 0023ecf..61609c3 100644 --- a/src/main/java/com/zy/asrs/service/LocDetlService.java +++ b/src/main/java/com/zy/asrs/service/LocDetlService.java @@ -45,6 +45,8 @@ List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos); + List<LocDetl> queryStockByBomcode(String matnr, String batch, String bomCode,String orderNo, Set<String> locNos); + Double queryStockAnfme(String matnr, String batch); List<StockVo> queryStockTotal(); @@ -55,4 +57,6 @@ List<LocDetl> unreason(); Double getLocDetlSumQty(String locNo); + + Double getBomQyt(String bomCode,String matnr); } diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java index c1cd82b..6b219d3 100644 --- a/src/main/java/com/zy/asrs/service/MobileService.java +++ b/src/main/java/com/zy/asrs/service/MobileService.java @@ -5,6 +5,7 @@ import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.param.CheckBom; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; import com.zy.asrs.entity.param.OffSaleParam; @@ -19,6 +20,16 @@ void comb(CombParam param, Long userId); /** + * 缁勬墭 + */ + void comb2(CombParam param, Long userId); + + /** + * 鏍¢獙bom + */ + R checkBom(CheckBom param, Long userId); + + /** * 涓婃灦 */ void onSale(CombParam param); diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java index 5d7d283..5920849 100644 --- a/src/main/java/com/zy/asrs/service/WrkDetlService.java +++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java @@ -23,4 +23,6 @@ List<WrkDetl> selectPakoutQuery(Integer staNo, String matnr); + Double getBomQty(String bomCode,String matnr); + } diff --git a/src/main/java/com/zy/asrs/service/impl/BomMatServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BomMatServiceImpl.java new file mode 100644 index 0000000..5d216c9 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/BomMatServiceImpl.java @@ -0,0 +1,19 @@ +package com.zy.asrs.service.impl; + +import com.zy.asrs.mapper.BomMatMapper; +import com.zy.asrs.entity.BomMat; +import com.zy.asrs.service.BomMatService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Date; + +@Service("bomMatService") +public class BomMatServiceImpl extends ServiceImpl<BomMatMapper, BomMat> implements BomMatService { + + @Override + public BomMat selectByThreeCode(String unitNum, String bomNum, String elementNum) { + return this.baseMapper.selectByThreeCode(unitNum,bomNum,elementNum); + } + +} diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java index 44bdd07..a085f57 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public List<LocDetl> queryStockByBomcode(String matnr, String batch, String bomCode,String orderNo, Set<String> locNos) { + return this.baseMapper.queryStockByBomcode(matnr, batch, bomCode, orderNo, locNos); + } + + @Override public Double queryStockAnfme(String matnr, String batch) { return this.baseMapper.queryStockAnfme(matnr, batch); } @@ -116,4 +121,9 @@ public Double getLocDetlSumQty(String locNo) { return this.baseMapper.selectLocDetlSumQty(locNo); } + + @Override + public Double getBomQyt(String bomCode,String matnr) { + return this.baseMapper.getBomQyt(bomCode,matnr); + } } diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 81b0926..18fdaa5 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -10,6 +10,7 @@ import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.CheckBom; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; import com.zy.asrs.entity.param.OffSaleParam; @@ -78,6 +79,9 @@ private DocTypeService docTypeService; @Autowired private MatV2Service matV2Service; + @Autowired + private BomMatService bomMatService; + @Override @Transactional public void comb(CombParam param, Long userId) { @@ -192,6 +196,7 @@ } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); + waitPakin.setBomCode(combMat.getBomCode()); waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 waitPakin.setBatch(combMat.getBatch()); // 搴忓垪鐮� waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� @@ -220,6 +225,178 @@ } + @Override + @Transactional + public void comb2(CombParam param, Long userId) { + + if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { + throw new CoolException(BaseRes.PARAM); + } + if(param.getCombMats().stream().anyMatch(obj -> obj.getAnfme() == null)){ + throw new CoolException("鍏ュ簱鐗╂枡鏁伴噺涓嶈兘涓虹┖"); + } + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { + throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); + } + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + if (wrkMast != null && wrkMast.getIoType() < 100){ + throw new CoolException("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); + + } + if (countLoc > 0 ) { + throw new CoolException("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); + } + + + //璁剧疆闈瀗ull鎵瑰彿锛� + for (CombParam.CombMat combMat : param.getCombMats()) { + if (combMat.getBatch() == null){ + combMat.setBatch(""); + } + } + + + + + Date now = new Date(); + + // 鏃犲崟缁勬墭 + if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) { + + // 鐢熸垚鍏ュ簱閫氱煡妗� + List<DetlDto> detlDtos = new ArrayList<>(); + param.getCombMats().forEach(elem -> { + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); + if (DetlDto.has(detlDtos, detlDto)) { + DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); + assert one != null; + one.setAnfme(one.getAnfme() + detlDto.getAnfme()); + } else { + detlDtos.add(detlDto); + } + }); + + + 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() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + waitPakin.sync(matV2); + waitPakin.setBrand("缁勪欢"); + } else { + waitPakin.sync(mat); + } + // 鏍¢獙鏄惁涓篵om鍏ュ簱 bom鍏ュ簱鐨勬暟閲忎笉鑳借秴杩囧簱瀛樺師鏈夋暟閲� + if (!Cools.isEmpty(param.getBomCode())) { + BomMat bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", param.getBomCode()).eq("element_num", detlDto.getMatnr())); + Double bomQyt = locDetlService.getBomQyt(param.getBomCode(), detlDto.getMatnr()); + if (!Cools.isEmpty(bomQyt)) { + bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt); + } + Double bomQty = wrkDetlService.getBomQty(param.getBomCode(), detlDto.getMatnr()); + if (!Cools.isEmpty(bomQty)) { + bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQty); + } + if (bomMat.getZpalletAnfme() == 0.0D) { + throw new CoolException(detlDto.getMatnr() + "褰撳墠鐗╂枡宸插叆鏈�澶ф暟閲�"); + } else { + if (bomMat.getZpalletAnfme() < detlDto.getAnfme()) { + throw new CoolException(detlDto.getMatnr() + "褰撳墠鐗╂枡鏈�澶氬彲鍏�" + bomMat.getZpalletAnfme() + "浠�"); + } + } + } + waitPakin.setBatch(detlDto.getBatch()); + waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(userId); + waitPakin.setBomCode(param.getBomCode()); + waitPakin.setAppeTime(now); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + } + // 鍏宠仈缁勬墭 + } else { + for (CombParam.CombMat combMat : param.getCombMats()) { + // 鐢熸垚鍏ュ簱閫氱煡妗� + Order order = orderService.selectByNo(combMat.getOrderNo()); + + //鍒ゆ柇璁㈠崟绫诲瀷鏄惁鏄叆搴� + DocType docType=docTypeService.selectById(order.getDocType()); + if(docType.getPakin()!=1 || docType.getStatus()!=1){ + throw new CoolException("璁㈠崟涓哄嚭搴撹鍗曪紝涓嶈兘缁勬墭锛�"); + } + + if (order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); + } + OrderDetl orderDetl = orderDetlService.selectItem(combMat.getOrderNo(), combMat.getMatnr(), combMat.getBatch()); + if (orderDetl == null) { + throw new CoolException("鎵句笉鍒扮粍鎵樼殑鍗曟嵁鏄庣粏"); + } + //璁㈠崟鏁�-宸ヤ綔涓殑鏁伴噺-缁勬墭鏁伴噺 + if ( orderDetl.getAnfme() - orderDetl.getWorkQty() - combMat.getAnfme()<0) { + throw new CoolException("缁勬墭鏁伴噺宸茶秴鍑鸿鍗曢渶姹傞噺锛岃妫�鏌ユ槸鍚︽湁鍏朵粬鐨勭粍鎵樺凡瀹屾垚"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + Mat mat = matService.selectByMatnr(combMat.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(combMat.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); + waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setBatch(combMat.getBatch()); // 搴忓垪鐮� + waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(combMat.getAnfme()); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(userId); + waitPakin.setAppeTime(now); + waitPakin.setBomCode(param.getBomCode()); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + +// DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()); +// if (DetlDto.has(detlDtos, detlDto)) { +// DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); +// assert one != null; +// one.setAnfme(one.getAnfme() + detlDto.getAnfme()); +// } else { +// } + orderService.updateSettle(order.getId(), 2L, userId); + } + + } + + } + + @Override + @Transactional + public R checkBom(CheckBom param, Long userId) { + + + return R.ok(); + } + // 鍟嗗搧涓婃灦 @Override public void onSale(CombParam param) { diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index 162368c..c804b6c 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -763,14 +763,14 @@ Date now = new Date(); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo())); - List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); - String zpallet = ""; for (LocDetl locDetl : locDetls) { if (!Cools.isEmpty(locDetl.getZpallet())) { zpallet = locDetl.getZpallet(); } } + + List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); // 淇敼鏁伴噺 Iterator<LocDetl> iterator = locDetls.iterator(); @@ -833,8 +833,8 @@ Mat mat = matService.selectByMatnr(adjust.getMatnr()); LocDetl locDetl = new LocDetl(); locDetl.sync(mat); - locDetl.setBatch(adjust.getBatch()); locDetl.setZpallet(zpallet); + locDetl.setBatch(adjust.getBatch()); locDetl.setLocNo(locMast.getLocNo()); locDetl.setAnfme(adjust.getCount()); // 鏁伴噺 locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅 diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java index 2f8b862..b542e65 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java @@ -111,4 +111,9 @@ public List<WrkDetl> selectPakoutQuery(Integer staNo, String matnr) { return this.baseMapper.selectPakoutQuery(staNo, matnr); } + + @Override + public Double getBomQty(String bomCode,String matnr) { + return this.baseMapper.getBomQty(bomCode,matnr); + } } diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java index 2e6289d..dc7a590 100644 --- a/src/main/java/com/zy/common/CodeBuilder.java +++ b/src/main/java/com/zy/common/CodeBuilder.java @@ -20,7 +20,7 @@ generator.url="127.0.0.1:1433;databasename=phpsasrs"; generator.username="sa"; generator.password="sa@123"; - generator.table="man_mat_v2"; + generator.table="man_bom_mat"; generator.packagePath="com.zy.asrs"; generator.build(); } diff --git a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java index a0cd9e8..0bc7c06 100644 --- a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java +++ b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java @@ -126,29 +126,29 @@ //褰撳墠鏈嶅姟鍣ㄧ湡瀹炵殑鍙傛暟淇℃伅 LicenseCheck serverCheckModel = getServerInfos(); - if(expectedCheckModel != null && serverCheckModel != null){ - //鏍¢獙IP鍦板潃 - if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){ - //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�"); - } - - //鏍¢獙Mac鍦板潃 - if(!checkIpAddress(expectedCheckModel.getMacAddress(),serverCheckModel.getMacAddress())){ - //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�"); - } - - //鏍¢獙涓绘澘搴忓垪鍙� - if(!checkSerial(expectedCheckModel.getMainBoardSerial(),serverCheckModel.getMainBoardSerial())){ - throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); - } - - //鏍¢獙CPU搴忓垪鍙� - if(!checkSerial(expectedCheckModel.getCpuSerial(),serverCheckModel.getCpuSerial())){ - throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); - } - }else{ - throw new LicenseContentException("涓嶈兘鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�"); - } + //if(expectedCheckModel != null && serverCheckModel != null){ + // //鏍¢獙IP鍦板潃 + // if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){ + // //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�"); + // } + // + // //鏍¢獙Mac鍦板潃 + // if(!checkIpAddress(expectedCheckModel.getMacAddress(),serverCheckModel.getMacAddress())){ + // //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�"); + // } + // + // //鏍¢獙涓绘澘搴忓垪鍙� + // if(!checkSerial(expectedCheckModel.getMainBoardSerial(),serverCheckModel.getMainBoardSerial())){ + // throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); + // } + // + // //鏍¢獙CPU搴忓垪鍙� + // if(!checkSerial(expectedCheckModel.getCpuSerial(),serverCheckModel.getCpuSerial())){ + // throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); + // } + //}else{ + // throw new LicenseContentException("涓嶈兘鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�"); + //} } diff --git a/src/main/resources/mapper/BomMatMapper.xml b/src/main/resources/mapper/BomMatMapper.xml new file mode 100644 index 0000000..fc58ef6 --- /dev/null +++ b/src/main/resources/mapper/BomMatMapper.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zy.asrs.mapper.BomMatMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BomMat"> + <result column="id" property="id" /> + <result column="unit_num" property="unitNum" /> + <result column="unit_name" property="unitName" /> + <result column="unit_space" property="unitSpace" /> + <result column="bom_num" property="bomNum" /> + <result column="bom_name" property="bomName" /> + <result column="bom_space" property="bomSpace" /> + <result column="element_num" property="elementNum" /> + <result column="element_name" property="elementName" /> + <result column="element_space" property="elementSpace" /> + <result column="memo" property="memo" /> + <result column="bom_count" property="bomCount" /> + <result column="bom_anfme" property="bomAnfme" /> + <result column="zpallet_anfme" property="zpalletAnfme" /> + <result column="modi_user" property="modiUser" /> + <result column="modi_time" property="modiTime" /> + <result column="appe_user" property="appeUser" /> + <result column="appe_time" property="appeTime" /> + <result column="is_deleted" property="isDeleted" /> + + </resultMap> + + <select id="selectByThreeCode" resultMap="BaseResultMap"> + select top 1 * from man_bom_mat + where 1=1 + and unit_num = #{unit_num} + and bom_num = #{bom_num} + and element_num = #{element_num} + </select> + +</mapper> diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index ffd2182..85f6e52 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -44,6 +44,7 @@ <result column="appe_user" property="appeUser" /> <result column="appe_time" property="appeTime" /> <result column="memo" property="memo" /> + <result column="bom_code" property="bomCode" /> </resultMap> <sql id="batchSeq"> @@ -108,6 +109,9 @@ </if> <if test="zpallet!=null and zpallet!='' "> and a.zpallet like '%' + #{zpallet} + '%' + </if> + <if test="bomCode!=null and bomCode!='' "> + and a.bom_code like '%' + #{bomCode} + '%' </if> </sql> @@ -288,6 +292,93 @@ desc </select> + <select id="queryStockByBomcode" resultMap="BaseResultMap"> + select a.* + from asr_loc_detl a + left join asr_loc_mast b on a.loc_no = b.loc_no + where 1=1 + and b.loc_sts = 'F' + and a.matnr = #{matnr} + <!-- <choose>--> + <!-- <when test="batch != null and batch != ''">--> + <!-- and a.batch = #{batch}--> + <!-- </when>--> + <!-- <otherwise>--> + <!-- and (a.batch IS NULL OR a.batch = '')--> + <!-- </otherwise>--> + <!-- </choose>--> + <if test="batch != null"> + and a.batch = #{batch} + </if> + <if test="orderNo != null and orderNo != ''"> + and a.order_no = #{orderNo} + </if> + + <if test="locNos != null and locNos.size > 0"> + and b.loc_no not in + <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + and a.bom_code = #{bomCode} + order by + DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme + desc, + NEWID(), + case + when (left(a.loc_no, 2) = '01') then 0 + when (left(a.loc_no, 2) = '02') then 1 + when (left(a.loc_no, 2) = '03') then 1 + when (left(a.loc_no, 2) = '04') then 0 + when (left(a.loc_no, 2) = '05') then 0 + when (left(a.loc_no, 2) = '06') then 1 + when (left(a.loc_no, 2) = '07') then 1 + when (left(a.loc_no, 2) = '08') then 0 + when (left(a.loc_no, 2) = '09') then 0 + when (left(a.loc_no, 2) = '10') then 1 + when (left(a.loc_no, 2) = '11') then 1 + when (left(a.loc_no, 2) = '12') then 0 + when (left(a.loc_no, 2) = '13') then 0 + when (left(a.loc_no, 2) = '14') then 1 + when (left(a.loc_no, 2) = '15') then 1 + when (left(a.loc_no, 2) = '16') then 0 + when (left(a.loc_no, 2) = '17') then 0 + when (left(a.loc_no, 2) = '18') then 1 + when (left(a.loc_no, 2) = '19') then 1 + when (left(a.loc_no, 2) = '20') then 0 + when (left(a.loc_no, 2) = '21') then 0 + when (left(a.loc_no, 2) = '22') then 1 + when (left(a.loc_no, 2) = '23') then 1 + when (left(a.loc_no, 2) = '24') then 0 + when (left(a.loc_no, 2) = '25') then 0 + when (left(a.loc_no, 2) = '26') then 1 + when (left(a.loc_no, 2) = '27') then 1 + when (left(a.loc_no, 2) = '28') then 0 + when (left(a.loc_no, 2) = '29') then 0 + when (left(a.loc_no, 2) = '30') then 1 + when (left(a.loc_no, 2) = '31') then 1 + when (left(a.loc_no, 2) = '32') then 0 + when (left(a.loc_no, 2) = '33') then 0 + when (left(a.loc_no, 2) = '34') then 1 + when (left(a.loc_no, 2) = '35') then 1 + when (left(a.loc_no, 2) = '36') then 0 + when (left(a.loc_no, 2) = '37') then 0 + when (left(a.loc_no, 2) = '38') then 1 + when (left(a.loc_no, 2) = '39') then 1 + when (left(a.loc_no, 2) = '40') then 0 + when (left(a.loc_no, 2) = '41') then 0 + when (left(a.loc_no, 2) = '42') then 1 + when (left(a.loc_no, 2) = '43') then 1 + when (left(a.loc_no, 2) = '44') then 0 + when (left(a.loc_no, 2) = '45') then 0 + when (left(a.loc_no, 2) = '46') then 1 + when (left(a.loc_no, 2) = '47') then 1 + when (left(a.loc_no, 2) = '48') then 0 + else 0 + end + desc + </select> + <select id="queryStockAnfme" resultType="java.lang.Double"> select sum(anfme) as count from man_loc_detl where 1=1 @@ -327,5 +418,12 @@ where loc_no=#{locNo} </select> + <select id="getBomQyt" resultType="double"> + select SUM(anfme) anfme + from asr_loc_detl + where bom_code = #{bomCode} + and matnr = #{matnr} + </select> + </mapper> diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml index 3cecff7..089dfa4 100644 --- a/src/main/resources/mapper/OrderDetlMapper.xml +++ b/src/main/resources/mapper/OrderDetlMapper.xml @@ -45,6 +45,7 @@ <result column="update_by" property="updateBy" /> <result column="update_time" property="updateTime" /> <result column="memo" property="memo" /> + <result column="bom_code" property="bomCode" /> </resultMap> diff --git a/src/main/resources/mapper/WaitPakinMapper.xml b/src/main/resources/mapper/WaitPakinMapper.xml index e4227b7..f3e59d6 100644 --- a/src/main/resources/mapper/WaitPakinMapper.xml +++ b/src/main/resources/mapper/WaitPakinMapper.xml @@ -47,6 +47,7 @@ <result column="appe_time" property="appeTime" /> <result column="appe_user" property="appeUser" /> <result column="memo" property="memo" /> + <result column="bom_code" property="bomCode" /> </resultMap> </mapper> diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml index 225f31e..6b1c11b 100644 --- a/src/main/resources/mapper/WrkDetlMapper.xml +++ b/src/main/resources/mapper/WrkDetlMapper.xml @@ -45,6 +45,7 @@ <result column="appe_user" property="appeUser" /> <result column="appe_time" property="appeTime" /> <result column="memo" property="memo" /> + <result column="bom_code" property="bomCode" /> </resultMap> <sql id="batchSeq"> @@ -108,4 +109,11 @@ and awd.matnr + '-' + awd.batch = #{matnr} </select> + <select id="getBomQty" resultType="double"> + select SUM(anfme) anfme + from asr_wrk_detl + where bom_code = #{bomCode} + and matnr = #{matnr} + </select> + </mapper> diff --git a/src/main/webapp/static/image/logo.png b/src/main/webapp/static/image/logo.png deleted file mode 100644 index 094646e..0000000 --- a/src/main/webapp/static/image/logo.png +++ /dev/null Binary files differ diff --git a/src/main/webapp/static/image/logo1.png b/src/main/webapp/static/image/logo1.png new file mode 100644 index 0000000..c7fcb86 --- /dev/null +++ b/src/main/webapp/static/image/logo1.png Binary files differ diff --git a/src/main/webapp/static/image/logo2.png b/src/main/webapp/static/image/logo2.png new file mode 100644 index 0000000..965ae27 --- /dev/null +++ b/src/main/webapp/static/image/logo2.png Binary files differ diff --git a/src/main/webapp/static/js/bomMat/bomMat.js b/src/main/webapp/static/js/bomMat/bomMat.js new file mode 100644 index 0000000..3c78330 --- /dev/null +++ b/src/main/webapp/static/js/bomMat/bomMat.js @@ -0,0 +1,325 @@ +var pageCurr; +var admin; +var insTb +layui.config({ + base: baseUrl + "/static/layui/lay/modules/" +}).use(['table','laydate', 'form', 'admin'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + admin = layui.admin; + + // 鏁版嵁娓叉煋 + insTb = table.render({ + elem: '#bomMat', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/bomMat/list/auth', + page: true, + limit: 15, + limits: [15, 30, 50, 100, 200, 500], + toolbar: '#toolbar', + cellMinWidth: 50, + height: 'full-120', + cols: [[ + {type: 'checkbox'} + ,{field: 'id', align: 'center',title: 'ID',hide: true} + ,{field: 'unitNum', align: 'center',title: '閮ㄤ欢鍝佸彿'} + ,{field: 'unitName', align: 'center',title: '閮ㄤ欢鍝佸悕'} + ,{field: 'unitSpace', align: 'center',title: '閮ㄤ欢瑙勬牸'} + ,{field: 'bomNum', align: 'center',title: '缁勪欢鍝佸彿'} + ,{field: 'bomName', align: 'center',title: '缁勪欢鍝佸悕'} + ,{field: 'bomSpace', align: 'center',title: '缁勪欢瑙勬牸'} + ,{field: 'elementNum', align: 'center',title: '鍏冧欢鍝佸彿'} + ,{field: 'elementName', align: 'center',title: '鍏冧欢鍝佸悕'} + ,{field: 'elementSpace', align: 'center',title: '鍏冧欢瑙勬牸'} + ,{field: 'memo', align: 'center',title: '澶囨敞'} + ,{field: 'bomCount', align: 'center',title: '濂楁暟'} + ,{field: 'bomAnfme', align: 'center',title: '缁勬垚鐢ㄩ噺'} + ,{field: 'zpalletAnfme', align: 'center',title: '鎵樼洏鏁伴噺'} + ,{field: 'modiUser', align: 'center',title: '淇敼浜哄憳',hide: true} + ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿',hide: true} + ,{field: 'appeUser', align: 'center',title: '娣诲姞浜哄憳',hide: true} + ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿',hide: true} + ,{field: 'isDeleted', align: 'center',title: '鏄惁鍒犻櫎',hide: true} + + ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120} + ]], + request: { + pageName: 'curr', + pageSize: 'limit' + }, + parseData: function (res) { + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function(res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + limit(); + } + }); + + // 鐩戝惉鎺掑簭浜嬩欢 + table.on('sort(bomMat)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + insTb.reload({ + where: searchData, + page: {curr: 1} + }); + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(bomMat)', function (obj) { + var checkStatus = table.checkStatus(obj.config.id).data; + switch(obj.event) { + case 'addData': + showEditModel(); + break; + case 'deleteData': + if (checkStatus.length === 0) { + layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2}); + return; + } + del(checkStatus.map(function (d) { + return d.id; + })); + break; + case 'importData': + $("#importExcel").trigger("click"); + break; + case 'excelMouldDownload': + excelMouldDownload(); + break; + case 'exportData': + admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){ + var titles=[]; + var fields=[]; + obj.config.cols[0].map(function (col) { + if (col.type === 'normal' && col.hide === false && col.toolbar == null) { + titles.push(col.title); + fields.push(col.field); + } + }); + var exportData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + exportData[this.name] = this.value; + }); + var param = { + 'bomMat': exportData, + 'fields': fields + }; + $.ajax({ + url: baseUrl+"/bomMat/export/auth", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(param), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + table.exportFile(titles,res.data,'xls'); + } else if (res.code === 403) { + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 2}) + } + } + }); + }); + break; + } + }); + + // 鐩戝惉琛屽伐鍏蜂簨浠� + table.on('tool(bomMat)', function(obj){ + var data = obj.data; + switch (obj.event) { + case 'edit': + showEditModel(data); + break; + case "del": + del([data.id]); + break; + } + }); + + /* 寮圭獥 - 鏂板銆佷慨鏀� */ + function showEditModel(mData) { + admin.open({ + type: 1, + area: '600px', + title: (mData ? '淇敼' : '娣诲姞') + '缁勪欢', + content: $('#editDialog').html(), + success: function (layero, dIndex) { + layDateRender(mData); + form.val('detail', mData); + form.on('submit(editSubmit)', function (data) { + var loadIndex = layer.load(2); + $.ajax({ + url: baseUrl+"/bomMat/"+(mData?'update':'add')+"/auth", + headers: {'token': localStorage.getItem('token')}, + data: data.field, + method: 'POST', + success: function (res) { + layer.close(loadIndex); + if (res.code === 200){ + layer.close(dIndex); + layer.msg(res.msg, {icon: 1}); + tableReload(); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + return false; + }); + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + layui.form.render('select'); + } + }); + } + + /* 鍒犻櫎 */ + function del(ids) { + layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', { + skin: 'layui-layer-admin', + shade: .1 + }, function (i) { + layer.close(i); + var loadIndex = layer.load(2); + $.ajax({ + url: baseUrl+"/bomMat/delete/auth", + headers: {'token': localStorage.getItem('token')}, + data: {ids: ids}, + method: 'POST', + success: function (res) { + layer.close(loadIndex); + if (res.code === 200){ + layer.msg(res.msg, {icon: 1}); + tableReload(); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + }); + } + + // 鎼滅储 + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + + // 閲嶇疆 + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + + // 鏃堕棿閫夋嫨鍣� + function layDateRender(data) { + setTimeout(function () { + layDate.render({ + elem: '#modiTime\\$', + type: 'datetime', + value: data!==undefined?data['modiTime\\$']:null + }); + layDate.render({ + elem: '#appeTime\\$', + type: 'datetime', + value: data!==undefined?data['appeTime\\$']:null + }); + + }, 300); + } + layDateRender(); + +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +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 + "/bomMat/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}); +} + +function excelMouldDownload(){ + layer.load(1, {shade: [0.1,'#fff']}); + location.href = baseUrl + "/bomMat/excel/import/mould"; + layer.closeAll('loading'); +} + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + insTb.reload({ + where: searchData, + page: {curr: pageCurr} + }); +} diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 0e418c0..0ef3b1a 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -233,6 +233,7 @@ ,{field: 'model', align: 'center',title: '浠g爜', hide: false} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} ,{field: 'brand', align: 'center',title: '绫诲瀷', hide: false} + ,{field: 'bomCode', align: 'center',title: 'BOM鍙�', hide: false} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} ,{field: 'price', align: 'center',title: '鍗曚环', hide: true} ,{field: 'sku', align: 'center',title: 'sku', hide: true} diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js index c43ffcf..80f9f31 100644 --- a/src/main/webapp/static/js/locDetl/locDetl.js +++ b/src/main/webapp/static/js/locDetl/locDetl.js @@ -12,6 +12,7 @@ ,{field: 'model', align: 'center',title: '浠g爜', hide: true} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} ,{field: 'brand', align: 'center',title: '绫诲瀷', hide: false} + ,{field: 'bomCode', align: 'center',title: 'bom鍙�', hide: false} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} ,{field: 'price', align: 'center',title: '鍗曚环', hide: true} ,{field: 'sku', align: 'center',title: 'sku', hide: true} diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index 62ab391..2f525b3 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -134,6 +134,7 @@ {type: 'numbers'}, {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160}, {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160}, + {field: 'bomCode', title: 'Bom鍙�'}, {field: 'batch', title: '鎵瑰彿'}, {field: 'anfme', title: '鏁伴噺'}, {field: 'supp', title: '绔嬪簱搴撳瓨', templet: function (item){ @@ -260,6 +261,7 @@ {type: 'numbers', title: '#'}, {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160}, {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200}, + {field: 'bomCode', title: 'Bom鍙�', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, {field: 'batch', title: '鎵瑰彿', edit: true}, {field: 'specs', title: '瑙勬牸'}, {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, @@ -529,9 +531,6 @@ } // 鎵撳嵃 function btnPrint(orderId, orderNo, settle) { - console.log(orderId); - console.log(orderNo); - console.log(settle); printMatCodeNos.push(orderNo) var templateNo = 3; $.ajax({ @@ -543,16 +542,21 @@ success: function (res) { if (res.code === 200){ layer.closeAll(); - console.log(res); for (let i=0;i<res.data.length;i++){ var templateDom = $("#templatePreview"+templateNo); var className = templateDom.attr("class"); if (className === 'template-barcode') { res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1¶m="+res.data[i].orderNo+ - ";"+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme; + ";"+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme+";"+res.data[i].bomCode; } else { - res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].orderNo+ - ";"+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme; + if (res.data[i].bomCode) { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].orderNo+ + ";"+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme+";"+res.data[i].bomCode; + } else { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].orderNo+ + ";"+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme; + } + } } var tpl = templateDom.html(); diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js index e0b6b18..515b971 100644 --- a/src/main/webapp/static/js/order/out.js +++ b/src/main/webapp/static/js/order/out.js @@ -32,9 +32,10 @@ cols: [[ {type: 'checkbox'} ,{type: 'numbers', title: '#'} - ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl', width: 160} - ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160} - ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200} + ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl', width: 140} + ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 140} + ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 140} + ,{field: 'bomCode', align: 'center',title: 'bom鍙�', width: 100} ,{field: 'batch', align: 'center',title: '搴忓垪鐮�'} ,{field: 'specs', align: 'center',title: '瑙勬牸'} ,{field: 'anfme', align: 'center',title: '鎬绘暟閲�', style: 'font-weight: bold'} @@ -55,7 +56,7 @@ // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'} // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'} // ,{field: 'memo', align: 'center',title: '澶囨敞'} - ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160} + ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 100} ]], request: { pageName: 'curr', diff --git a/src/main/webapp/views/bomMat/bomMat.html b/src/main/webapp/views/bomMat/bomMat.html new file mode 100644 index 0000000..6746fbb --- /dev/null +++ b/src/main/webapp/views/bomMat/bomMat.html @@ -0,0 +1,202 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> +</head> +<body> + +<div class="layui-fluid"> + <div class="layui-card"> + <div class="layui-card-body"> + <div class="layui-form toolbar" id="search-box"> + <div class="layui-form-item"> + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="unit_num" class="layui-input" type="text" placeholder="閮ㄤ欢鍝佸彿"/> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="unit_name" class="layui-input" type="text" placeholder="閮ㄤ欢鍝佸悕"/> + </div> + </div> + <!--<div class="layui-inline">--> + <!-- <div class="layui-input-inline mr0">--> + <!-- <input name="unit_space" class="layui-input" type="text" placeholder="閮ㄤ欢瑙勬牸"/>--> + <!-- </div>--> + <!--</div>--> + + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="bom_num" class="layui-input" type="text" placeholder="缁勪欢鍝佸彿"/> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="bom_name" class="layui-input" type="text" placeholder="缁勪欢鍝佸悕"/> + </div> + </div> + <!--<div class="layui-inline">--> + <!-- <div class="layui-input-inline mr0">--> + <!-- <input name="bom_num" class="layui-input" type="text" placeholder="缁勪欢瑙勬牸"/>--> + <!-- </div>--> + <!--</div>--> + + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="element_num" class="layui-input" type="text" placeholder="鍏冧欢鍝佸彿"/> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline mr0"> + <input name="element_name" class="layui-input" type="text" placeholder="鍏冧欢鍝佸悕"/> + </div> + </div> + <!--<div class="layui-inline">--> + <!-- <div class="layui-input-inline mr0">--> + <!-- <input name="element_num" class="layui-input" type="text" placeholder="鍏冧欢瑙勬牸"/>--> + <!-- </div>--> + <!--</div>--> + <div class="layui-inline">  + <button class="layui-btn icon-btn" lay-filter="search" lay-submit> + <i class="layui-icon"></i>鎼滅储 + </button> + <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> + <i class="layui-icon"></i>閲嶇疆 + </button> + </div> + </div> + </div> + <table class="layui-hide" id="bomMat" lay-filter="bomMat"></table> + </div> + </div> +</div> + +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> + <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button> + <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-mouldDownload" lay-event="excelMouldDownload" style="float: right">妯℃澘涓嬭浇</button> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-import" lay-event="importData" style="float: right">瀵煎叆</button> + <input style="display:none" id="importExcel" type="file" onchange="upload(this)" > + </div> +</script> + +<script type="text/html" id="operate"> + <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a> + <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a> +</script> + +<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/bomMat/bomMat.js" charset="utf-8"></script> +</body> +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="editDialog"> + <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> + <input name="id" type="hidden"> + <div class="layui-row"> + <div class="layui-col-md6"> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">閮ㄤ欢鍝佸彿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="unitNum" placeholder="璇疯緭鍏ラ儴浠跺搧鍙�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">閮ㄤ欢鍝佸悕: </label> + <div class="layui-input-block"> + <input class="layui-input" name="unitName" placeholder="璇疯緭鍏ラ儴浠跺搧鍚�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">閮ㄤ欢瑙勬牸: </label> + <div class="layui-input-block"> + <input class="layui-input" name="unitSpace" placeholder="璇疯緭鍏ラ儴浠惰鏍�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">缁勪欢鍝佸彿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="bomNum" placeholder="璇疯緭鍏ョ粍浠跺搧鍙�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">缁勪欢鍝佸悕: </label> + <div class="layui-input-block"> + <input class="layui-input" name="bomName" placeholder="璇疯緭鍏ョ粍浠跺搧鍚�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">缁勪欢瑙勬牸: </label> + <div class="layui-input-block"> + <input class="layui-input" name="bomSpace" placeholder="璇疯緭鍏ョ粍浠惰鏍�"> + </div> + </div> + + </div> + <div class="layui-col-md6"> + + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">鍏冧欢鍝佸彿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="elementNum" placeholder="璇疯緭鍏ュ厓浠跺搧鍙�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">鍏冧欢鍝佸悕: </label> + <div class="layui-input-block"> + <input class="layui-input" name="elementName" placeholder="璇疯緭鍏ュ厓浠跺搧鍚�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鍏冧欢瑙勬牸: </label> + <div class="layui-input-block"> + <input class="layui-input" name="elementSpace" placeholder="璇疯緭鍏ュ厓浠惰鏍�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">濂楁暟: </label> + <div class="layui-input-block"> + <input class="layui-input" name="bomCount" placeholder="璇疯緭鍏ュ鏁�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">缁勬垚鐢ㄩ噺: </label> + <div class="layui-input-block"> + <input class="layui-input" name="bomAnfme" placeholder="璇疯緭鍏ョ粍鎴愮敤閲�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label ">澶囨敞: </label> + <div class="layui-input-block"> + <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> + </div> + </div> + + </div> + + </div> + <hr class="layui-bg-gray"> + <div class="layui-form-item text-right"> + <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + </div> + </form> +</script> +</html> + + + + + diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html index e3ce393..9340c60 100644 --- a/src/main/webapp/views/index.html +++ b/src/main/webapp/views/index.html @@ -26,7 +26,7 @@ <!-- 澶撮儴 --> <div class="layui-header"> <div class="layui-logo"> - <img src="../static/image/logo.png" style="display: inline-block; width: 40%;height: auto"> + <img src="../static/image/logo2.png" style="display: inline-block; width: 40%;height: auto"> <!-- <span style="margin-top: 0; letter-spacing: 10px">涓壃绔嬪簱</span>--> <!-- <img src="../static/image/logo.svg"/>--> <!-- <cite>涓壃 - Zoneyung</cite>--> diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html index b4c209b..3980123 100644 --- a/src/main/webapp/views/login.html +++ b/src/main/webapp/views/login.html @@ -53,7 +53,7 @@ z-index: 100; top: 22px; left: 20px;"> - <img src="../static/image/logo.png" alt="" style="width: 20%"> + <img src="../static/image/logo2.png" alt="" style="width: 20%"> </div> <div class="p-sketch-outline"> <h2 class="p-sketch-outline__title">Automatic Storage and Retrieval System</h2> @@ -67,8 +67,8 @@ <div id="sidebar"> <div class="login-contain"> <div class="login-box"> - <img src="../static/image/logo.png" alt="" style="width: 80%"> - <span class="login100-form-title p-t-20 p-b-45">涓壃绔嬪簱</span> + <img src="../static/image/logo1.png" alt="" style="width: 80%"> + <!--<span class="login100-form-title p-t-20 p-b-45">涓壃绔嬪簱</span>--> <span class="login100-form-title p-t-20 p-b-45" style="margin: 15px 0;color: #868686;font-size: 24px">WMS</span> <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ョ敤鎴峰悕"> <input id="username" class="input100" type="text" name="username" placeholder="username" autocomplete="off"> diff --git a/src/main/webapp/views/order/view.html b/src/main/webapp/views/order/view.html new file mode 100644 index 0000000..f24e2d9 --- /dev/null +++ b/src/main/webapp/views/order/view.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Title</title> +</head> +<body> + <table border="1" cellspacing="0"> + <tr><th colspan="8">娴欐睙娴风洂鍔涙簮鐜繚绉戞妧鑲′唤鏈夐檺鍏徃</th></tr> + <tr><th colspan="8">鏉愭枡鍑哄簱鍗�</th></tr> + <tr><td>鍑哄簱鍗曞彿</td><td colspan="2">HAND1056256517314969600</td><td>鍑哄簱鏃ユ湡</td><td colspan="2">2022-12-24</td><td>浠撳簱</td><td>1鍙蜂粨搴�</td></tr> + <tr> + <td>搴忓彿</td><td>鍟嗗搧缂栫爜</td><td>鍟嗗搧鍚嶇О</td><td>鍚堝悓鍙�</td><td>瑙勬牸鍨嬪彿</td><td>鍗曚綅</td><td>鏁伴噺</td><td>澶囨敞</td> + </tr> + <tr></tr> + <tr><td>鍚堣</td><td colspan="5"></td><td></td><td></td></tr> + <tr><td>鍒跺崟浜�</td><td></td><td>瀹℃牳浜�</td><td></td><td>澶嶆牳浜�</td><td colspan="3"></td></tr> + </table> +</body> +</html> \ No newline at end of file diff --git a/src/main/webapp/views/pakStore/locDetlQuery.html b/src/main/webapp/views/pakStore/locDetlQuery.html index 9d00cfc..7e45723 100644 --- a/src/main/webapp/views/pakStore/locDetlQuery.html +++ b/src/main/webapp/views/pakStore/locDetlQuery.html @@ -77,6 +77,11 @@ <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off"> </div> </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="bomCode" placeholder="bom鍙�" autocomplete="off"> + </div> + </div> <!-- 鏃ユ湡鑼冨洿 --> <div class="layui-inline" style="width: 300px"> <div class="layui-input-inline"> -- Gitblit v1.9.1