增加容器类型字典、物料类型字典、物料高度字典、物料翻包字典

main
HUOJIN\92525 2024-06-05 14:55:52 +08:00
parent 988991afae
commit 0e8c52fc4a
9 changed files with 205 additions and 220 deletions

View File

@ -143,11 +143,6 @@ public class Item extends BaseEntity implements Serializable {
@ApiModelProperty(value = "来源序号") @ApiModelProperty(value = "来源序号")
private Long sourceId; private Long sourceId;
@OneToOne
@JoinColumn(name = "stock_type")
@ApiModelProperty(value = "料箱类型")
private StockType stockType;
@Column(name = "`extend_d1`") @Column(name = "`extend_d1`")
@ApiModelProperty(value = "默认容器装载数") @ApiModelProperty(value = "默认容器装载数")
private Double extendD1=1d; private Double extendD1=1d;

View File

@ -77,10 +77,9 @@ public class Stock extends BaseEntity implements Serializable {
private String name; private String name;
@OneToOne @Column(name = "`stock_type`")
@JoinColumn(name = "type_id")
@ApiModelProperty(value = "容器类型") @ApiModelProperty(value = "容器类型")
private StockType stockType; private String stockType;
@Column(name = "`use_weight`") @Column(name = "`use_weight`")

View File

@ -135,8 +135,6 @@ public class ItemController {
item.setCode(code); item.setCode(code);
item.setName("" + readAll.get(i).get("物料名称")); item.setName("" + readAll.get(i).get("物料名称"));
//容器类型 //容器类型
String stocktype_Str = "" + readAll.get(i).get("容器类型");
item.setStockType(map_stock.get(stocktype_Str));
String unit=readAll.get(i).get("单位")+""; String unit=readAll.get(i).get("单位")+"";
item.setUnit(map_dic.get(unit).getValue()); item.setUnit(map_dic.get(unit).getValue());
String packNumber=readAll.get(i).get("默认容器装载数").toString().trim(); String packNumber=readAll.get(i).get("默认容器装载数").toString().trim();

View File

@ -110,8 +110,7 @@ public class StockController {
for (Map<String, Object> record : readAll) { for (Map<String, Object> record : readAll) {
String stockCode = record.get("代码").toString().trim(); String stockCode = record.get("代码").toString().trim();
String stockTypeCode = record.get("类型").toString().trim(); String stockType = record.get("类型").toString().trim();
StockType stockType = redisObjectUtils.getObjectFromCache(stockTypeCode, () -> stockTypeService.findByCode(stockTypeCode), stockTypeCode + " 系统无此容器类型!");
//判断是否已存在容器 //判断是否已存在容器
if (existingStock.containsKey(stockCode)) { if (existingStock.containsKey(stockCode)) {
@ -147,7 +146,7 @@ public class StockController {
} }
private Stock createStock(StockType stockType, Dept dept, Map<String, Object> record) { private Stock createStock(String stockType, Dept dept, Map<String, Object> record) {
Stock stock = new Stock(); Stock stock = new Stock();
stock.setCode(record.get("代码").toString().trim()); stock.setCode(record.get("代码").toString().trim());
stock.setName(record.get("代码").toString().trim()); stock.setName(record.get("代码").toString().trim());
@ -158,7 +157,7 @@ public class StockController {
return stock; return stock;
} }
private Stock updateStock(Stock stock, StockType stockType) { private Stock updateStock(Stock stock, String stockType) {
stock.setStockType(stockType); stock.setStockType(stockType);
return stock; return stock;
} }

View File

@ -53,8 +53,8 @@ public class StockDto implements Serializable {
/** 容器名称 */ /** 容器名称 */
private String name; private String name;
/** 类型名称 */ /** 容器类型 */
private StockTypeSmallDto stockType; private String stockType;
/** 容器使用重量 */ /** 容器使用重量 */

View File

@ -41,12 +41,8 @@ public class StockQueryCriteria{
private String status; private String status;
/** 容器类型代码 */ /** 容器类型代码 */
@Query(joinName = "stockType", propName="code",type = Query.Type.EQUAL) @Query(type = Query.Type.INNER_LIKE)
private String stockTypeCode; private String stockType;
/** 容器类型名称 */
@Query(joinName = "stockType", propName="name",type = Query.Type.EQUAL)
private String stockTypeName;
/** 点位code */ /** 点位code */
@Query(joinName = "point", propName="code",type = Query.Type.EQUAL) @Query(joinName = "point", propName="code",type = Query.Type.EQUAL)

View File

@ -72,6 +72,7 @@ public class BigBomServiceImpl implements BigBomService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public BigBomDto create(BigBom resources) { public BigBomDto create(BigBom resources) {
return bigBomMapper.toDto(bigBomRepository.save(resources)); return bigBomMapper.toDto(bigBomRepository.save(resources));
} }

View File

@ -130,7 +130,7 @@ public class StockServiceImpl implements StockService {
map.put("地标ID", stock.getPoint().getName()); map.put("地标ID", stock.getPoint().getName());
map.put("子容器数量", stock.getSubCount()); map.put("子容器数量", stock.getSubCount());
map.put("容器名称", stock.getName()); map.put("容器名称", stock.getName());
map.put("类型名称", stock.getStockType().getName()); map.put("容器类型", stock.getStockType());
map.put("容器使用重量", stock.getUseWeight()); map.put("容器使用重量", stock.getUseWeight());
map.put("容器使用体积", stock.getUseSize()); map.put("容器使用体积", stock.getUseSize());
map.put("容器重量占用率", stock.getUsageWeight()); map.put("容器重量占用率", stock.getUsageWeight());

View File

@ -1,18 +1,18 @@
/* /*
* Copyright 2019-2020 Zheng Jie * Copyright 2019-2020 Zheng Jie
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.youchain.businessdata.rest; package com.youchain.businessdata.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
@ -61,16 +61,17 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import static org.springframework.http.HttpStatus.BAD_REQUEST; import static org.springframework.http.HttpStatus.BAD_REQUEST;
/** /**
* @website https://eladmin.vip * @author hjl
* @author hjl * @website https://eladmin.vip
* @date 2023-08-14 * @date 2023-08-14
**/ **/
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@Api(tags = "asn_detail管理") @Api(tags = "asn_detail管理")
@ -107,8 +108,8 @@ public class AsnDetailController {
@GetMapping @GetMapping
@ApiOperation("查询asn_detail") @ApiOperation("查询asn_detail")
public ResponseEntity<Object> queryAsnDetail(AsnDetailQueryCriteria criteria, Pageable pageable){ public ResponseEntity<Object> queryAsnDetail(AsnDetailQueryCriteria criteria, Pageable pageable) {
return new ResponseEntity<>(asnDetailService.queryAll(criteria,pageable),HttpStatus.OK); return new ResponseEntity<>(asnDetailService.queryAll(criteria, pageable), HttpStatus.OK);
} }
@PostMapping @PostMapping
@ -116,23 +117,24 @@ public class AsnDetailController {
@ApiOperation("新增asn_detail") @ApiOperation("新增asn_detail")
@PreAuthorize("@el.check('asnDetail:add')") @PreAuthorize("@el.check('asnDetail:add')")
@Transient @Transient
public ResponseEntity<Object> createAsnDetail(@Validated @RequestBody AsnDetail asnDetail){ public ResponseEntity<Object> createAsnDetail(@Validated @RequestBody AsnDetail asnDetail) {
asnDetail.setStatus(BizStatus.OPEN); asnDetail.setStatus(BizStatus.OPEN);
asnDetail.setDept(UserUtils.getDept()); asnDetail.setDept(UserUtils.getDept());
asnDetail.setPo(TimeNumberUtils.getRKCode()); asnDetail.setPo(TimeNumberUtils.getRKCode());
asnDetailService.create(asnDetail); asnDetailService.create(asnDetail);
Stock stock=asnDetail.getStock(); Stock stock = asnDetail.getStock();
stock.setStatus(BaseStatus.USED); stock.setStatus(BaseStatus.USED);
stockService.update(stock); stockService.update(stock);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("采集MO票") @Log("采集MO票")
@ApiOperation("新增createMoInfo") @ApiOperation("新增createMoInfo")
@PostMapping(value = "/createMoInfo") @PostMapping(value = "/createMoInfo")
@PreAuthorize("@el.check('asnDetail:createMoInfo')") @PreAuthorize("@el.check('asnDetail:createMoInfo')")
@Transient @Transient
public ResponseEntity<Object> storeMO(@Validated @RequestBody AsnDetail asnDetail){ public ResponseEntity<Object> storeMO(@Validated @RequestBody AsnDetail asnDetail) {
return addDetailMo(asnDetail,asnDetail.getPo(),asnDetail.getStock().getCode()); return addDetailMo(asnDetail, asnDetail.getPo(), asnDetail.getStock().getCode());
} }
@ -140,7 +142,7 @@ public class AsnDetailController {
@Log("修改asn_detail") @Log("修改asn_detail")
@ApiOperation("修改asn_detail") @ApiOperation("修改asn_detail")
@PreAuthorize("@el.check('asnDetail:edit')") @PreAuthorize("@el.check('asnDetail:edit')")
public ResponseEntity<Object> updateAsnDetail(@Validated @RequestBody AsnDetail resources){ public ResponseEntity<Object> updateAsnDetail(@Validated @RequestBody AsnDetail resources) {
asnDetailService.update(resources); asnDetailService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} }
@ -149,7 +151,7 @@ public class AsnDetailController {
@Log("修改容器") @Log("修改容器")
@ApiOperation("修改容器") @ApiOperation("修改容器")
@PreAuthorize("@el.check('asnDetail:edit')") @PreAuthorize("@el.check('asnDetail:edit')")
public ResponseEntity<Object> updateContainer(@Validated @RequestBody AsnDetail resources,@RequestParam("stockId") Long stockId){ public ResponseEntity<Object> updateContainer(@Validated @RequestBody AsnDetail resources, @RequestParam("stockId") Long stockId) {
Stock stockData = stockRepository.getById(stockId); Stock stockData = stockRepository.getById(stockId);
Stock stock = resources.getStock(); Stock stock = resources.getStock();
stockData.setStatus("FREE"); stockData.setStatus("FREE");
@ -176,25 +178,25 @@ public class AsnDetailController {
@PreAuthorize("@el.check('asnDetail:checkAsn')") @PreAuthorize("@el.check('asnDetail:checkAsn')")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> checkAsn(@RequestBody Long[] ids) { public ResponseEntity<Object> checkAsn(@RequestBody Long[] ids) {
for(Long id:ids) { for (Long id : ids) {
AsnDetail d =asnDetailService.toEntity(asnDetailService.findById(id)); AsnDetail d = asnDetailService.toEntity(asnDetailService.findById(id));
String areaCode=null; String areaCode = null;
String goodType=d.getItem().getGoodType(); String goodType = d.getItem().getGoodType();
if(goodType!=null&&goodType.equals(BizStatus.ZC)){ if (goodType != null && goodType.equals(BizStatus.ZC)) {
areaCode="ZCMCK"; areaCode = "ZCMCK";
} }
List<Point> points=pointService.getPoint(BaseStatus.STORAGE,areaCode); List<Point> points = pointService.getPoint(BaseStatus.STORAGE, areaCode);
Point dstPoint =null; Point dstPoint = null;
if(points.size()>0){ if (points.size() > 0) {
dstPoint=points.get(0); dstPoint = points.get(0);
}else{ } else {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),"找不到空闲点位"); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), "找不到空闲点位");
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
ApiResult r1= putawayInv(d,d.getPoint(),dstPoint); ApiResult r1 = putawayInv(d, d.getPoint(), dstPoint);
if(r1.getStatus()==400){ if (r1.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r1.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r1.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
@ -202,52 +204,52 @@ public class AsnDetailController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
public ApiResult putawayInv(@RequestBody AsnDetail d,Point srcPoint,Point dstPoint) { public ApiResult putawayInv(@RequestBody AsnDetail d, Point srcPoint, Point dstPoint) {
if(d.getOrderQty()-d.getReceivedQty()>0) { if (d.getOrderQty() - d.getReceivedQty() > 0) {
ItemKey ik=itemKeyService.getItemKey(d.getItem(),d.getPropC1(),d.getPropC3()); ItemKey ik = itemKeyService.getItemKey(d.getItem(), d.getPropC1(), d.getPropC3());
Task t = new Task(); Task t = new Task();
t.setAsnDetail(d); t.setAsnDetail(d);
t.setSrcStock(d.getStock()); t.setSrcStock(d.getStock());
t.setSrcStockCode(d.getStock().getCode()); t.setSrcStockCode(d.getStock().getCode());
t.setDstStock(d.getStock()); t.setDstStock(d.getStock());
t.setDstStockCode(d.getStock().getCode()); t.setDstStockCode(d.getStock().getCode());
t.setTaskStatus(BizStatus.OPEN); t.setTaskStatus(BizStatus.OPEN);
t.setItem(d.getItem()); t.setItem(d.getItem());
t.setPlanQty(d.getOrderQty()); t.setPlanQty(d.getOrderQty());
t.setItemKey(ik); t.setItemKey(ik);
if(srcPoint!=null) { if (srcPoint != null) {
t.setSrcPoint(srcPoint); t.setSrcPoint(srcPoint);
t.setSrcPointCode(srcPoint.getCode()); t.setSrcPointCode(srcPoint.getCode());
}
t.setDstPoint(dstPoint);
t.setDstPointCode(dstPoint.getCode());
taskService.create(t);
d.setReceivedQty(d.getOrderQty());
d.setStatus(BizStatus.RECEIVED);
asnDetailService.update(d);
dstPoint.setStatus(BaseStatus.USED);
pointService.update(dstPoint);
double srcQty=0d;
Inventory inv=invService.getInventory(ik,dstPoint,d.getStock(),d.getDept(),BizStatus.RECEIVING_UP);
t.setInvId(inv.getId());
taskService.update(t);
srcQty=inv.getQuantity();
inv.addQty(inv,d.getOrderQty());
invService.update(inv);
invLogService.storeInventoryLog(BizStatus.RECEIVING_UP,BizStatus.ADD,null,ik,srcPoint,dstPoint,d.getStock(),d.getStock(),srcQty,d.getOrderQty(),
BizStatus.ASN,d.getId(),inv.getId(),d.getRemark());
}else{
return ApiResult.result(400,d.getItem().getCode()+"已收货","obj");
} }
t.setDstPoint(dstPoint);
t.setDstPointCode(dstPoint.getCode());
taskService.create(t);
d.setReceivedQty(d.getOrderQty());
d.setStatus(BizStatus.RECEIVED);
asnDetailService.update(d);
dstPoint.setStatus(BaseStatus.USED);
pointService.update(dstPoint);
double srcQty = 0d;
Inventory inv = invService.getInventory(ik, dstPoint, d.getStock(), d.getDept(), BizStatus.RECEIVING_UP);
t.setInvId(inv.getId());
taskService.update(t);
srcQty = inv.getQuantity();
inv.addQty(inv, d.getOrderQty());
invService.update(inv);
invLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, ik, srcPoint, dstPoint, d.getStock(), d.getStock(), srcQty, d.getOrderQty(),
BizStatus.ASN, d.getId(), inv.getId(), d.getRemark());
} else {
return ApiResult.result(400, d.getItem().getCode() + "已收货", "obj");
}
return ApiResult.result(200,null,"obj"); return ApiResult.result(200, null, "obj");
} }
@PostMapping(value = "/import_mo") @PostMapping(value = "/import_mo")
@ApiOperation("导入MO") @ApiOperation("导入MO")
@javax.transaction.Transactional @javax.transaction.Transactional
@PreAuthorize("@el.check('asnDetail:list')") @PreAuthorize("@el.check('asnDetail:list')")
public ResponseEntity<Object> importMo( @RequestParam("file") MultipartFile multipartFile) { public ResponseEntity<Object> importMo(@RequestParam("file") MultipartFile multipartFile) {
FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize()); FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize());
String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename());
String type = FileUtil.getFileType(suffix); String type = FileUtil.getFileType(suffix);
@ -255,44 +257,44 @@ public class AsnDetailController {
File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type + File.separator); File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type + File.separator);
//MO票、容器代码 //MO票、容器代码
ExcelReader reader = ExcelUtil.getReader(file); ExcelReader reader = ExcelUtil.getReader(file);
Dept dept=UserUtils.getDept(); Dept dept = UserUtils.getDept();
int i=0; int i = 0;
int new_len=0; int new_len = 0;
try{ try {
List<Map<String, Object>> readAll = reader.readAll(); List<Map<String, Object>> readAll = reader.readAll();
for ( i = 0; i < readAll.size(); i++) { for (i = 0; i < readAll.size(); i++) {
log.error(i+"====="); log.error(i + "=====");
String mo=readAll.get(i).get("MO票").toString().trim(); String mo = readAll.get(i).get("MO票").toString().trim();
String stockCode=readAll.get(i).get("容器代码").toString().trim(); String stockCode = readAll.get(i).get("容器代码").toString().trim();
String[] str = mo.split("]"); String[] str = mo.split("]");
int j=0; int j = 0;
IScanPut s=new IScanPut(); IScanPut s = new IScanPut();
s.setScanCode(mo); s.setScanCode(mo);
ApiResult r1=analysisMO(s); ApiResult r1 = analysisMO(s);
if(r1.getStatus()==400){ if (r1.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r1.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r1.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
RRkMo rmo=(RRkMo)r1.getData(); RRkMo rmo = (RRkMo) r1.getData();
ApiResult r2=retrievalStockCode(new IRkStockCode(rmo.getItemId(),stockCode)); ApiResult r2 = retrievalStockCode(new IRkStockCode(rmo.getItemId(), stockCode));
if(r2.getStatus()==400){ if (r2.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r2.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r2.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
JSONObject obj=(JSONObject)r2.getData(); JSONObject obj = (JSONObject) r2.getData();
Long stockId=(Long)obj.get("stockId"); Long stockId = (Long) obj.get("stockId");
ApiResult r3=createAsnDetail(new IRkConfirm(mo,rmo.getItemId(),rmo.getItemCode(),stockId,stockCode,rmo.getQty(),rmo.getPch(),rmo.getCjbh())); ApiResult r3 = createAsnDetail(new IRkConfirm(mo, rmo.getItemId(), rmo.getItemCode(), stockId, stockCode, rmo.getQty(), rmo.getPch(), rmo.getCjbh()));
if(r3.getStatus()==400){ if (r3.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r3.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r3.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
new_len++; new_len++;
} }
}catch (Exception e){ } catch (Exception e) {
ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), "导入异常---第"+(i+1)+"行:"+e.toString()); ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), "导入异常---第" + (i + 1) + "行:" + e.toString());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
ApiError apiError = ApiError.errorJosn(HttpStatus.OK.value(), "导入成功:"+(i)+"行 新增("+new_len+")"); ApiError apiError = ApiError.errorJosn(HttpStatus.OK.value(), "导入成功:" + (i) + "行 新增(" + new_len + ")");
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
@ -303,28 +305,28 @@ public class AsnDetailController {
@PreAuthorize("@el.check('asnDetail:addDetailMo')") @PreAuthorize("@el.check('asnDetail:addDetailMo')")
@Transient @Transient
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> addDetailMo( AsnDetail asnDetail,String MO,String stockCode){ public ResponseEntity<Object> addDetailMo(AsnDetail asnDetail, String MO, String stockCode) {
log.error("join.....addDetailMo:"+MO+"=====:"+stockCode); log.error("join.....addDetailMo:" + MO + "=====:" + stockCode);
//MO票解析规则 LB]A0008157]230729]12122000026352]20]230729283171]] //MO票解析规则 LB]A0008157]230729]12122000026352]20]230729283171]]
int j=0; int j = 0;
IScanPut s=new IScanPut(); IScanPut s = new IScanPut();
s.setScanCode(MO); s.setScanCode(MO);
ApiResult r1=analysisMO(s); ApiResult r1 = analysisMO(s);
if(r1.getStatus()==400){ if (r1.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r1.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r1.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
RRkMo rmo=(RRkMo)r1.getData(); RRkMo rmo = (RRkMo) r1.getData();
ApiResult r2=retrievalStockCode(new IRkStockCode(rmo.getItemId(),stockCode)); ApiResult r2 = retrievalStockCode(new IRkStockCode(rmo.getItemId(), stockCode));
if(r2.getStatus()==400){ if (r2.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r2.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r2.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
JSONObject obj=(JSONObject)r2.getData(); JSONObject obj = (JSONObject) r2.getData();
Long stockId=(Long)obj.get("stockId"); Long stockId = (Long) obj.get("stockId");
ApiResult r3=createAsnDetail(new IRkConfirm(MO,rmo.getItemId(),rmo.getItemCode(),stockId,stockCode,rmo.getQty(),rmo.getPch(),rmo.getCjbh())); ApiResult r3 = createAsnDetail(new IRkConfirm(MO, rmo.getItemId(), rmo.getItemCode(), stockId, stockCode, rmo.getQty(), rmo.getPch(), rmo.getCjbh()));
if(r3.getStatus()==400){ if (r3.getStatus() == 400) {
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(),r3.getMessage()); ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), r3.getMessage());
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
} }
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
@ -335,21 +337,21 @@ public class AsnDetailController {
@ApiOperation("扫描MO票接口") @ApiOperation("扫描MO票接口")
@PreAuthorize("@el.check('asnDetail:scanMO')") @PreAuthorize("@el.check('asnDetail:scanMO')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> scanMO(@RequestBody IScanPut s){ public ResponseEntity<Object> scanMO(@RequestBody IScanPut s) {
ApiResult r=analysisMO(s); ApiResult r = analysisMO(s);
return HttpUtils.handle(r); return HttpUtils.handle(r);
} }
public ApiResult analysisMO(IScanPut s){ public ApiResult analysisMO(IScanPut s) {
//MO票解析规则 LB]A0008157]230729]12122000026352]20]230729283171]] //MO票解析规则 LB]A0008157]230729]12122000026352]20]230729283171]]
String mo=s.getScanCode(); String mo = s.getScanCode();
String[] str = mo.split("]"); String[] str = mo.split("]");
RRkMo rm=new RRkMo(); RRkMo rm = new RRkMo();
int j=0; int j = 0;
if (str.length <=5) { if (str.length <= 5) {
rm.setMsg(mo+"格式不正确"); rm.setMsg(mo + "格式不正确");
String msg=mo+"格式不正确"; String msg = mo + "格式不正确";
return ApiResult.result(400,msg,rm); return ApiResult.result(400, msg, rm);
} }
String itemCode = str[3]; String itemCode = str[3];
Double qty = Double.parseDouble(str[4]); Double qty = Double.parseDouble(str[4]);
@ -362,13 +364,13 @@ public class AsnDetailController {
rm.setItemCode(itemCode); rm.setItemCode(itemCode);
Item it = itemService.existItem(itemCode); Item it = itemService.existItem(itemCode);
if (it == null) { if (it == null) {
rm.setMsg(itemCode+"不存在"); rm.setMsg(itemCode + "不存在");
String msg=itemCode+"不存在"; String msg = itemCode + "不存在";
return ApiResult.result(400,msg,rm); return ApiResult.result(400, msg, rm);
} }
rm.setItemId(it.getId()); rm.setItemId(it.getId());
rm.setItemName(it.getName()); rm.setItemName(it.getName());
return ApiResult.result(200,null,rm); return ApiResult.result(200, null, rm);
} }
@ -377,27 +379,24 @@ public class AsnDetailController {
@ApiOperation("MO票采集扫描容器号") @ApiOperation("MO票采集扫描容器号")
@PreAuthorize("@el.check('asnDetail:scanStockCode')") @PreAuthorize("@el.check('asnDetail:scanStockCode')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> scanStockCode(@RequestBody IRkStockCode s){ public ResponseEntity<Object> scanStockCode(@RequestBody IRkStockCode s) {
ApiResult r=retrievalStockCode(s); ApiResult r = retrievalStockCode(s);
return HttpUtils.handle(r); return HttpUtils.handle(r);
} }
public ApiResult retrievalStockCode(IRkStockCode s){ public ApiResult retrievalStockCode(IRkStockCode s) {
JSONObject obj=new JSONObject(); JSONObject obj = new JSONObject();
Long itemId=s.getItemId(); Long itemId = s.getItemId();
String stockCode=s.getStockCode(); String stockCode = s.getStockCode();
Stock st = stockService.findByCode(stockCode,BaseStatus.FREE); Stock st = stockService.findByCode(stockCode, BaseStatus.FREE);
if (st == null) { if (st == null) {
return ApiResult.result(400,stockCode+"不存在或已使用",obj); return ApiResult.result(400, stockCode + "不存在或已使用", obj);
} }
Item it=itemService.findByItemId(itemId);
if(!st.getStockType().getId().equals(it.getStockType().getId())){ Map<String, Object> map = new HashMap<>();
return ApiResult.result(400,it.getCode()+"物料绑定容器类型不正确",obj); map.put("stockId", st.getId());
}
Map<String,Object> map=new HashMap<>();
map.put("stockId",st.getId());
obj.putAll(map); obj.putAll(map);
return ApiResult.result(200,null,obj); return ApiResult.result(200, null, obj);
} }
@PostMapping("/putawayStock") @PostMapping("/putawayStock")
@ -405,15 +404,15 @@ public class AsnDetailController {
@ApiOperation("APP入库上架-容器号") @ApiOperation("APP入库上架-容器号")
@PreAuthorize("@el.check('asnDetail:putawayStock')") @PreAuthorize("@el.check('asnDetail:putawayStock')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> putawayStock(@RequestBody IRkInv rk){ public ResponseEntity<Object> putawayStock(@RequestBody IRkInv rk) {
String stockCode=rk.getStockCode(); String stockCode = rk.getStockCode();
AsnDetail ad=asnDetailService.findByStock(stockCode); AsnDetail ad = asnDetailService.findByStock(stockCode);
if(ad==null){ if (ad == null) {
ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), stockCode+"找不到收货记录"); ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), stockCode + "找不到收货记录");
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
}else{ } else {
rk.setAsnDetailId(ad.getId()); rk.setAsnDetailId(ad.getId());
return new ResponseEntity<>(rk,HttpStatus.OK); return new ResponseEntity<>(rk, HttpStatus.OK);
} }
} }
@ -422,15 +421,15 @@ public class AsnDetailController {
@ApiOperation("APP入库上架-起点") @ApiOperation("APP入库上架-起点")
@PreAuthorize("@el.check('asnDetail:putawaySrcPoint')") @PreAuthorize("@el.check('asnDetail:putawaySrcPoint')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> putawaySrcPoint(@RequestBody IRkInv rk){ public ResponseEntity<Object> putawaySrcPoint(@RequestBody IRkInv rk) {
String srcPointCode=rk.getSrcPointCode(); String srcPointCode = rk.getSrcPointCode();
Point srcPoint=pointService.findByCode(srcPointCode,null,null,null,null); Point srcPoint = pointService.findByCode(srcPointCode, null, null, null, null);
if (srcPoint == null) { if (srcPoint == null) {
ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), srcPointCode+"找不到起点"); ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), srcPointCode + "找不到起点");
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
}else{ } else {
rk.setSrcPointId(srcPoint.getId()); rk.setSrcPointId(srcPoint.getId());
return new ResponseEntity<>(rk,HttpStatus.OK); return new ResponseEntity<>(rk, HttpStatus.OK);
} }
} }
@ -439,15 +438,14 @@ public class AsnDetailController {
@ApiOperation("APP入库上架") @ApiOperation("APP入库上架")
@PreAuthorize("@el.check('asnDetail:putawayConfirmApp')") @PreAuthorize("@el.check('asnDetail:putawayConfirmApp')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> putawayConfirmApp(@RequestBody IRkInv rk){ public ResponseEntity<Object> putawayConfirmApp(@RequestBody IRkInv rk) {
ApiResult r=putawayConfirm(rk); ApiResult r = putawayConfirm(rk);
return HttpUtils.handle(r); return HttpUtils.handle(r);
} }
public ApiResult putawayConfirm(IRkInv rk) {
public ApiResult putawayConfirm(IRkInv rk){ JSONObject obj = new JSONObject();
JSONObject obj=new JSONObject();
//查找容器是否有未完成记录 //查找容器是否有未完成记录
// String stockCode=rk.getStockCode(); // String stockCode=rk.getStockCode();
// AsnDetail ad=asnDetailService.findByStock(stockCode); // AsnDetail ad=asnDetailService.findByStock(stockCode);
@ -456,25 +454,25 @@ public class AsnDetailController {
// } // }
// //
// String srcPointCode=rk.getSrcPointCode(); // String srcPointCode=rk.getSrcPointCode();
String dstPointCode=rk.getDstPoinCode(); String dstPointCode = rk.getDstPoinCode();
AsnDetail ad=asnDetailService.toEntity(asnDetailService.findById(rk.getAsnDetailId())); AsnDetail ad = asnDetailService.toEntity(asnDetailService.findById(rk.getAsnDetailId()));
Point srcPoint=pointService.findEntityById(rk.getSrcPointId()); Point srcPoint = pointService.findEntityById(rk.getSrcPointId());
// Point srcPoint=pointService.findByCode(srcPointCode,null,null); // Point srcPoint=pointService.findByCode(srcPointCode,null,null);
// if (srcPoint == null) { // if (srcPoint == null) {
// return ApiResult.result(400,srcPointCode+"找不到起点",obj); // return ApiResult.result(400,srcPointCode+"找不到起点",obj);
// } // }
Point dstPoint=pointService.findByCode(dstPointCode,BaseStatus.FREE,BaseStatus.STORAGE,"",null); Point dstPoint = pointService.findByCode(dstPointCode, BaseStatus.FREE, BaseStatus.STORAGE, "", null);
if (dstPoint == null) { if (dstPoint == null) {
return ApiResult.result(400,dstPoint+"找不到终点或状态不对",obj); return ApiResult.result(400, dstPoint + "找不到终点或状态不对", obj);
} }
ApiResult r1= putawayInv(ad,srcPoint,dstPoint); ApiResult r1 = putawayInv(ad, srcPoint, dstPoint);
if(r1.getStatus()==400){ if (r1.getStatus() == 400) {
return r1; return r1;
} }
Map<String,Object> map=new HashMap<>(); Map<String, Object> map = new HashMap<>();
obj.putAll(map); obj.putAll(map);
return ApiResult.result(200,null,obj); return ApiResult.result(200, null, obj);
} }
@ -483,25 +481,24 @@ public class AsnDetailController {
@ApiOperation("MO票确认绑定") @ApiOperation("MO票确认绑定")
@PreAuthorize("@el.check('asnDetail:storeAsnDetail')") @PreAuthorize("@el.check('asnDetail:storeAsnDetail')")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> storeAsnDetail(@RequestBody IRkConfirm cf) { public ResponseEntity<Object> storeAsnDetail(@RequestBody IRkConfirm cf) {
ApiResult r=createAsnDetail(cf); ApiResult r = createAsnDetail(cf);
return HttpUtils.handle(r); return HttpUtils.handle(r);
} }
public ApiResult createAsnDetail(IRkConfirm cf) {
AsnDetail asnDetail=new AsnDetail(); public ApiResult createAsnDetail(IRkConfirm cf) {
int j=0; AsnDetail asnDetail = new AsnDetail();
String mo=cf.getMo(); int j = 0;
String itemCode =cf.getItemCode(); String mo = cf.getMo();
String itemCode = cf.getItemCode();
Double qty = cf.getQty(); Double qty = cf.getQty();
String pc = cf.getPch(); String pc = cf.getPch();
String cjbh = cf.getCjbh(); String cjbh = cf.getCjbh();
Long itemId=cf.getItemId(); Long itemId = cf.getItemId();
Long stockId=cf.getStockId(); Long stockId = cf.getStockId();
Item it=itemService.findByItemId(itemId); Item it = itemService.findByItemId(itemId);
Stock st=stockService.toEntity(stockService.findById(stockId)); Stock st = stockService.toEntity(stockService.findById(stockId));
if(!st.getStockType().getId().equals(it.getStockType().getId())){
return ApiResult.result(400,it.getCode()+"物料绑定容器类型不正确",null);
}
asnDetail.setPropC1(pc); asnDetail.setPropC1(pc);
asnDetail.setPropC2(cjbh); asnDetail.setPropC2(cjbh);
asnDetail.setOrderQty(qty); asnDetail.setOrderQty(qty);
@ -514,7 +511,7 @@ public class AsnDetailController {
asnDetailService.create(asnDetail); asnDetailService.create(asnDetail);
st.setStatus(BaseStatus.USED); st.setStatus(BaseStatus.USED);
stockService.update(st); stockService.update(st);
return ApiResult.result(200,"绑定成功",""); return ApiResult.result(200, "绑定成功", "");
} }
@PostMapping("/scanStock") @PostMapping("/scanStock")
@ -529,11 +526,11 @@ public class AsnDetailController {
//调用收货方法 //调用收货方法
JSONObject obj=new JSONObject(); JSONObject obj = new JSONObject();
Map<String,Object> map=new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("taskCode",taskCode); map.put("taskCode", taskCode);
obj.putAll(map); obj.putAll(map);
return new ResponseEntity<>(ApiResult.success("",obj), HttpStatus.OK); return new ResponseEntity<>(ApiResult.success("", obj), HttpStatus.OK);
} }
} }