| src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/param/MatSyncParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -4,11 +4,10 @@ import com.core.annotations.AppAuth; import com.core.common.*; import com.core.exception.CoolException; import com.zy.asrs.entity.param.OpenOrderCompleteParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.entity.param.OpenOrderPakoutParam; import com.zy.asrs.entity.param.PackParam; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.OpenService; import com.zy.asrs.service.WrkMastService; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; @@ -35,6 +34,8 @@ @Autowired private OpenService openService; @Autowired private WrkMastService wrkMastService; @@ -93,36 +94,7 @@ return R.ok().add(openService.pakinOrderComplete(param)); } /** * 添加出库单 */ @PostMapping("/order/pakout/new/default/v1") @AppAuth(memo = "添加订单出库") public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakoutParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } //if (Cools.isEmpty(param.getLgort())) { // return R.error("单据编号[lgort]不能为空"); //} //if (!param.getLgort().equals("5006")) { // return R.ok(); //} if (Cools.isEmpty(param.getOrderNo())) { return R.error("单据编号[orderNo]不能为空"); } if (Cools.isEmpty(param.getOrderType())) { return R.error("单据类型[orderType]不能为空"); } if (Cools.isEmpty(param.getOrderDetails())) { return R.error("单据明细[orderDetails]不能为空"); } openService.pakoutOrderCreate(param); return R.ok(); } /** * 出库单回写 @@ -161,6 +133,84 @@ } } @PostMapping("/order/matSync/default/v2") // @AppAuth(memo = "商品信息同步接口") public synchronized R syncMatInfoV2(@RequestHeader(required = false) String appkey, @RequestBody(required = false) MatSyncParam.MatParam param, HttpServletRequest request){ auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } MatSyncParam matSyncParam = new MatSyncParam(); List<MatSyncParam.MatParam> objects = new ArrayList<>(); objects.add(param); matSyncParam.matDetails = objects; openService.syncMat(matSyncParam); return R.ok(); } /** * 添加出库单 */ @PostMapping("/order/pakout/new/default/v1") @AppAuth(memo = "添加订单出库") public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakoutParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getOrderNo())) { return R.error("单据编号[orderNo]不能为空"); } if (Cools.isEmpty(param.getOrderType())) { return R.error("单据类型[orderType]不能为空"); } if (Cools.isEmpty(param.getOrderDetails())) { return R.error("单据明细[orderDetails]不能为空"); } openService.pakoutOrderCreate(param); return R.ok(); } /** * 添加出库单 */ @PostMapping("/pickToFill/barcode") @AppAuth(memo = "捡料转全板") public synchronized R againOut(@RequestHeader(required = false) String appkey, @RequestBody PackParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)||Cools.isEmpty(param.getBarcode())) { return R.error("托盘码为空,请检查"); } WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); if (Cools.isEmpty(wrkMast)) { return R.error("无法通过托盘码找到该工作档,请检查托盘码是否正确"); } if (wrkMast.getIoType() != 103) { return R.error("仅有捡料出库可以使用该功能"); } if (wrkMast.getWrkSts() != 17) { return R.error("捡料出库未完成,请等待设备运行完成"); } openService.pickToFill(wrkMast); return R.ok(); } public static void main(String[] args) { // 1 System.out.println("======================================"); src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
New file @@ -0,0 +1,210 @@ package com.zy.asrs.entity.param; import com.baomidou.mybatisplus.annotations.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * 商品同步接口,参数 * Created on 2022/6/22 */ @Data public class MatSyncParam { /** * 创建时间 */ public String createTime; public List<MatParam> matDetails; @Data public static class MatParam{ /** * 商品编号 */ private String matnr; /** * 商品名称 */ private String maktx; /** * 商品分类 */ private String groupCode; /** * 分类名称 */ private String groupName; /** * 别名 */ private String name; /** * 规格 */ private String specs; /** * 型号 */ private String model; /** * 颜色 */ private String color; /** * 品牌 */ private String brand; /** * 单位 */ private String unit; /** * 单价 */ private Double price; /** * sku */ private String sku; /** * 单位量 */ private Double units; /** * 条码 */ private String barcode; /** * 产地 */ private String origin; /** * 厂家 */ private String manu; /** * 生产日期 */ private String manuDate; /** * 品项数 */ private String itemNum; /** * 安全库存量 */ private Double safeQty; /** * 重量 */ private Double weight; /** * 长度 */ private Double length; /** * 体积 */ private Double volume; /** * 三方编码 */ private String threeCode; /** * 供应商 */ private String supp; /** * 供应商编码 */ private String suppCode; /** * 是否批次 1: 是 0: 否 */ private Integer beBatch; /** * 保质期 */ private String deadTime; /** * 预警天数 */ private Integer deadWarn; /** * 来源 1: 制造 2: 采购 3: 外协 */ private Integer source; /** * 要求检验 1: 是 0: 否 */ private Integer inspect; /** * 危险品 1: 是 0: 否 */ private Integer danger; /** * 状态 1: 正常 0: 禁用 */ private Integer status; /** * 高频入出库物料 */ private Boolean inoutEveryday; /** * 上架区域{1:单品区,2:高频混放区,3:低频混放区} */ private Integer matType; /** * 添加人员 */ private String createBy; /** * 添加时间 */ private String createTime; /** * 备注 */ private String memo; } } src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,9 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.param.OpenOrderCompleteParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.entity.param.OpenOrderPakoutParam; import com.zy.asrs.entity.param.PackParam; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.OpenOrderCompeteResult; import com.zy.asrs.entity.result.StockVo; @@ -41,4 +39,8 @@ // 打包上线 void packageUp(PackParam param); void pickToFill(WrkMast wrkMast); void syncMat(MatSyncParam param); } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,13 +3,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.OpenOrderCompleteParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.entity.param.OpenOrderPakoutParam; import com.zy.asrs.entity.param.PackParam; import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.OpenOrderCompeteResult; import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.mapper.TagMapper; @@ -17,6 +15,7 @@ import com.zy.asrs.utils.MatUtils; import com.zy.common.model.DetlDto; import com.zy.common.utils.NodeUtils; import com.zy.common.utils.Synchro; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +50,14 @@ private TagService tagService; @Autowired private TagMapper tagMapper; @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private LocMastService locMastService; @Override @Transactional @@ -273,6 +280,34 @@ } @Override @Transactional public void pickToFill(WrkMast wrkMast) { Date now = new Date(); wrkMast.setIoType(101); wrkMast.setMemo("捡料转全板工作档"); wrkMastService.update(wrkMast, new EntityWrapper<WrkMast>() .eq("wrk_no", wrkMast.getWrkNo())); wrkDetlService.deleteByWrkNo(wrkMast.getWrkNo()); List<LocDetl> locDetls = locDetlService.selectByLocNo(wrkMast.getSourceLocNo()); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setZpallet(wrkDetl.getBarcode()); wrkDetl.setBarcode(wrkMast.getBarcode()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); wrkDetl.setAppeUser(1L); wrkDetl.setModiUser(1L); wrkDetl.setMatType(locDetl.getMatType()); wrkDetlService.insert(wrkDetl); } locMastService.updateLocSts(wrkMast.getSourceLocNo(), "R"); } @Override public List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param) { List<OpenOrderCompeteResult> results = new ArrayList<>(); if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) { @@ -438,4 +473,113 @@ } } @Override @Transactional public void syncMat(MatSyncParam param) { if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) { throw new CoolException("商品数据为空"); } for (MatSyncParam.MatParam matParam : param.getMatDetails()) { if (Cools.isEmpty(matParam.getMatnr())) { throw new CoolException("商品编码不能为空"); } if (Cools.isEmpty(matParam.getInoutEveryday())) { throw new CoolException("是否为高频入出库物料标识不能为空"); } if (Cools.isEmpty(matParam.getMatType())) { throw new CoolException("上架区域不能为空"); } Date now = new Date(); Mat mat = matService.selectByMatnr(matParam.getMatnr()); if (mat == null) { mat = new Mat(); // 分类 Long tagId; // 一级分类 if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) { Tag priTag = tagService.selectOne(new EntityWrapper<Tag>().eq("name", matParam.getGroupCode())); if (priTag == null) { Tag top = tagService.getTop(); NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(top.getId()); priTag = new Tag( null, // 编号 matParam.getGroupCode(), // 名称 top.getId(), // 父级 top.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 2, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(priTag) == 0) { throw new CoolException("服务器内部错误,请联系管理员"); } } // 二级分类 Tag secTag = tagService.selectByName(matParam.getGroupName(), 3); if (secTag == null) { NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(priTag.getId()); secTag = new Tag( null, // 编号 matParam.getGroupName(), // 名称 priTag.getId(), // 父级 priTag.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 3, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(secTag) == 0) { throw new CoolException("服务器内部错误,请联系管理员"); } } tagId = secTag.getId(); } else { tagId = tagService.getTop().getId(); } Synchro.Copy(matParam,mat); mat.setTagId(tagId); mat.setStatus(1); mat.setCreateTime(now); mat.setUpdateTime(now); if (!matService.insert(mat)) { throw new CoolException("服务器内部错误,请联系管理员"); } else { log.info("同步新物料[商品编号:{}]", mat.getMatnr()); } } else { Synchro.Copy(matParam,mat); if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) { throw new CoolException("更新已存在商品信息失败,请联系管理员"); } } } } } src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -89,7 +89,7 @@ try { // 保存接口日志 apiLogService.save( "成品库入库上报", "入库上报", MesConstant.URL + MesConstant.PAKIN_URL, null, "127.0.0.1", @@ -143,7 +143,7 @@ try { // 保存接口日志 apiLogService.save( "成品库出库上报", "出库上报", MesConstant.URL + MesConstant.PAKOUT_URL, null, "127.0.0.1",