add:组盘修改删除/包装机新增字段

This commit is contained in:
zhangzhiqiang
2023-08-08 22:06:19 +08:00
parent fdf577f540
commit ef17d390f7
7 changed files with 205 additions and 44 deletions

View File

@@ -1,12 +1,14 @@
package org.nl.wms.masterdata_manage.controller.vehicle;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -16,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.Map;
/**
@@ -40,6 +43,21 @@ public class MdPbBucketrecordController {
return new ResponseEntity<>(iMdPbBucketrecordService.queryAll(whereJson,page), HttpStatus.OK);
}
@PutMapping
@Log("修改桶记录表")
//("查询桶记录表")
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
iMdPbBucketrecordService.updateById(whereJson.toJavaObject(MdPbBucketrecord.class));
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping
@Log("删除桶记录表")
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
iMdPbBucketrecordService.removeByIds(Arrays.asList(ids));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/excelImport")
@Log("导入组盘信息")

View File

@@ -168,19 +168,11 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
String now = DateUtil.now();
String pcsn = DateUtil.today();
List<MpsSaleOrder> sales = saleOrderService.list(new QueryWrapper<MpsSaleOrder>().in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet())));
HashMap<String, Integer> max = new HashMap<>();
for (MpsSaleOrder sale : sales) {
Integer integer = max.get(sale.getSale_code());
if (integer==null){
max.put(sale.getSale_code(),0);
}else {
max.put(sale.getSale_code(),Math.max(integer,sale.getSeq_no()));
}
}
List<MpsSaleOrder> sales = saleOrderService
.list(new QueryWrapper<MpsSaleOrder>()
.in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet())));
List<MpsSaleOrder> arrayList = new ArrayList<>();
Map<String, Integer> hashMap = new HashMap<>();
for (MdPbBucketrecord datum : data) {
datum.setBucket_record_id(IdUtil.getStringId());
String bucketunique = datum.getBucketunique();
@@ -204,31 +196,49 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
datum.setQty_unit_name("个/只");
datum.setStatus(MasterEnum.BOX_STATUS.code("生成"));
//手动插入销售订单
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
mpsSaleOrder.setSale_id(IdUtil.getStringId());
mpsSaleOrder.setSale_code(datum.getSale_code());
mpsSaleOrder.setSale_qty(new BigDecimal(datum.getStorage_qty()));
mpsSaleOrder.setIs_delete(0);
mpsSaleOrder.setMaterial_id(datum.getMaterial_id());
mpsSaleOrder.setMaterial_code(datum.getMaterial_code());
mpsSaleOrder.setMaterial_spec(datum.getMaterial_spec());
mpsSaleOrder.setProduct_area("A1");
mpsSaleOrder.setContract_code(datum.getContract_code());
mpsSaleOrder.setStatus(IOSEnum.ORDER_STATUS.code("生成"));
mpsSaleOrder.setStatus("10");
Integer integer = hashMap.get(mpsSaleOrder.getSale_code());
if (integer==null){
List<MpsSaleOrder> mpsSaleOrders = sales.stream().filter(a -> a.getSale_code().equals(datum.getSale_code())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(mpsSaleOrders)){
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
mpsSaleOrder.setSale_id(IdUtil.getStringId());
mpsSaleOrder.setSale_code(datum.getSale_code());
mpsSaleOrder.setSale_qty(new BigDecimal(datum.getStorage_qty()));
mpsSaleOrder.setIs_delete(0);
mpsSaleOrder.setMaterial_id(datum.getMaterial_id());
mpsSaleOrder.setMaterial_code(datum.getMaterial_code());
mpsSaleOrder.setMaterial_spec(datum.getMaterial_spec());
mpsSaleOrder.setProduct_area("A1");
mpsSaleOrder.setContract_code(datum.getContract_code());
mpsSaleOrder.setStatus(IOSEnum.ORDER_STATUS.code("生成"));
mpsSaleOrder.setStatus("10");
mpsSaleOrder.setSeq_no(100);
hashMap.put(mpsSaleOrder.getSale_code(),100);
datum.setSeq_no(mpsSaleOrder.getSeq_no());
arrayList.add(mpsSaleOrder);
sales.add(mpsSaleOrder);
}else {
int nowno = integer + 100;
mpsSaleOrder.setSeq_no(nowno);
hashMap.put(mpsSaleOrder.getSale_code(),nowno);
List<MpsSaleOrder> collect = mpsSaleOrders.stream().filter(a -> a.getMaterial_code().equals(datum.getMaterial_code())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)){
MpsSaleOrder max = mpsSaleOrders.stream().max(Comparator.comparing(MpsSaleOrder::getSeq_no)).get();
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
mpsSaleOrder.setSale_id(IdUtil.getStringId());
mpsSaleOrder.setSale_code(datum.getSale_code());
mpsSaleOrder.setSale_qty(new BigDecimal(datum.getStorage_qty()));
mpsSaleOrder.setIs_delete(0);
mpsSaleOrder.setMaterial_id(datum.getMaterial_id());
mpsSaleOrder.setMaterial_code(datum.getMaterial_code());
mpsSaleOrder.setMaterial_spec(datum.getMaterial_spec());
mpsSaleOrder.setProduct_area("A1");
mpsSaleOrder.setContract_code(datum.getContract_code());
mpsSaleOrder.setStatus(IOSEnum.ORDER_STATUS.code("生成"));
mpsSaleOrder.setStatus("10");
mpsSaleOrder.setSeq_no(max.getSeq_no()+100);
datum.setSeq_no(mpsSaleOrder.getSeq_no());
arrayList.add(mpsSaleOrder);
sales.add(mpsSaleOrder);
}else {
datum.setSeq_no(collect.get(0).getSeq_no());
}
}
Integer hasno = max.get(mpsSaleOrder.getSale_code())==null?0:max.get(mpsSaleOrder.getSale_code());
mpsSaleOrder.setSeq_no(mpsSaleOrder.getSeq_no()+hasno);
datum.setSeq_no(mpsSaleOrder.getSeq_no());
arrayList.add(mpsSaleOrder);
}
List<MdPbBucketrecord> has = this.list(new QueryWrapper<MdPbBucketrecord>()
.in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet())));
@@ -241,8 +251,9 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
}
this.saveBatch(data);
saleOrderService.saveBatch(arrayList);
if (!CollectionUtils.isEmpty(arrayList)){
saleOrderService.saveBatch(arrayList);
}
//新增销售单:
}catch (Exception ex){
throw new BadRequestException(ex.getMessage());

View File

@@ -0,0 +1,101 @@
package org.nl.wms.pda_manage.pda.controller;
/*
* @author ZZQ
* @Date 2023/7/3 15:29
* 刻字相关临时方案
*/
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.RedissonUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.extendtask.Engrave.EngraveCallService;
import org.nl.wms.scheduler_manage.service.extendtask.plotter.PlotterCallEmptyTask;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/pda/package")
@Slf4j
@SaIgnore
public class TmpPackageController {
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private ISchBasePointService basePointService;
@Autowired
private IPdmProduceWorkorderService workorderService;
@PostMapping("packageList")
@SaIgnore
public ResponseEntity<Object> packageList(){
//workorderService.list(new QueryWrapper<PdmProduceWorkorder>().eq())
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("sendVechile")
@SaIgnore
public ResponseEntity<Object> callVechile(@RequestBody JSONObject param){
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("cachepoint")
@SaIgnore
public ResponseEntity<Object> kzpoint(@RequestBody JSONObject param) {
JSONObject jo = new JSONObject();
jo.put("device_code", "A1_KZ_SL");
JSONObject result = wmsToAcsService.request(jo, "api/wms/startDischarge");
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("callVechile")
@SaIgnore
public ResponseEntity<Object> kzresidue(@RequestBody JSONObject param){
RedissonUtils.lock(()->{
JSONObject jo = new JSONObject();
jo.put("next_point_code", param.getString("device_code"));
jo.put("start_point_code", "A1_KZ_SL");
jo.put("weight", param.getString("qty"));
JSONObject result = wmsToAcsService.request(jo, "api/wms/putOver");
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
},"kzresidue",null);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
}

View File

@@ -272,9 +272,9 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
if (CollectionUtils.isEmpty(cps)){
throw new BadRequestException("库存不足");
}
for (StIvtStructivtCp ivtDao : cps) {
for (StIvtStructivtCp ivtDao : cps) {//分配规则需要考虑托盘跟数量
if (unassign_qty<=0){
return;
break;
}
// 更新未分配数
unassign_qty = NumberUtil.sub(unassign_qty,ivtDao.getCanuse_qty().doubleValue());

View File

@@ -139,7 +139,7 @@
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="装箱机" prop="ealing_device_code">
<el-input v-model="form.package_ext.ealing_device_code" style="width: 200px;" />
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="是否翻转" prop="is_foreward">
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="拆箱输送正转" prop="is_foreward">
<el-radio
v-for="item in dict.IS_OR_NOT"
:key="item.id"
@@ -161,6 +161,13 @@
clearable
/>
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="码盘数量" prop="tray_num">
<el-input-number
v-model="form.package_ext.tray_num"
style="width: 200px;"
clearable
/>
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="装箱模版" prop="package_model">
<el-input v-model="form.package_ext.package_model" style="width: 200px;" />
</el-form-item>

View File

@@ -409,7 +409,7 @@
<el-option v-for="item in zxj" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="是否翻" prop="is_foreward">
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="拆箱输送正" prop="is_foreward">
<el-radio
v-for="item in dict.IS_OR_NOT"
:key="item.id"
@@ -433,6 +433,13 @@
clearable
/>
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="码盘数量" prop="tray_num">
<el-input-number
v-model="form.package_ext.tray_num"
style="width: 200px;"
clearable
/>
</el-form-item>
<el-form-item v-if="form.workprocedure_id == '1535144822984282112'" label="装箱模版" prop="package_model">
<el-input-number
v-model="form.package_ext.package_model"

View File

@@ -79,7 +79,14 @@
<el-input v-model="form.create_time" style="width: 200px;" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-input v-model="form.status" style="width: 200px;" />
<el-select v-model="form.status" placeholder="" style="width: 200px">
<el-option
v-for="item in dict.BOX_STATUS"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
@@ -99,11 +106,19 @@
<el-table-column prop="material_code" label="物料编码"/>
<el-table-column prop="material_spec" label="物料规格"/>
<el-table-column prop="storage_qty" label="数量"/>
<el-table-column prop="qty_unit_id" label="计量单位"/>
<el-table-column prop="qty_unit_name" label="计量单位"/>
<el-table-column prop="create_time" label="组盘时间"/>
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.PCS_DELI_STATUS[scope.row.status] }}
{{ dict.label.BOX_STATUS[scope.row.status] }}
</template>
</el-table-column>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
@@ -155,7 +170,7 @@ const defaultForm = {
}
export default {
name: 'DeliveryOrder',
dicts: ['PCS_DELIVER_TYPE', 'PCS_DELI_STATUS'],
dicts: ['PCS_DELIVER_TYPE', 'BOX_STATUS'],
components: {pagination, crudOperation, rrOperation, udOperation, Treeselect, Dialog, UploadDialog},
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
@@ -164,7 +179,7 @@ export default {
optShow: {
add: true,
edit: false,
del: false,
del: true,
reset: true,
download: false
},
@@ -188,6 +203,8 @@ export default {
this.initClass3()
},
methods: {
deletrow(row){},
updaterow(row){},
queryClassId() {
const param = {
'class_idStr': this.class_idStr