15个文件已删除
30个文件已添加
15个文件已修改
| New file |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | 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.zy.asrs.entity.ErpMat; |
| | | import com.zy.asrs.service.ErpMatService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class ErpMatController extends BaseController { |
| | | |
| | | @Autowired |
| | | private ErpMatService erpMatService; |
| | | |
| | | @RequestMapping(value = "/erpMat/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(erpMatService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMat/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(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<ErpMat> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(ErpMat.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(erpMatService.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 = "/erpMat/add/auth") |
| | | @ManagerAuth |
| | | public R add(ErpMat erpMat) { |
| | | erpMatService.insert(erpMat); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMat/update/auth") |
| | | @ManagerAuth |
| | | public R update(ErpMat erpMat){ |
| | | if (Cools.isEmpty(erpMat) || null==erpMat.getId()){ |
| | | return R.error(); |
| | | } |
| | | erpMatService.updateById(erpMat); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMat/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Long[] ids){ |
| | | for (Long id : ids){ |
| | | erpMatService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMat/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<ErpMat> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("erpMat")); |
| | | convert(map, wrapper); |
| | | List<ErpMat> list = erpMatService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMatQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<ErpMat> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<ErpMat> page = erpMatService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (ErpMat erpMat : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", erpMat.getId()); |
| | | map.put("value", erpMat.getId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpMat/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<ErpMat> wrapper = new EntityWrapper<ErpMat>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != erpMatService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(ErpMat.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | 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.zy.asrs.entity.ErpOrder; |
| | | import com.zy.asrs.service.ErpOrderService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class ErpOrderController extends BaseController { |
| | | |
| | | @Autowired |
| | | private ErpOrderService erpOrderService; |
| | | |
| | | @RequestMapping(value = "/erpOrder/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(erpOrderService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrder/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(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<ErpOrder> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(ErpOrder.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(erpOrderService.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 = "/erpOrder/add/auth") |
| | | @ManagerAuth |
| | | public R add(ErpOrder erpOrder) { |
| | | erpOrderService.insert(erpOrder); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrder/update/auth") |
| | | @ManagerAuth |
| | | public R update(ErpOrder erpOrder){ |
| | | if (Cools.isEmpty(erpOrder) || null==erpOrder.getId()){ |
| | | return R.error(); |
| | | } |
| | | erpOrderService.updateById(erpOrder); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrder/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Long[] ids){ |
| | | for (Long id : ids){ |
| | | erpOrderService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrder/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<ErpOrder> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("erpOrder")); |
| | | convert(map, wrapper); |
| | | List<ErpOrder> list = erpOrderService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<ErpOrder> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<ErpOrder> page = erpOrderService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (ErpOrder erpOrder : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", erpOrder.getId()); |
| | | map.put("value", erpOrder.getId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrder/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<ErpOrder> wrapper = new EntityWrapper<ErpOrder>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != erpOrderService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(ErpOrder.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | 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.zy.asrs.entity.ErpOrderDetl; |
| | | import com.zy.asrs.service.ErpOrderDetlService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class ErpOrderDetlController extends BaseController { |
| | | |
| | | @Autowired |
| | | private ErpOrderDetlService erpOrderDetlService; |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(erpOrderDetlService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/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(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<ErpOrderDetl> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(ErpOrderDetl.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(erpOrderDetlService.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 = "/erpOrderDetl/add/auth") |
| | | @ManagerAuth |
| | | public R add(ErpOrderDetl erpOrderDetl) { |
| | | erpOrderDetlService.insert(erpOrderDetl); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/update/auth") |
| | | @ManagerAuth |
| | | public R update(ErpOrderDetl erpOrderDetl){ |
| | | if (Cools.isEmpty(erpOrderDetl) || null==erpOrderDetl.getOrderId()){ |
| | | return R.error(); |
| | | } |
| | | erpOrderDetlService.updateById(erpOrderDetl); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Long[] ids){ |
| | | for (Long id : ids){ |
| | | erpOrderDetlService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<ErpOrderDetl> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("erpOrderDetl")); |
| | | convert(map, wrapper); |
| | | List<ErpOrderDetl> list = erpOrderDetlService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetlQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<ErpOrderDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<ErpOrderDetl> page = erpOrderDetlService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (ErpOrderDetl erpOrderDetl : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", erpOrderDetl.getOrderId()); |
| | | map.put("value", erpOrderDetl.getOrderId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/erpOrderDetl/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<ErpOrderDetl> wrapper = new EntityWrapper<ErpOrderDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != erpOrderDetlService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(ErpOrderDetl.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.core.annotations.AppAuth; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.ErpOrder; |
| | | import com.zy.asrs.entity.ErpOrderDetl; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.entity.ErpMat; |
| | | import com.zy.asrs.service.ErpOrderDetlService; |
| | | import com.zy.asrs.service.ErpOrderService; |
| | | import com.zy.asrs.service.OpenService; |
| | | import com.zy.asrs.service.ErpMatService; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.web.BaseController; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/8 |
| | |
| | | |
| | | @Autowired |
| | | private OpenService openService; |
| | | @Autowired |
| | | private ErpMatService erpMatService; |
| | | @Autowired |
| | | private ErpOrderService erpOrderService; |
| | | @Autowired |
| | | private ErpOrderDetlService erpOrderDetlService; |
| | | @Value("${open-asrs.auth.app-id:wms_8f7c3d126a944e3ab5c89d21f4a7c6b2}") |
| | | private String openAppId; |
| | | |
| | | @Value("${open-asrs.auth.app-secret:D9f3A7xP1kLm8Q2tW5zH0sY6vR4bNcE7FjK3uM9pT2aL8qX6}") |
| | | private String openAppSecret; |
| | | |
| | | @Value("${open-asrs.auth.token-valid-minutes:30}") |
| | | private Integer tokenValidMinutes; |
| | | |
| | | private static final Map<String, TokenInfoParam> TOKEN_CACHE = new ConcurrentHashMap<>(); |
| | | |
| | | @PostMapping("/getToken") |
| | | public synchronized R getToken(@RequestBody(required = false) Map<String, String> param) { |
| | | log.info("{}接口被访问;请求数据:{}", "/getToken", JSON.toJSONString(param)); |
| | | if (Cools.isEmpty(param)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | |
| | | String appId = param.get("appId"); |
| | | String appSecret = param.get("appSecret"); |
| | | if (Cools.isEmpty(appId)) { |
| | | return R.error("参数[appId]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(appSecret)) { |
| | | return R.error("参数[appSecret]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(openAppId) || Cools.isEmpty(openAppSecret)) { |
| | | throw new CoolException("系统未配置open-asrs.auth.app-id或open-asrs.auth.app-secret"); |
| | | } |
| | | if (!openAppId.equals(appId) || !openAppSecret.equals(appSecret)) { |
| | | throw new CoolException("认证失败,请确认appId或appSecret无误!"); |
| | | } |
| | | |
| | | String token = UUID.randomUUID().toString().replace("-", ""); |
| | | long expireAt = System.currentTimeMillis() + tokenValidMinutes * 60L * 1000L; |
| | | TOKEN_CACHE.put(token, new TokenInfoParam(appId, expireAt)); |
| | | |
| | | Map<String, Object> result = new HashMap<>(); |
| | | result.put("token", token); |
| | | result.put("validTime", tokenValidMinutes); |
| | | return R.ok().add(result); |
| | | } |
| | | |
| | | public static boolean validToken(String authorization) { |
| | | if (Cools.isEmpty(authorization)) { |
| | | return false; |
| | | } |
| | | TokenInfoParam tokenInfo = TOKEN_CACHE.get(authorization); |
| | | if (tokenInfo == null) { |
| | | return false; |
| | | } |
| | | if (System.currentTimeMillis() > tokenInfo.getExpireAt()) { |
| | | TOKEN_CACHE.remove(authorization); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | @PostMapping("/order/matSync/default/v1") |
| | | @AppAuth(memo = "商品信息同步接口") |
| | | public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | /****************************************************************************/ |
| | | /********************************* 打包上线 **********************************/ |
| | | /****************************************************************************/ |
| | | @PostMapping("/erp/mat/sync") |
| | | public synchronized R erpMatSync(@RequestBody(required = false) List<Map<String, Object>> body, |
| | | HttpServletRequest request) { |
| | | auth(null, body, request); |
| | | if (Cools.isEmpty(body)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | openService.syncErpMat(body); |
| | | Map<String, Object> res = new HashMap<>(); |
| | | res.put("result", "SUCCESS"); |
| | | return R.ok().add(res); |
| | | } |
| | | |
| | | // @PostMapping("/order/pakin/new/package/v1") |
| | | // @AppAuth(memo = "打包上线接口") |
| | | // public synchronized R pakinOrderPackage(@RequestHeader(required = false) String appkey, |
| | | // @RequestBody(required = false) PackParam param, |
| | | // HttpServletRequest request) { |
| | | // auth(appkey, param, request); |
| | | // if (Cools.isEmpty(param)) { |
| | | // return R.parse(BaseRes.PARAM); |
| | | // } |
| | | // openService.packageUp(param); |
| | | // return R.ok(); |
| | | // } |
| | | @PostMapping("/erp/order/addPrd") |
| | | public synchronized R erpOrderAddPrd(@RequestBody Object body, |
| | | HttpServletRequest request) { |
| | | List<OrderDto> orders; |
| | | if (body instanceof List) { |
| | | orders = JSON.parseArray(JSON.toJSONString(body), OrderDto.class); |
| | | } else { |
| | | OrderDto dto = JSON.parseObject(JSON.toJSONString(body), OrderDto.class); |
| | | orders = new ArrayList<>(); |
| | | orders.add(dto); |
| | | } |
| | | auth(null, orders, request); |
| | | if (Cools.isEmpty(orders)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | return R.ok().add(openService.addErpOrder(orders)); |
| | | } |
| | | |
| | | @PostMapping("/erp/order/addQc") |
| | | public synchronized R erpOrderAddQc(@RequestBody Object body, |
| | | HttpServletRequest request) { |
| | | List<OrderDto> orders; |
| | | if (body instanceof List) { |
| | | orders = JSON.parseArray(JSON.toJSONString(body), OrderDto.class); |
| | | } else { |
| | | OrderDto dto = JSON.parseObject(JSON.toJSONString(body), OrderDto.class); |
| | | orders = new ArrayList<>(); |
| | | orders.add(dto); |
| | | } |
| | | auth(null, orders, request); |
| | | if (Cools.isEmpty(orders)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | return R.ok().add(openService.addErpOrder(orders)); |
| | | } |
| | | |
| | | @PostMapping("/erp/order/addSrm") |
| | | public synchronized R erpOrderAddSrm(@RequestBody Object body, |
| | | HttpServletRequest request) { |
| | | List<OrderDto> orders; |
| | | if (body instanceof List) { |
| | | orders = JSON.parseArray(JSON.toJSONString(body), OrderDto.class); |
| | | } else { |
| | | OrderDto dto = JSON.parseObject(JSON.toJSONString(body), OrderDto.class); |
| | | orders = new ArrayList<>(); |
| | | orders.add(dto); |
| | | } |
| | | auth(null, orders, request); |
| | | if (Cools.isEmpty(orders)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | return R.ok().add(openService.addErpOrder(orders)); |
| | | } |
| | | |
| | | @PostMapping("/MES/inventory/details") |
| | | public synchronized R mesInventoryDetails(@RequestBody(required = false) Map<String, Object> param, |
| | | HttpServletRequest request) throws IOException { |
| | | auth(null, param, request); |
| | | if (param == null) { |
| | | param = new HashMap<>(); |
| | | } |
| | | return R.ok().add(openService.mesInventoryDetails(param)); |
| | | } |
| | | |
| | | @PostMapping("/MES/inventory/summary") |
| | | public synchronized R mesInventorySummary(@RequestBody(required = false) Map<String, Object> param, |
| | | HttpServletRequest request) throws IOException { |
| | | auth(null, param, request); |
| | | if (param == null) { |
| | | param = new HashMap<>(); |
| | | } |
| | | return R.ok().add(openService.mesInventorySummary(param)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 添加入库单 |
| | |
| | | } |
| | | |
| | | private void auth(String appkey, Object obj, HttpServletRequest request) { |
| | | log.info("{}接口被访问;appkey:{};请求数据:{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj)); |
| | | log.info("{}接口被访问;token:{};请求数据:{}", "open/sensorType/list/auth/v1", request.getHeader("Authorization"), JSON.toJSONString(obj)); |
| | | request.setAttribute("cache", obj); |
| | | if (!auth) { |
| | | return; |
| | | } |
| | | if (Cools.isEmpty(appkey)) { |
| | | throw new CoolException("认证失败,请确认appkey无误!"); |
| | | String authorization = request.getHeader("Authorization"); |
| | | if (Cools.isEmpty(authorization)) { |
| | | authorization = request.getHeader("authorization"); |
| | | } |
| | | if (!APP_KEY_LIST.contains(appkey)) { |
| | | throw new CoolException("认证失败,请确认appkey无误!"); |
| | | if (!Cools.isEmpty(authorization)) { |
| | | String val = authorization.trim(); |
| | | if (val.toLowerCase().startsWith("bearer")) { |
| | | int idx = val.indexOf(' '); |
| | | authorization = idx > -1 ? val.substring(idx + 1).trim() : ""; |
| | | } else { |
| | | authorization = val; |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(authorization)) { |
| | | if (validToken(authorization)) { |
| | | return; |
| | | } |
| | | throw new CoolException("认证失败,请确认Authorization无误!"); |
| | | } |
| | | throw new CoolException("认证失败,请确认Authorization无误!"); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_erp_mat") |
| | | public class ErpMat implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 自增id |
| | | */ |
| | | @ApiModelProperty(value= "自增id") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 物料编码 |
| | | */ |
| | | @ApiModelProperty(value= "物料编码") |
| | | private String matNr; |
| | | |
| | | /** |
| | | * 物料名称 |
| | | */ |
| | | @ApiModelProperty(value= "物料名称") |
| | | private String makTx; |
| | | |
| | | /** |
| | | * 物料分组编码 |
| | | */ |
| | | @ApiModelProperty(value= "物料分组编码") |
| | | @TableField("group_id") |
| | | private String groupId; |
| | | |
| | | /** |
| | | * 物料分组 |
| | | */ |
| | | @ApiModelProperty(value= "物料分组") |
| | | @TableField("group_name") |
| | | private String groupName; |
| | | |
| | | /** |
| | | * 规格 |
| | | */ |
| | | @ApiModelProperty(value= "规格") |
| | | private String spec; |
| | | |
| | | /** |
| | | * 型号 |
| | | */ |
| | | @ApiModelProperty(value= "型号") |
| | | private String model; |
| | | |
| | | /** |
| | | * 重量 |
| | | */ |
| | | @ApiModelProperty(value= "重量") |
| | | private Double weight; |
| | | |
| | | /** |
| | | * 颜色 |
| | | */ |
| | | @ApiModelProperty(value= "颜色") |
| | | private String color; |
| | | |
| | | /** |
| | | * 尺寸 |
| | | */ |
| | | @ApiModelProperty(value= "尺寸") |
| | | private String size; |
| | | |
| | | /** |
| | | * 单位 |
| | | */ |
| | | @ApiModelProperty(value= "单位") |
| | | private String unit; |
| | | |
| | | /** |
| | | * 描述 |
| | | */ |
| | | @ApiModelProperty(value= "描述") |
| | | private String describe; |
| | | |
| | | /** |
| | | * 仓库Id |
| | | */ |
| | | @ApiModelProperty(value= "仓库Id") |
| | | @TableField("wareHouse_id") |
| | | private String wareHouseId; |
| | | |
| | | /** |
| | | * 操作类型,1 新增(默认);2 修改;3 禁用;4 启用; |
| | | */ |
| | | @ApiModelProperty(value= "操作类型,1 新增(默认);2 修改;3 禁用;4 启用;") |
| | | @TableField("operate_type") |
| | | private Integer operateType; |
| | | |
| | | /** |
| | | * 1:已发送 0:待发送 |
| | | */ |
| | | @ApiModelProperty(value= "1:已发送 0:待发送") |
| | | @TableField("send_status") |
| | | private Integer sendStatus; |
| | | |
| | | public ErpMat() {} |
| | | |
| | | public ErpMat(String matNr,String makTx,String groupId,String groupName,String spec,String model,Double weight,String color,String size,String unit,String describe,String wareHouseId,Integer operateType,Integer sendStatus) { |
| | | this.matNr = matNr; |
| | | this.makTx = makTx; |
| | | this.groupId = groupId; |
| | | this.groupName = groupName; |
| | | this.spec = spec; |
| | | this.model = model; |
| | | this.weight = weight; |
| | | this.color = color; |
| | | this.size = size; |
| | | this.unit = unit; |
| | | this.describe = describe; |
| | | this.wareHouseId = wareHouseId; |
| | | this.operateType = operateType; |
| | | this.sendStatus = sendStatus; |
| | | } |
| | | |
| | | // ErpMat erpMat = new ErpMat( |
| | | // null, // 物料编码[非空] |
| | | // null, // 物料名称[非空] |
| | | // null, // 物料分组编码 |
| | | // null, // 物料分组 |
| | | // null, // 规格 |
| | | // null, // 型号 |
| | | // null, // 重量 |
| | | // null, // 颜色 |
| | | // null, // 尺寸 |
| | | // null, // 单位 |
| | | // null, // 描述 |
| | | // null, // 仓库Id |
| | | // null, // 操作类型,1 新增(默认);2 修改;3 禁用;4 启用; |
| | | // null // 1:已发送 0:待发送 |
| | | // ); |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_erp_order") |
| | | public class ErpOrder implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 自增id |
| | | */ |
| | | @ApiModelProperty(value= "自增id") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 订单编码 |
| | | */ |
| | | @ApiModelProperty(value= "订单编码") |
| | | @TableField("order_no") |
| | | private String orderNo; |
| | | |
| | | /** |
| | | * 订单类型,1 出库单;2 入库单;3 调拨单; |
| | | */ |
| | | @ApiModelProperty(value= "订单类型,1 出库单;2 入库单;3 调拨单;") |
| | | @TableField("order_type") |
| | | private Integer orderType; |
| | | |
| | | /** |
| | | * 业务类型 |
| | | */ |
| | | @ApiModelProperty(value= "业务类型") |
| | | @TableField("wk_type") |
| | | private String wkType; |
| | | |
| | | /** |
| | | * 业务时间 |
| | | */ |
| | | @ApiModelProperty(value= "业务时间") |
| | | @TableField("business_time") |
| | | private Long businessTime; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty(value= "创建时间") |
| | | @TableField("create_time") |
| | | private Long createTime; |
| | | |
| | | /** |
| | | * 仓库id |
| | | */ |
| | | @ApiModelProperty(value= "仓库id") |
| | | @TableField("warehouse_id") |
| | | private String warehouseId; |
| | | |
| | | /** |
| | | * 操作类型,1 新增(默认);2 修改;3 取消;4 关闭; |
| | | */ |
| | | @ApiModelProperty(value= "操作类型,1 新增(默认);2 修改;3 取消;4 关闭;") |
| | | @TableField("operate_type") |
| | | private Integer operateType; |
| | | |
| | | /** |
| | | * 发送状态1:已发送 0:待发送 |
| | | */ |
| | | @ApiModelProperty(value= "发送状态1:已发送 0:待发送") |
| | | @TableField("send_status") |
| | | private Integer sendStatus; |
| | | |
| | | public ErpOrder() {} |
| | | |
| | | public ErpOrder(Integer id,String orderNo,Integer orderType,String wkType,Long businessTime,Long createTime,String warehouseId,Integer operateType,Integer sendStatus) { |
| | | this.id = id; |
| | | this.orderNo = orderNo; |
| | | this.orderType = orderType; |
| | | this.wkType = wkType; |
| | | this.businessTime = businessTime; |
| | | this.createTime = createTime; |
| | | this.warehouseId = warehouseId; |
| | | this.operateType = operateType; |
| | | this.sendStatus = sendStatus; |
| | | } |
| | | |
| | | // ErpOrder erpOrder = new ErpOrder( |
| | | // null, // 自增id[非空] |
| | | // null, // 订单编码[非空] |
| | | // null, // 订单类型,1 出库单;2 入库单;3 调拨单;[非空] |
| | | // null, // 业务类型[非空] |
| | | // null, // 业务时间[非空] |
| | | // null, // 创建时间[非空] |
| | | // null, // 仓库id[非空] |
| | | // null, // 操作类型,1 新增(默认);2 修改;3 取消;4 关闭; |
| | | // null // 发送状态1:已发送 0:待发送 |
| | | // ); |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_erp_order_detl") |
| | | public class ErpOrderDetl implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 单据id |
| | | */ |
| | | @ApiModelProperty(value= "单据id") |
| | | @TableField("order_id") |
| | | private Integer orderId; |
| | | |
| | | /** |
| | | * 行内码 |
| | | */ |
| | | @ApiModelProperty(value= "行内码") |
| | | @TableField("line_id") |
| | | private String lineId; |
| | | |
| | | /** |
| | | * 物料编码 |
| | | */ |
| | | @ApiModelProperty(value= "物料编码") |
| | | private String matNr; |
| | | |
| | | /** |
| | | * 物料名称 |
| | | */ |
| | | @ApiModelProperty(value= "物料名称") |
| | | private String makTx; |
| | | |
| | | /** |
| | | * 数量 |
| | | */ |
| | | @ApiModelProperty(value= "数量") |
| | | private Long anfme; |
| | | |
| | | /** |
| | | * 规格 |
| | | */ |
| | | @ApiModelProperty(value= "规格") |
| | | private String spec; |
| | | |
| | | /** |
| | | * 型号 |
| | | */ |
| | | @ApiModelProperty(value= "型号") |
| | | private String model; |
| | | |
| | | /** |
| | | * 单位 |
| | | */ |
| | | @ApiModelProperty(value= "单位") |
| | | private String unit; |
| | | |
| | | /** |
| | | * 批次号 |
| | | */ |
| | | @ApiModelProperty(value= "批次号") |
| | | private String batch; |
| | | |
| | | /** |
| | | * 计划跟踪号 |
| | | */ |
| | | @ApiModelProperty(value= "计划跟踪号") |
| | | @TableField("plan_no") |
| | | private String planNo; |
| | | |
| | | /** |
| | | * 质检状态,1合格0不合格3让步接收9待检 |
| | | */ |
| | | @ApiModelProperty(value= "质检状态,1合格0不合格3让步接收9待检") |
| | | @TableField("qc_status") |
| | | private Integer qcStatus; |
| | | |
| | | public ErpOrderDetl() {} |
| | | |
| | | public ErpOrderDetl(Integer orderId,String lineId,String matNr,String makTx,Long anfme,String spec,String model,String unit,String batch,String planNo,Integer qcStatus) { |
| | | this.orderId = orderId; |
| | | this.lineId = lineId; |
| | | this.matNr = matNr; |
| | | this.makTx = makTx; |
| | | this.anfme = anfme; |
| | | this.spec = spec; |
| | | this.model = model; |
| | | this.unit = unit; |
| | | this.batch = batch; |
| | | this.planNo = planNo; |
| | | this.qcStatus = qcStatus; |
| | | } |
| | | |
| | | // ErpOrderDetl erpOrderDetl = new ErpOrderDetl( |
| | | // null, // 单据id[非空] |
| | | // null, // 行内码[非空] |
| | | // null, // 物料编码[非空] |
| | | // null, // 物料名称[非空] |
| | | // null, // 数量[非空] |
| | | // null, // 规格 |
| | | // null, // 型号 |
| | | // null, // 单位 |
| | | // null, // 批次号 |
| | | // null, // 计划跟踪号 |
| | | // null // 质检状态,1合格0不合格3让步接收9待检 |
| | | // ); |
| | | |
| | | |
| | | } |
| | |
| | | public List<MatParam> matDetails; |
| | | |
| | | @Data |
| | | public class MatParam{ |
| | | public static class MatParam{ |
| | | /** |
| | | * 商品编号 |
| | | */ |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.zy.asrs.entity.ErpOrder; |
| | | import com.zy.asrs.entity.ErpOrderDetl; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class OrderDto { |
| | | private String orderNo; |
| | | private Integer orderType; |
| | | private String wkType; |
| | | private Long businessTime; |
| | | private Long createTime; |
| | | private String wareHouseId; |
| | | private Integer operateType; |
| | | private Integer sendStatus; |
| | | private List<ErpOrderDetl> orderItems; |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class TokenInfoParam { |
| | | private String appId; |
| | | private long expireAt; |
| | | |
| | | public TokenInfoParam(String appId, long expireAt) { |
| | | this.appId = appId; |
| | | this.expireAt = expireAt; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.ErpMat; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface ErpMatMapper extends BaseMapper<ErpMat> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.ErpOrderDetl; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface ErpOrderDetlMapper extends BaseMapper<ErpOrderDetl> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.ErpOrder; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface ErpOrderMapper extends BaseMapper<ErpOrder> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.ErpMat; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface ErpMatService extends IService<ErpMat> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.ErpOrderDetl; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface ErpOrderDetlService extends IService<ErpOrderDetl> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.ErpOrder; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface ErpOrderService extends IService<ErpOrder> { |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.result.OpenOrderCompeteResult; |
| | | import com.zy.asrs.entity.result.StockVo; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface OpenService { |
| | | |
| | |
| | | * @param param |
| | | */ |
| | | void syncMat(MatSyncParam param); |
| | | |
| | | void syncErpMat(List<Map<String, Object>> body); |
| | | |
| | | Map<String, Object> addErpOrder(List<OrderDto> orders); |
| | | |
| | | List<Map<String, Object>> mesInventoryDetails(Map<String, Object> param) throws IOException; |
| | | |
| | | List<Map<String, Object>> mesInventorySummary(Map<String, Object> param) throws IOException; |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.ErpMatMapper; |
| | | import com.zy.asrs.entity.ErpMat; |
| | | import com.zy.asrs.service.ErpMatService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("erpMatService") |
| | | public class ErpMatServiceImpl extends ServiceImpl<ErpMatMapper, ErpMat> implements ErpMatService { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.ErpOrderDetlMapper; |
| | | import com.zy.asrs.entity.ErpOrderDetl; |
| | | import com.zy.asrs.service.ErpOrderDetlService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("erpOrderDetlService") |
| | | public class ErpOrderDetlServiceImpl extends ServiceImpl<ErpOrderDetlMapper, ErpOrderDetl> implements ErpOrderDetlService { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.ErpOrderMapper; |
| | | import com.zy.asrs.entity.ErpOrder; |
| | | import com.zy.asrs.service.ErpOrderService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("erpOrderService") |
| | | public class ErpOrderServiceImpl extends ServiceImpl<ErpOrderMapper, ErpOrder> implements ErpOrderService { |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.result.StockVo; |
| | | import com.zy.asrs.mapper.TagMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.service.ErpMatService; |
| | | import com.zy.asrs.service.ErpOrderService; |
| | | import com.zy.asrs.service.ErpOrderDetlService; |
| | | import com.zy.asrs.utils.MatUtils; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.common.utils.NodeUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.PlatformTransactionManager; |
| | | import org.springframework.transaction.TransactionDefinition; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.support.TransactionTemplate; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/9 |
| | |
| | | private TagService tagService; |
| | | @Autowired |
| | | private TagMapper tagMapper; |
| | | |
| | | @Autowired |
| | | private ErpMatService erpMatService; |
| | | @Autowired |
| | | private ErpOrderService erpOrderService; |
| | | @Autowired |
| | | private ErpOrderDetlService erpOrderDetlService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private PlatformTransactionManager transactionManager; |
| | | @Override |
| | | @Transactional |
| | | public void pakinOrderCreate(OpenOrderPakinParam param) { |
| | |
| | | } else { |
| | | tagId = tagService.getTop().getId(); |
| | | } |
| | | mat.sync(param); |
| | | mat.sync(matParam); |
| | | // mat.setMatnr(param.getMatnr()); |
| | | // mat.setMaktx(param.getMaktx()); |
| | | // mat.setSpecs(param.getSpecs()); |
| | |
| | | log.info("同步新物料[商品编号:{}]", mat.getMatnr()); |
| | | } |
| | | } else { |
| | | mat.sync(param); |
| | | mat.sync(matParam); |
| | | if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { |
| | | throw new CoolException("更新已存在商品信息失败,请联系管理员"); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void syncErpMat(List<Map<String, Object>> body) { |
| | | if (Cools.isEmpty(body)) { |
| | | return; |
| | | } |
| | | int count = 0; |
| | | for (Map<String, Object> m : body) { |
| | | Object matNrObj = m.get("matNr"); |
| | | Object makTxObj = m.get("makTx"); |
| | | if (Cools.isEmpty(matNrObj) || Cools.isEmpty(makTxObj)) { |
| | | continue; |
| | | } |
| | | ErpMat erpMat = new ErpMat(); |
| | | erpMat.setMatNr(String.valueOf(matNrObj)); |
| | | erpMat.setMakTx(String.valueOf(makTxObj)); |
| | | Object groupIdObj = m.get("groupId"); |
| | | if (!Cools.isEmpty(groupIdObj)) { |
| | | erpMat.setGroupId(String.valueOf(groupIdObj)); |
| | | } |
| | | Object groupNameObj = m.get("groupName"); |
| | | if (!Cools.isEmpty(groupNameObj)) { |
| | | erpMat.setGroupName(String.valueOf(groupNameObj)); |
| | | } |
| | | Object specObj = m.get("spec"); |
| | | if (!Cools.isEmpty(specObj)) { |
| | | erpMat.setSpec(String.valueOf(specObj)); |
| | | } |
| | | Object modelObj = m.get("model"); |
| | | if (!Cools.isEmpty(modelObj)) { |
| | | erpMat.setModel(String.valueOf(modelObj)); |
| | | } |
| | | Object weightObj = m.get("weight"); |
| | | if (!Cools.isEmpty(weightObj)) { |
| | | Double w = null; |
| | | if (weightObj instanceof Number) { |
| | | w = ((Number) weightObj).doubleValue(); |
| | | } else { |
| | | try { |
| | | w = Double.valueOf(String.valueOf(weightObj)); |
| | | } catch (Exception ignored) {} |
| | | } |
| | | erpMat.setWeight(w); |
| | | } |
| | | Object colorObj = m.get("color"); |
| | | if (!Cools.isEmpty(colorObj)) { |
| | | erpMat.setColor(String.valueOf(colorObj)); |
| | | } |
| | | Object sizeObj = m.get("size"); |
| | | if (!Cools.isEmpty(sizeObj)) { |
| | | erpMat.setSize(String.valueOf(sizeObj)); |
| | | } |
| | | Object unitObj = m.get("unit"); |
| | | if (!Cools.isEmpty(unitObj)) { |
| | | erpMat.setUnit(String.valueOf(unitObj)); |
| | | } |
| | | Object describleObj = m.get("describle"); |
| | | if (!Cools.isEmpty(describleObj)) { |
| | | erpMat.setDescribe(String.valueOf(describleObj)); |
| | | } |
| | | Object wareHouseIdObj = m.get("wareHouseId"); |
| | | if (!Cools.isEmpty(wareHouseIdObj)) { |
| | | erpMat.setWareHouseId(String.valueOf(wareHouseIdObj)); |
| | | } |
| | | // 调用外部接口校验 |
| | | String syncError = null; |
| | | String whId = erpMat.getWareHouseId(); |
| | | if (!Cools.isEmpty(whId)) { |
| | | if ("WH01".equals(whId)) { |
| | | syncError = syncToWarehouse1(erpMat); |
| | | } else if ("WH2".equals(whId)) { |
| | | syncError = syncToWarehouse2(erpMat); |
| | | } else if ("WH3".equals(whId)) { |
| | | syncError = syncToWarehouse3(erpMat); |
| | | } else { |
| | | callApiLogSave(null, null, "未找到对应仓库编码!!", true); |
| | | throw new CoolException("同步外部接口失败,仓库ID:" + whId + ",错误信息:未找到对应仓库编号" ); |
| | | } |
| | | } |
| | | |
| | | if (syncError != null) { |
| | | // 如果同步失败,则不插入数据库,抛异常回滚或者跳过(当前逻辑为抛异常,因为是事务整体) |
| | | // 若要部分成功,需要调整事务策略。这里假设要求全部成功。 |
| | | throw new CoolException("同步外部接口失败,仓库ID:" + whId + ",物料:" + erpMat.getMatNr() + ",错误信息:" + syncError); |
| | | } |
| | | |
| | | Object operateTypeObj = m.get("operateType"); |
| | | if (!Cools.isEmpty(operateTypeObj)) { |
| | | Integer ot = null; |
| | | if (operateTypeObj instanceof Number) { |
| | | ot = ((Number) operateTypeObj).intValue(); |
| | | } else { |
| | | try { |
| | | ot = Integer.valueOf(String.valueOf(operateTypeObj)); |
| | | } catch (Exception ignored) {} |
| | | } |
| | | erpMat.setOperateType(ot); |
| | | } |
| | | erpMat.setSendStatus(1); |
| | | boolean ok = erpMatService.insert(erpMat); |
| | | if (ok) { |
| | | count++; |
| | | } |
| | | } |
| | | if (count <= 0) { |
| | | throw new CoolException("同步物料失败,无有效数据插入"); |
| | | } |
| | | } |
| | | |
| | | // 模拟调用仓库1接口 |
| | | private String syncToWarehouse1(ErpMat mat) { |
| | | log.info("Calling Warehouse 1 API for mat: {}", mat.getMatNr()); |
| | | return callMatSyncApi(mat, "http://localhost:8081"); |
| | | } |
| | | |
| | | // 模拟调用仓库2接口 |
| | | private String syncToWarehouse2(ErpMat mat) { |
| | | log.info("Calling Warehouse 2 API for mat: {}", mat.getMatNr()); |
| | | return callMatSyncApi(mat, "http://localhost:8080"); |
| | | } |
| | | |
| | | // 模拟调用仓库3接口 |
| | | private String syncToWarehouse3(ErpMat mat) { |
| | | log.info("Calling Warehouse 3 API for mat: {}", mat.getMatNr()); |
| | | return callMatSyncApi(mat, "http://localhost:8080"); |
| | | } |
| | | |
| | | private String callMatSyncApi(ErpMat mat, String baseUrl) { |
| | | try { |
| | | // 构造请求参数 |
| | | MatSyncParam param = new MatSyncParam(); |
| | | List<MatSyncParam.MatParam> list = new ArrayList<>(); |
| | | MatSyncParam.MatParam matParam = new MatSyncParam.MatParam(); |
| | | Date now = new Date(); |
| | | |
| | | // 字段映射 |
| | | matParam.setMatnr(mat.getMatNr()); |
| | | matParam.setMaktx(mat.getMakTx()); |
| | | matParam.setSpecs(mat.getSpec()); |
| | | matParam.setModel(mat.getModel()); |
| | | matParam.setWeight(mat.getWeight()); |
| | | matParam.setColor(mat.getColor()); |
| | | matParam.setUnit(mat.getUnit()); |
| | | matParam.setMemo(mat.getDescribe()); |
| | | matParam.setGroupCode(mat.getGroupId()); |
| | | matParam.setGroupName(mat.getGroupName()); |
| | | |
| | | list.add(matParam); |
| | | param.setMatDetails(list); |
| | | param.setCreateTime(String.valueOf(now)); |
| | | String path = "/lfdwms/open/asrs/order/matSync/default/v1"; |
| | | String json = JSON.toJSONString(param); |
| | | |
| | | Map<String, Object> headers = new HashMap<>(); |
| | | headers.put("appkey", "ea1f0459efc02a79f046f982767939ae"); |
| | | // headers.put("x-acgw-identity", "your_identity"); |
| | | String response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(baseUrl) |
| | | .setPath(path) |
| | | .setJson(json) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | if (Cools.isEmpty(response)) { |
| | | return "接口无响应"; |
| | | } |
| | | |
| | | JSONObject jsonResponse = JSON.parseObject(response); |
| | | if (jsonResponse == null) { |
| | | return "接口响应格式错误"; |
| | | } |
| | | |
| | | // 根据实际返回结构判断成功失败 |
| | | // 假设 code == 0 或 200 为成功 |
| | | Integer code = jsonResponse.getInteger("code"); |
| | | if (code != null && (code == 0 || code == 200)) { |
| | | return null; // 成功返回 null |
| | | } else { |
| | | return jsonResponse.getString("msg") != null ? jsonResponse.getString("msg") : "未知错误,code=" + code; |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("Call sync api error", e); |
| | | return "接口调用异常:" + e.getMessage(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> addErpOrder(List<OrderDto> orders) { |
| | | if (Cools.isEmpty(orders)) { |
| | | Map<String, Object> res = new HashMap<>(); |
| | | res.put("result", "FAIL"); |
| | | res.put("successOrders", new ArrayList<>()); |
| | | res.put("failOrders", new ArrayList<>()); |
| | | res.put("successCount", 0); |
| | | res.put("failCount", 0); |
| | | return res; |
| | | } |
| | | |
| | | TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); |
| | | transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); |
| | | |
| | | List<String> successOrders = new ArrayList<>(); |
| | | List<Map<String, Object>> failOrders = new ArrayList<>(); |
| | | |
| | | for (OrderDto dto : orders) { |
| | | String orderNo = dto != null ? dto.getOrderNo() : null; |
| | | try { |
| | | transactionTemplate.execute(status -> { |
| | | if (dto == null) { |
| | | throw new CoolException("订单参数不完整"); |
| | | } |
| | | ErpOrder order = new ErpOrder(); |
| | | order.setOrderNo(dto.getOrderNo()); |
| | | order.setOrderType(dto.getOrderType()); |
| | | order.setWkType(dto.getWkType()); |
| | | order.setBusinessTime(dto.getBusinessTime()); |
| | | order.setCreateTime(dto.getCreateTime()); |
| | | order.setWarehouseId(dto.getWareHouseId()); |
| | | order.setOperateType(dto.getOperateType()); |
| | | order.setSendStatus(dto.getSendStatus() != null ? dto.getSendStatus() : 0); |
| | | |
| | | List<ErpOrderDetl> detls = dto.getOrderItems(); |
| | | |
| | | if (Cools.isEmpty(order.getOrderNo()) || order.getOrderType() == null |
| | | || Cools.isEmpty(order.getWkType()) || order.getBusinessTime() == null || order.getCreateTime() == null |
| | | || Cools.isEmpty(order.getWarehouseId())) { |
| | | throw new CoolException("订单参数不完整"); |
| | | } |
| | | if (Cools.isEmpty(detls)) { |
| | | throw new CoolException("订单明细为空"); |
| | | } |
| | | |
| | | String syncError = null; |
| | | String whId = order.getWarehouseId(); |
| | | Integer orderType = order.getOrderType(); |
| | | |
| | | if (!Cools.isEmpty(whId)) { |
| | | if ("WH01".equals(whId)) { |
| | | syncError = syncOrderToWarehouse1(order, detls, orderType); |
| | | } else if ("WH2".equals(whId)) { |
| | | syncError = syncOrderToWarehouse2(order, detls, orderType); |
| | | } else if ("WH3".equals(whId)) { |
| | | syncError = syncOrderToWarehouse3(order, detls, orderType); |
| | | } else { |
| | | throw new CoolException("未找到对应仓库编号"); |
| | | } |
| | | } |
| | | |
| | | if (syncError != null) { |
| | | throw new CoolException(syncError); |
| | | } |
| | | |
| | | if (!erpOrderService.insert(order)) { |
| | | throw new CoolException("订单插入失败"); |
| | | } |
| | | if (order.getId() == null) { |
| | | throw new CoolException("订单插入失败,未返回orderId"); |
| | | } |
| | | |
| | | for (ErpOrderDetl detl : detls) { |
| | | if (detl == null || Cools.isEmpty(detl.getLineId()) || Cools.isEmpty(detl.getMatNr()) |
| | | || Cools.isEmpty(detl.getMakTx()) || detl.getAnfme() == null) { |
| | | throw new CoolException("明细参数不完整"); |
| | | } |
| | | detl.setOrderId(order.getId()); |
| | | if (!erpOrderDetlService.insert(detl)) { |
| | | throw new CoolException("订单明细插入失败"); |
| | | } |
| | | } |
| | | return null; |
| | | }); |
| | | successOrders.add(orderNo); |
| | | } catch (Exception e) { |
| | | Map<String, Object> fail = new HashMap<>(); |
| | | fail.put("orderNo", orderNo); |
| | | fail.put("msg", e.getMessage()); |
| | | failOrders.add(fail); |
| | | } |
| | | } |
| | | |
| | | Map<String, Object> res = new HashMap<>(); |
| | | res.put("successOrders", successOrders); |
| | | res.put("failOrders", failOrders); |
| | | res.put("successCount", successOrders.size()); |
| | | res.put("failCount", failOrders.size()); |
| | | res.put("result", failOrders.isEmpty() ? "SUCCESS" : (successOrders.isEmpty() ? "FAIL" : "PART_SUCCESS")); |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> mesInventoryDetails(Map<String, Object> param) throws IOException { |
| | | String wareHouseId = param != null ? String.valueOf(param.get("wareHouseId")) : null; |
| | | if ("null".equalsIgnoreCase(wareHouseId)) wareHouseId = null; |
| | | |
| | | List<String> whIds = new ArrayList<>(); |
| | | if (Cools.isEmpty(wareHouseId)) { |
| | | whIds.add("WH01"); |
| | | whIds.add("WH02"); |
| | | whIds.add("WH03"); |
| | | } else { |
| | | whIds.add(wareHouseId); |
| | | } |
| | | |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (String whId : whIds) { |
| | | String baseUrl = getWarehouseBaseUrl(whId); |
| | | if (Cools.isEmpty(baseUrl)) { |
| | | throw new CoolException("未找到对应仓库编号"); |
| | | } |
| | | Map<String, Object> payload = param == null ? new HashMap<>() : new HashMap<>(param); |
| | | payload.put("wareHouseId", whId); |
| | | List<Map<String, Object>> data = callMesInventoryApi(baseUrl, "/lfdwms/open/asrs/MES/inventory/details", payload); |
| | | if (!Cools.isEmpty(data)) { |
| | | result.addAll(data); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> mesInventorySummary(Map<String, Object> param) throws IOException { |
| | | String wareHouseId = param != null ? String.valueOf(param.get("wareHouseId")) : null; |
| | | if ("null".equalsIgnoreCase(wareHouseId)) wareHouseId = null; |
| | | |
| | | List<String> whIds = new ArrayList<>(); |
| | | if (Cools.isEmpty(wareHouseId)) { |
| | | whIds.add("WH01"); |
| | | whIds.add("WH02"); |
| | | whIds.add("WH03"); |
| | | } else { |
| | | whIds.add(wareHouseId); |
| | | } |
| | | |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (String whId : whIds) { |
| | | String baseUrl = getWarehouseBaseUrl(whId); |
| | | if (Cools.isEmpty(baseUrl)) { |
| | | throw new CoolException("未找到对应仓库编号"); |
| | | } |
| | | Map<String, Object> payload = param == null ? new HashMap<>() : new HashMap<>(param); |
| | | payload.put("wareHouseId", whId); |
| | | List<Map<String, Object>> data = callMesInventoryApi(baseUrl, "/lfdwms/open/asrs/MES/inventory/summary", payload); |
| | | if (!Cools.isEmpty(data)) { |
| | | result.addAll(data); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private String getWarehouseBaseUrl(String wareHouseId) { |
| | | if (Cools.isEmpty(wareHouseId)) { |
| | | return null; |
| | | } |
| | | String wh = wareHouseId.trim(); |
| | | if ("WH01".equalsIgnoreCase(wh) || "WH1".equalsIgnoreCase(wh)) { |
| | | return "http://localhost:8081"; |
| | | } |
| | | if ("WH02".equalsIgnoreCase(wh) || "WH2".equalsIgnoreCase(wh)) { |
| | | return "http://localhost:8080"; |
| | | } |
| | | if ("WH03".equalsIgnoreCase(wh) || "WH3".equalsIgnoreCase(wh)) { |
| | | return "http://localhost:8080"; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private List<Map<String, Object>> callMesInventoryApi(String baseUrl, String path, Map<String, Object> payload) throws IOException { |
| | | String json = JSON.toJSONString(payload == null ? new HashMap<>() : payload); |
| | | Map<String, Object> headers = new HashMap<>(); |
| | | headers.put("appkey", "ea1f0459efc02a79f046f982767939ae"); |
| | | String response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(baseUrl) |
| | | .setPath(path) |
| | | .setJson(json) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | if (Cools.isEmpty(response)) { |
| | | throw new CoolException("接口无响应"); |
| | | } |
| | | JSONObject jsonResponse = JSON.parseObject(response); |
| | | if (jsonResponse == null) { |
| | | throw new CoolException("接口响应格式错误"); |
| | | } |
| | | Integer code = jsonResponse.getInteger("code"); |
| | | if (code != null && (code == 0 || code == 200)) { |
| | | Object data = jsonResponse.get("data"); |
| | | if (data == null) { |
| | | return new ArrayList<>(); |
| | | } |
| | | if (data instanceof List) { |
| | | return JSON.parseObject(JSON.toJSONString(data), List.class); |
| | | } |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | Map<String, Object> one = JSON.parseObject(JSON.toJSONString(data), Map.class); |
| | | if (one != null) { |
| | | list.add(one); |
| | | } |
| | | return list; |
| | | } |
| | | String msg = jsonResponse.getString("msg"); |
| | | throw new CoolException(!Cools.isEmpty(msg) ? msg : "未知错误,code=" + code); |
| | | } |
| | | |
| | | // 模拟调用仓库1接口 |
| | | private String syncOrderToWarehouse1(ErpOrder order, List<ErpOrderDetl> details, Integer orderType) { |
| | | log.info("Calling Warehouse 1 API for order: {}", order.getOrderNo()); |
| | | return callOrderSyncApi(order, details, orderType, "http://localhost:8081"); |
| | | } |
| | | |
| | | // 模拟调用仓库2接口 |
| | | private String syncOrderToWarehouse2(ErpOrder order, List<ErpOrderDetl> details, Integer orderType) { |
| | | log.info("Calling Warehouse 2 API for order: {}", order.getOrderNo()); |
| | | return callOrderSyncApi(order, details, orderType, "http://localhost:8080"); |
| | | } |
| | | |
| | | // 模拟调用仓库3接口 |
| | | private String syncOrderToWarehouse3(ErpOrder order, List<ErpOrderDetl> details, Integer orderType) { |
| | | log.info("Calling Warehouse 3 API for order: {}", order.getOrderNo()); |
| | | return callOrderSyncApi(order, details, orderType, "http://localhost:8080"); |
| | | } |
| | | |
| | | private String callOrderSyncApi(ErpOrder order, List<ErpOrderDetl> details, Integer orderType, String baseUrl) { |
| | | try { |
| | | // 根据 orderType 判断接口路径 |
| | | // 假设 1=出库,2=入库(请根据实际业务调整,这里按用户描述逻辑实现) |
| | | // 用户描述:若是入库单则调用order/pakin/default/v1,若是出库order/pakout/default/v1 |
| | | // 假设 orderType 2 为入库,1 或 3 为出库(需确认 3 调拨单属于哪类,暂归为出库或不处理) |
| | | |
| | | String path; |
| | | String json; |
| | | |
| | | if (orderType == 2) { |
| | | // 入库单 |
| | | path = "/lfdwms/open/asrs/order/pakin/default/v1"; |
| | | OpenOrderPakinParam param = new OpenOrderPakinParam(); |
| | | param.setOrderNo(order.getOrderNo()); |
| | | // 这里可能需要映射 wkType 到 orderType 字符串,或者直接用 |
| | | param.setOrderType(order.getWkType()); |
| | | param.setOrderTime(DateUtils.convert(new Date(order.getBusinessTime()))); |
| | | |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | if (!Cools.isEmpty(details)) { |
| | | for (ErpOrderDetl d : details) { |
| | | DetlDto dto = new DetlDto(); |
| | | dto.setMatnr(d.getMatNr()); |
| | | // 如果有 batch 字段则设置,OpenOrderPakinParam 的 DetlDto 可能需要确认字段 |
| | | dto.setBatch(d.getBatch()); |
| | | dto.setAnfme(d.getAnfme() != null ? d.getAnfme().doubleValue() : 0.0); |
| | | // 其他字段映射... |
| | | detlDtos.add(dto); |
| | | } |
| | | } |
| | | param.setOrderDetails(detlDtos); |
| | | json = JSON.toJSONString(param); |
| | | |
| | | } else if (orderType == 1 || orderType == 3) { |
| | | // 出库单 |
| | | path = "/lfdwms/open/asrs/order/pakout/default/v1"; |
| | | OpenOrderPakoutParam param = new OpenOrderPakoutParam(); |
| | | param.setOrderNo(order.getOrderNo()); |
| | | param.setOrderType(order.getWkType()); |
| | | param.setOrderTime(DateUtils.convert(new Date(order.getBusinessTime()))); |
| | | param.setLgort("5006"); // 必填校验要求 |
| | | |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | if (!Cools.isEmpty(details)) { |
| | | for (ErpOrderDetl d : details) { |
| | | DetlDto dto = new DetlDto(); |
| | | dto.setMatnr(d.getMatNr()); |
| | | dto.setBatch(d.getBatch()); |
| | | dto.setAnfme(d.getAnfme() != null ? d.getAnfme().doubleValue() : 0.0); |
| | | detlDtos.add(dto); |
| | | } |
| | | } |
| | | param.setOrderDetails(detlDtos); |
| | | json = JSON.toJSONString(param); |
| | | } else { |
| | | return "未知的订单类型:" + orderType; |
| | | } |
| | | |
| | | Map<String, Object> headers = new HashMap<>(); |
| | | headers.put("appkey", "ea1f0459efc02a79f046f982767939ae"); |
| | | String response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(baseUrl) |
| | | .setPath(path) |
| | | .setJson(json) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | if (Cools.isEmpty(response)) { |
| | | return "接口无响应"; |
| | | } |
| | | |
| | | JSONObject jsonResponse = JSON.parseObject(response); |
| | | if (jsonResponse == null) { |
| | | return "接口响应格式错误"; |
| | | } |
| | | |
| | | Integer code = jsonResponse.getInteger("code"); |
| | | if (code != null && (code == 0 || code == 200)) { |
| | | return null; |
| | | } else { |
| | | return jsonResponse.getString("msg") != null ? jsonResponse.getString("msg") : "未知错误,code=" + code; |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("Call order sync api error", e); |
| | | return "接口调用异常:" + e.getMessage(); |
| | | } |
| | | } |
| | | public void callApiLogSave(Mat mat, String url, String response, Boolean bool) { |
| | | apiLogService.save( |
| | | "ERP同步物料信息", |
| | | url, |
| | | null, |
| | | null, |
| | | "物料编号:" + (mat != null ? mat.getMatnr() : null) + |
| | | "、物料名称:" + (mat != null ? mat.getMaktx() : null), |
| | | response, |
| | | bool |
| | | ); |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 将两个深库位合并为深浅库位,物料号相同,源库位入库日期早于目标库位对应深库位入库日期,库位状态都为F |
| | | */ |
| | | @Scheduled(cron = "0/5 * * * * ?") |
| | | // @Scheduled(cron = "0/5 * * * * ?") |
| | | private void execute() throws ParseException { |
| | | // if (!confirmDeep) return; |
| | | //if (true) return; |
| | |
| | | @Autowired |
| | | private ErrorStockHandler errorStockHandler; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | ReturnT<String> returnT = errorStockHandler.start(); |
| | | if (!returnT.isSuccess()) { |
| | |
| | | @Autowired |
| | | private NotifyLogHandler notifyLogHandler; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | ReturnT<String> returnT = notifyLogHandler.start(); |
| | | if (!returnT.isSuccess()) { |
| | |
| | | /** |
| | | * 将已完成order和orderDetl移动到log表 |
| | | */ |
| | | @Scheduled(cron = "0/30 * * * * ?") |
| | | // @Scheduled(cron = "0/30 * * * * ?") |
| | | public void execute(){ |
| | | orderMoveHistoryHandler.start(); |
| | | } |
| | |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | | @Scheduled(cron = "0 0 1 * * ? ") |
| | | // @Scheduled(cron = "0 0 1 * * ? ") |
| | | public void clearApiLog(){ |
| | | try { |
| | | apiLogService.clearWeekBefore(); |
| | |
| | | @Autowired |
| | | private OverYearLogHandler overYearLogHandler; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | ReturnT<String> returnT = overYearLogHandler.start(); |
| | | if (!returnT.isSuccess()) { |
| | |
| | | @Autowired |
| | | private PlcLogHandler plcLogHandler; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | ReturnT<String> returnT = plcLogHandler.start(); |
| | | if (!returnT.isSuccess()) { |
| | |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData(); |
| | | if (wrkMasts.isEmpty()) { |
| | |
| | | @Autowired |
| | | private WorkMastHandler workMastHandler; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData(); |
| | | if (wrkMasts.isEmpty()) { |
| | |
| | | // generator.table="sys_host"; |
| | | // sqlserver |
| | | generator.sqlOsType = SqlOsType.SQL_SERVER; |
| | | generator.url="192.168.4.15:1433;databasename=hylyasrs"; |
| | | generator.url="127.0.0.1:1433;databasename=lfdasrs-ERP"; |
| | | generator.username="sa"; |
| | | generator.password="sa@123"; |
| | | generator.table="man_loc_check"; |
| | | generator.table="asr_erp_order_detl"; |
| | | generator.packagePath="com.zy.asrs"; |
| | | generator.build(); |
| | | } |
| New file |
| | |
| | | -- save erpMat record |
| | | -- mysql |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat/erpMat.html', 'erpMat管理', null , '2', null , '1'); |
| | | |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat#view', '查询', '', '3', '0', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat#btn-add', '新增', '', '3', '1', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat#btn-edit', '编辑', '', '3', '2', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat#btn-delete', '删除', '', '3', '3', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpMat#btn-export', '导出', '', '3', '4', '1'); |
| | | |
| | | -- sqlserver |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat/erpMat.html', N'erpMat管理', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat#view', N'查询', '', '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat#btn-add', N'新增', '', '3', '1', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat#btn-edit', N'编辑', '', '3', '2', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat#btn-delete', N'删除', '', '3', '3', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpMat#btn-export', N'导出', '', '3', '4', '1'); |
| New file |
| | |
| | | -- save erpOrder record |
| | | -- mysql |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder/erpOrder.html', 'erpOrder管理', null , '2', null , '1'); |
| | | |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder#view', '查询', '', '3', '0', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder#btn-add', '新增', '', '3', '1', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder#btn-edit', '编辑', '', '3', '2', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder#btn-delete', '删除', '', '3', '3', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrder#btn-export', '导出', '', '3', '4', '1'); |
| | | |
| | | -- sqlserver |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder/erpOrder.html', N'erpOrder管理', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder#view', N'查询', '', '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder#btn-add', N'新增', '', '3', '1', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder#btn-edit', N'编辑', '', '3', '2', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder#btn-delete', N'删除', '', '3', '3', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrder#btn-export', N'导出', '', '3', '4', '1'); |
| New file |
| | |
| | | -- save erpOrderDetl record |
| | | -- mysql |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl/erpOrderDetl.html', 'erpOrderDetl管理', null , '2', null , '1'); |
| | | |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl#view', '查询', '', '3', '0', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl#btn-add', '新增', '', '3', '1', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl#btn-edit', '编辑', '', '3', '2', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl#btn-delete', '删除', '', '3', '3', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'erpOrderDetl#btn-export', '导出', '', '3', '4', '1'); |
| | | |
| | | -- sqlserver |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl/erpOrderDetl.html', N'erpOrderDetl管理', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl#view', N'查询', '', '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl#btn-add', N'新增', '', '3', '1', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl#btn-edit', N'编辑', '', '3', '2', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl#btn-delete', N'删除', '', '3', '3', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'erpOrderDetl#btn-export', N'导出', '', '3', '4', '1'); |
| New file |
| | |
| | | -- save mat record |
| | | -- mysql |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat/mat.html', 'mat管理', null , '2', null , '1'); |
| | | |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat#view', '查询', '', '3', '0', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat#btn-add', '新增', '', '3', '1', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat#btn-edit', '编辑', '', '3', '2', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat#btn-delete', '删除', '', '3', '3', '1'); |
| | | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'mat#btn-export', '导出', '', '3', '4', '1'); |
| | | |
| | | -- sqlserver |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat/mat.html', N'mat管理', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat#view', N'查询', '', '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat#btn-add', N'新增', '', '3', '1', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat#btn-edit', N'编辑', '', '3', '2', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat#btn-delete', N'删除', '', '3', '3', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'mat#btn-export', N'导出', '', '3', '4', '1'); |
| | |
| | | server: |
| | | port: 8081 |
| | | port: 9999 |
| | | servlet: |
| | | context-path: /@pom.build.finalName@ |
| | | |
| | |
| | | enabled: false |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | url: jdbc:sqlserver://localhost:1433;databasename=lfdasrs |
| | | url: jdbc:sqlserver://localhost:1433;databasename=lfdasrsErp |
| | | username: sa |
| | | password: sa@123 |
| | | mvc: |
| | |
| | | groupCount: 4 |
| | | #ERP接口 |
| | | erp: |
| | | enabled: true |
| | | enabled: false |
| | | enabledNew: false |
| | | enabledErpDetTb: true |
| | | enabledErpPrdt: true |
| | | enabledErpDetTb: false |
| | | enabledErpPrdt: false |
| | | # enabled: false |
| | | #查看ERP中间表间隔 |
| | | refreshtime: 0/5 * * * * ? |
| New file |
| | |
| | | <?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.ErpMatMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ErpMat"> |
| | | <result column="id" property="id" /> |
| | | <result column="mat_nr " property="matNr" /> |
| | | <result column="mak_tx" property="makTx" /> |
| | | <result column="group_id" property="groupId" /> |
| | | <result column="group_name" property="groupName" /> |
| | | <result column="spec" property="spec" /> |
| | | <result column="model" property="model" /> |
| | | <result column="weight" property="weight" /> |
| | | <result column="color" property="color" /> |
| | | <result column="size" property="size" /> |
| | | <result column="unit" property="unit" /> |
| | | <result column="describe" property="describe" /> |
| | | <result column="wareHouse_id" property="wareHouseId" /> |
| | | <result column="operate_type" property="operateType" /> |
| | | <result column="send_status" property="sendStatus" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | <?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.ErpOrderDetlMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ErpOrderDetl"> |
| | | <result column="order_id" property="orderId" /> |
| | | <result column="line_id" property="lineId" /> |
| | | <result column="mat_nr " property="matNr" /> |
| | | <result column="mak_tx" property="makTx" /> |
| | | <result column="anfme" property="anfme" /> |
| | | <result column="spec" property="spec" /> |
| | | <result column="model" property="model" /> |
| | | <result column="unit" property="unit" /> |
| | | <result column="batch" property="batch" /> |
| | | <result column="plan_no" property="planNo" /> |
| | | <result column="qc_status" property="qcStatus" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | <?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.ErpOrderMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ErpOrder"> |
| | | <id column="id" property="id" /> |
| | | <result column="order_no" property="orderNo" /> |
| | | <result column="order_type" property="orderType" /> |
| | | <result column="wk_type" property="wkType" /> |
| | | <result column="business_time" property="businessTime" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="warehouse_id" property="warehouseId" /> |
| | | <result column="operate_type" property="operateType" /> |
| | | <result column="send_status" property="sendStatus" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | var pageCurr; |
| | | 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; |
| | | var admin = layui.admin; |
| | | |
| | | // 数据渲染 |
| | | tableIns = table.render({ |
| | | elem: '#erpMat', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/erpMat/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'} |
| | | ,{field: 'matNr', align: 'center',title: '物料编码'} |
| | | ,{field: 'makTx', align: 'center',title: '物料名称'} |
| | | ,{field: 'groupId', align: 'center',title: '物料分组编码'} |
| | | ,{field: 'groupName', align: 'center',title: '物料分组'} |
| | | ,{field: 'spec', align: 'center',title: '规格'} |
| | | ,{field: 'model', align: 'center',title: '型号'} |
| | | ,{field: 'weight', align: 'center',title: '重量'} |
| | | ,{field: 'color', align: 'center',title: '颜色'} |
| | | ,{field: 'size', align: 'center',title: '尺寸'} |
| | | ,{field: 'unit', align: 'center',title: '单位'} |
| | | ,{field: 'describe', align: 'center',title: '描述'} |
| | | ,{field: 'wareHouseId', align: 'center',title: '仓库Id'} |
| | | ,{field: 'operateType', align: 'center',title: '操作类型,1 新增(默认);2 修改;3 禁用;4 启用;'} |
| | | ,{field: 'sendStatus', align: 'center',title: '1:已发送 0:待发送'} |
| | | |
| | | ,{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(erpMat)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // 监听头工具栏事件 |
| | | table.on('toolbar(erpMat)', 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 '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 = { |
| | | 'erpMat': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/erpMat/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(erpMat)', 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+"/erpMat/"+(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+"/erpMat/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: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // 关闭动作 |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | 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; |
| | | var admin = layui.admin; |
| | | |
| | | // 数据渲染 |
| | | tableIns = table.render({ |
| | | elem: '#erpOrder', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/erpOrder/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'} |
| | | ,{field: 'orderNo', align: 'center',title: '订单编码'} |
| | | ,{field: 'orderType', align: 'center',title: '订单类型,1 出库单;2 入库单;3 调拨单;'} |
| | | ,{field: 'wkType', align: 'center',title: '业务类型'} |
| | | ,{field: 'businessTime', align: 'center',title: '业务时间'} |
| | | ,{field: 'createTime', align: 'center',title: '创建时间'} |
| | | ,{field: 'warehouseId', align: 'center',title: '仓库id'} |
| | | ,{field: 'operateType', align: 'center',title: '操作类型,1 新增(默认);2 修改;3 取消;4 关闭;'} |
| | | ,{field: 'sendStatus', align: 'center',title: '发送状态1:已发送 0:待发送'} |
| | | |
| | | ,{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(erpOrder)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // 监听头工具栏事件 |
| | | table.on('toolbar(erpOrder)', 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 '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 = { |
| | | 'erpOrder': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/erpOrder/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(erpOrder)', 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+"/erpOrder/"+(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+"/erpOrder/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: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // 关闭动作 |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | 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; |
| | | var admin = layui.admin; |
| | | |
| | | // 数据渲染 |
| | | tableIns = table.render({ |
| | | elem: '#erpOrderDetl', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/erpOrderDetl/list/auth', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | | toolbar: '#toolbar', |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'orderId', align: 'center',title: '单据id'} |
| | | ,{field: 'lineId', align: 'center',title: '行内码'} |
| | | ,{field: 'matNr', align: 'center',title: '物料编码'} |
| | | ,{field: 'makTx', align: 'center',title: '物料名称'} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'spec', align: 'center',title: '规格'} |
| | | ,{field: 'model', align: 'center',title: '型号'} |
| | | ,{field: 'unit', align: 'center',title: '单位'} |
| | | ,{field: 'batch', align: 'center',title: '批次号'} |
| | | ,{field: 'planNo', align: 'center',title: '计划跟踪号'} |
| | | ,{field: 'qcStatus', align: 'center',title: '质检状态,1合格0不合格3让步接收9待检'} |
| | | |
| | | ,{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(erpOrderDetl)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // 监听头工具栏事件 |
| | | table.on('toolbar(erpOrderDetl)', 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 '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 = { |
| | | 'erpOrderDetl': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/erpOrderDetl/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(erpOrderDetl)', 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+"/erpOrderDetl/"+(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+"/erpOrderDetl/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: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // 关闭动作 |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | <!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"> |
| | | <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> |
| | | </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="erpMat" lay-filter="erpMat"></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-export" lay-event="exportData" style="float: right">导出</button> |
| | | </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/erpMat/erpMat.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-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">物料编码: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="matNr" placeholder="请输入物料编码" lay-vertype="tips" lay-verify="required"> |
| | | </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="makTx" placeholder="请输入物料名称" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">物料分组编码: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="groupId" placeholder="请输入物料分组编码"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">物料分组: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="groupName" placeholder="请输入物料分组"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">规格: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="spec" placeholder="请输入规格"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">型号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="model" placeholder="请输入型号"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">重量: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="weight" placeholder="请输入重量"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">颜色: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="color" placeholder="请输入颜色"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">尺寸: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="size" placeholder="请输入尺寸"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">单位: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="unit" placeholder="请输入单位"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">描述: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="describe" placeholder="请输入描述"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">仓库Id: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="wareHouseId" placeholder="请输入仓库Id"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">操作类型,1 新增(默认);2 修改;3 禁用;4 启用;: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="operateType" placeholder="请输入操作类型,1 新增(默认);2 修改;3 禁用;4 启用;"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">1:已发送 0:待发送: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sendStatus" placeholder="请输入1:已发送 0:待发送"> |
| | | </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> |
| | | |
| New file |
| | |
| | | <!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"> |
| | | <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> |
| | | </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="erpOrder" lay-filter="erpOrder"></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-export" lay-event="exportData" style="float: right">导出</button> |
| | | </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/erpOrder/erpOrder.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-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">自增id: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="id" placeholder="请输入自增id" lay-vertype="tips" lay-verify="required"> |
| | | </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="orderNo" placeholder="请输入订单编码" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">订单类型,1 出库单;2 入库单;3 调拨单;: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="orderType" placeholder="请输入订单类型,1 出库单;2 入库单;3 调拨单;" lay-vertype="tips" lay-verify="required"> |
| | | </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="wkType" placeholder="请输入业务类型" lay-vertype="tips" lay-verify="required"> |
| | | </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="businessTime" placeholder="请输入业务时间" lay-vertype="tips" lay-verify="required"> |
| | | </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="createTime" placeholder="请输入创建时间" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">仓库id: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="warehouseId" placeholder="请输入仓库id" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">操作类型,1 新增(默认);2 修改;3 取消;4 关闭;: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="operateType" placeholder="请输入操作类型,1 新增(默认);2 修改;3 取消;4 关闭;"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">发送状态1:已发送 0:待发送: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sendStatus" placeholder="请输入发送状态1:已发送 0:待发送"> |
| | | </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> |
| | | |
| New file |
| | |
| | | <!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"> |
| | | <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> |
| | | </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="erpOrderDetl" lay-filter="erpOrderDetl"></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-export" lay-event="exportData" style="float: right">导出</button> |
| | | </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/erpOrderDetl/erpOrderDetl.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-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">单据id: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="orderId" placeholder="请输入单据id" lay-vertype="tips" lay-verify="required"> |
| | | </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="lineId" placeholder="请输入行内码" lay-vertype="tips" lay-verify="required"> |
| | | </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="matNr" placeholder="请输入物料编码" lay-vertype="tips" lay-verify="required"> |
| | | </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="makTx" placeholder="请输入物料名称" lay-vertype="tips" lay-verify="required"> |
| | | </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="anfme" placeholder="请输入数量" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">规格: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="spec" placeholder="请输入规格"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">型号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="model" placeholder="请输入型号"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">单位: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="unit" placeholder="请输入单位"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">批次号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="batch" placeholder="请输入批次号"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">计划跟踪号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="planNo" placeholder="请输入计划跟踪号"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">质检状态,1合格0不合格3让步接收9待检: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="qcStatus" placeholder="请输入质检状态,1合格0不合格3让步接收9待检"> |
| | | </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> |
| | | |