rev:出库修改
This commit is contained in:
@@ -42,9 +42,9 @@ public enum AcsTaskEnum {
|
|||||||
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
|
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
|
||||||
TASK_STRUCT_CP_CHECK("13","-盘点"),
|
TASK_STRUCT_CP_CHECK("13","-盘点"),
|
||||||
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
||||||
TASK_WASH_EMP("21","清洗机-空叫空框"),
|
TASK_WASH_EMP("21","清洗机-空框请求"),
|
||||||
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
|
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
|
||||||
TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位:
|
TASK_WASH_FULL_QZ("23","清洗机-强制搬出"),//去异常位:
|
||||||
TASK_Engrave_CALL("24","刻字机上料"),
|
TASK_Engrave_CALL("24","刻字机上料"),
|
||||||
TASK_Engrave_EMPTY("25","刻字输送线-空框送回"),
|
TASK_Engrave_EMPTY("25","刻字输送线-空框送回"),
|
||||||
TASK_POINT_TO_POINT("99","点对点搬运"),
|
TASK_POINT_TO_POINT("99","点对点搬运"),
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
|||||||
JSONArray form = new JSONArray();
|
JSONArray form = new JSONArray();
|
||||||
for (Object o : arr) {
|
for (Object o : arr) {
|
||||||
JSONObject task = (JSONObject) o;
|
JSONObject task = (JSONObject) o;
|
||||||
|
if (task.get("is_send")==null){
|
||||||
|
task.put("is_send",true);
|
||||||
|
}
|
||||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||||
, "task_type", task.getString("acs_task_type")//垃圾
|
, "task_type", task.getString("acs_task_type")//垃圾
|
||||||
, "task_code", task.getString("task_code")
|
, "task_code", task.getString("task_code")
|
||||||
@@ -51,6 +54,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
|||||||
JSONArray form = new JSONArray();
|
JSONArray form = new JSONArray();
|
||||||
for (Object o : arr) {
|
for (Object o : arr) {
|
||||||
JSONObject task = (JSONObject) o;
|
JSONObject task = (JSONObject) o;
|
||||||
|
if (task.get("is_send")==null){
|
||||||
|
task.put("is_send",true);
|
||||||
|
}
|
||||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||||
, "task_code", task.getString("task_code")
|
, "task_code", task.getString("task_code")
|
||||||
, "start_point_code", task.getString("point_code1")//起点
|
, "start_point_code", task.getString("point_code1")//起点
|
||||||
@@ -74,6 +80,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
|||||||
JSONArray form = new JSONArray();
|
JSONArray form = new JSONArray();
|
||||||
for (Object o : arr) {
|
for (Object o : arr) {
|
||||||
JSONObject task = (JSONObject) o;
|
JSONObject task = (JSONObject) o;
|
||||||
|
if (task.get("is_send")==null){
|
||||||
|
task.put("is_send",true);
|
||||||
|
}
|
||||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||||
, "task_code", task.getString("task_code")
|
, "task_code", task.getString("task_code")
|
||||||
, "task_group_id", task.getString("task_group_id")
|
, "task_group_id", task.getString("task_group_id")
|
||||||
|
|||||||
@@ -96,4 +96,11 @@ public class StructattrController {
|
|||||||
public ResponseEntity<Object> getSectCascader(@RequestBody JSONObject json) {
|
public ResponseEntity<Object> getSectCascader(@RequestBody JSONObject json) {
|
||||||
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
|
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/setMaterial")
|
||||||
|
@Log("修改仓位库存")
|
||||||
|
//("查询联级仓位")
|
||||||
|
public ResponseEntity<Object> setMaterial(@RequestBody JSONObject json) {
|
||||||
|
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
|||||||
this.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
this.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
.eq(StIvtStructattr::getStruct_code, struct_code)
|
.eq(StIvtStructattr::getStruct_code, struct_code)
|
||||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
||||||
.set(StIvtStructattr::getInv_code,inv_code));
|
.set(StIvtStructattr::getInv_code,inv_code)
|
||||||
|
.set(StIvtStructattr::getTask_code,inv_code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,15 +5,18 @@ import cn.hutool.core.map.MapUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.nl.common.utils.IdUtil;
|
import org.nl.common.utils.IdUtil;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
|
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
|
||||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
import org.nl.wms.mps_manage.deliveryorder.service.dao.PcsDeliveryOrder;
|
import org.nl.wms.mps_manage.deliveryorder.service.dao.PcsDeliveryOrder;
|
||||||
import org.nl.wms.mps_manage.deliveryorder.service.dao.mapper.PcsDeliveryOrderMapper;
|
import org.nl.wms.mps_manage.deliveryorder.service.dao.mapper.PcsDeliveryOrderMapper;
|
||||||
import org.nl.wms.mps_manage.deliveryorder.service.IPcsDeliveryOrderService;
|
import org.nl.wms.mps_manage.deliveryorder.service.IPcsDeliveryOrderService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.nl.wms.storage_manage.semimanage.MLEnum;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@@ -50,6 +53,10 @@ public class PcsDeliveryOrderServiceImpl extends ServiceImpl<PcsDeliveryOrderMap
|
|||||||
order.setCreate_id(currentUserId);
|
order.setCreate_id(currentUserId);
|
||||||
order.setCreate_name(nickName);
|
order.setCreate_name(nickName);
|
||||||
order.setCreate_time(DateUtil.now());
|
order.setCreate_time(DateUtil.now());
|
||||||
|
order.setStatus(MLEnum.BILL_STATUS.code("生成"));
|
||||||
|
MdMeMaterialbase one = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
|
||||||
|
.eq("material_code", form.getString("material_code")));
|
||||||
|
order.setMaterial_id(one.getMaterial_id());
|
||||||
this.save(order);
|
this.save(order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class MpsSaleOrder implements Serializable{
|
|||||||
/**
|
/**
|
||||||
* 销售单标识
|
* 销售单标识
|
||||||
*/
|
*/
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId
|
||||||
@ApiModelProperty(value = "/**销售单标识*/")
|
@ApiModelProperty(value = "/**销售单标识*/")
|
||||||
private String sale_id;
|
private String sale_id;
|
||||||
/**
|
/**
|
||||||
@@ -194,6 +194,11 @@ public class MpsSaleOrder implements Serializable{
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "/**aps最早开始时间(下料时间)*/")
|
@ApiModelProperty(value = "/**aps最早开始时间(下料时间)*/")
|
||||||
private String early_start_time;
|
private String early_start_time;
|
||||||
|
/**
|
||||||
|
* aps订单号
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "/**aps订单号 */")
|
||||||
|
private String aps_sale_code;
|
||||||
/**
|
/**
|
||||||
* aps订单状态
|
* aps订单状态
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -62,10 +62,10 @@
|
|||||||
<if test="query.cust_code != null">
|
<if test="query.cust_code != null">
|
||||||
and der.cust_code = #{query.cust_code}
|
and der.cust_code = #{query.cust_code}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="query.material_code != null">
|
||||||
|
and der.material_code = #{query.material_code}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getPdaMaterial" resultType="java.util.Map">
|
<select id="getPdaMaterial" resultType="java.util.Map">
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ public class OrderQuery extends BaseQuery<MpsSaleOrder> {
|
|||||||
|
|
||||||
private String cust_code;
|
private String cust_code;
|
||||||
|
|
||||||
|
private String material_code;
|
||||||
|
|
||||||
private Boolean is_delete = false;
|
private Boolean is_delete = false;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.common.utils.IdUtil;
|
import org.nl.common.utils.IdUtil;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
@@ -127,28 +128,29 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||||
InputStream inputStream = null;
|
Map<String, Integer> orderSeqNoMap = new HashMap<>();
|
||||||
|
List<MpsSaleOrder> data = new ArrayList<>();
|
||||||
|
Map<String, String> errorMap = new HashMap<>();
|
||||||
|
|
||||||
if (file.isEmpty()) {
|
if (file.isEmpty()) {
|
||||||
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||||
}
|
}
|
||||||
try {
|
try (InputStream inputStream = file.getInputStream()) {
|
||||||
inputStream = file.getInputStream();
|
|
||||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||||
List<List<Object>> read = excelReader.read();
|
List<List<Object>> read = excelReader.read();
|
||||||
// 循环获取的数据
|
|
||||||
List<MpsSaleOrder> data = new ArrayList<>();
|
|
||||||
Map<String,String> errorMap = new HashMap();
|
|
||||||
row:
|
|
||||||
for (int i = 1; i < read.size(); i++) {
|
for (int i = 1; i < read.size(); i++) {
|
||||||
List<Object> list = read.get(i);
|
List<Object> list = read.get(i);
|
||||||
if(ObjectUtil.isEmpty(list)) {
|
if(ObjectUtil.isEmpty(list)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
|
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
|
||||||
|
mpsSaleOrder.setSale_id(IdUtil.getStringId());
|
||||||
mpsSaleOrder.setSale_type("01");
|
mpsSaleOrder.setSale_type("01");
|
||||||
mpsSaleOrder.setStatus("10");
|
mpsSaleOrder.setStatus("10");
|
||||||
mpsSaleOrder.setCreate_time(DateUtil.now());
|
mpsSaleOrder.setCreate_time(DateUtil.now());
|
||||||
mpsSaleOrder.setConfirm_time(DateUtil.now());
|
mpsSaleOrder.setConfirm_time(DateUtil.now());
|
||||||
|
mpsSaleOrder.setIs_delete(0);
|
||||||
mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId());
|
mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||||
mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername());
|
mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername());
|
||||||
mpsSaleOrder.setAps_status("X");
|
mpsSaleOrder.setAps_status("X");
|
||||||
@@ -156,13 +158,10 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
|||||||
for(int j = 0; j < list.size(); j++) {
|
for(int j = 0; j < list.size(); j++) {
|
||||||
String col = null == list.get(j) ? "" : String.valueOf(list.get(j));
|
String col = null == list.get(j) ? "" : String.valueOf(list.get(j));
|
||||||
//存在订单编号,忽略不导入
|
//存在订单编号,忽略不导入
|
||||||
OrderQuery orderQuery = new OrderQuery();
|
// List<Map> saleCode = baseMapper.queryAll(new OrderQuery());
|
||||||
List<Map> saleCode = baseMapper.queryAll(orderQuery);
|
// if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")) && "10".equals(m.get("status")))) {
|
||||||
if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")))) {
|
// continue;
|
||||||
continue;
|
// }
|
||||||
}
|
|
||||||
解析cell:
|
|
||||||
{
|
|
||||||
if(j == 0) {
|
if(j == 0) {
|
||||||
if(StringUtils.isBlank(col)) {
|
if(StringUtils.isBlank(col)) {
|
||||||
throw new BadRequestException("销售单号不能为空");
|
throw new BadRequestException("销售单号不能为空");
|
||||||
@@ -174,71 +173,106 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
|||||||
throw new BadRequestException("合同号不能为空");
|
throw new BadRequestException("合同号不能为空");
|
||||||
}
|
}
|
||||||
mpsSaleOrder.setContract_code(col);
|
mpsSaleOrder.setContract_code(col);
|
||||||
//mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code() + "-" + col);
|
|
||||||
}
|
}
|
||||||
if(j == 2) {
|
if(j == 2) {
|
||||||
if(StringUtils.isBlank(col)) {
|
if(StringUtils.isBlank(col)) {
|
||||||
throw new BadRequestException("规格名称不能为空");
|
throw new BadRequestException("物料编号不能为空");
|
||||||
}
|
}
|
||||||
mpsSaleOrder.setMaterial_spec(col);
|
MdMeMaterialbase meMaterialBases = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", col));
|
||||||
List<MdMeMaterialbase> meMaterialBases = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().like("material_spec", col));
|
if(meMaterialBases == null) {
|
||||||
if(CollectionUtils.isEmpty(meMaterialBases)) {
|
errorMap.put("第" + i + "行" + col, "物料编号对应物料信息不存在");
|
||||||
errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在");
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Optional<MdMeMaterialbase> first = meMaterialBases.stream().findFirst();
|
mpsSaleOrder.setMaterial_id(meMaterialBases.getMaterial_id());
|
||||||
first.ifPresent(mdMeMaterialbase ->
|
|
||||||
{
|
|
||||||
//物料id
|
|
||||||
mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id());
|
|
||||||
// 物料编码
|
// 物料编码
|
||||||
mpsSaleOrder.setMaterial_code(mdMeMaterialbase.getMaterial_code());
|
mpsSaleOrder.setMaterial_code(meMaterialBases.getMaterial_code());
|
||||||
// 计量单位
|
// 计量单位
|
||||||
mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id());
|
mpsSaleOrder.setQty_unit_id(meMaterialBases.getBase_unit_id());
|
||||||
});
|
mpsSaleOrder.setMaterial_spec(meMaterialBases.getMaterial_spec());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(j == 3) {
|
if(j == 3) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("物料规格不能为空");
|
||||||
|
}
|
||||||
|
//规格校验?
|
||||||
|
}
|
||||||
|
if(j == 4) {
|
||||||
if(StringUtils.isBlank(col)) {
|
if(StringUtils.isBlank(col)) {
|
||||||
throw new BadRequestException("工段信息不能为空");
|
throw new BadRequestException("工段信息不能为空");
|
||||||
}
|
}
|
||||||
//智能一线,智能三线
|
//智能一线,智能三线
|
||||||
mpsSaleOrder.setProduct_area(col.contains("三") || col.contains("3") ? "A3" : "A1");
|
mpsSaleOrder.setProduct_area(col.contains("三") || col.contains("3") ? "A3" : "A1");
|
||||||
}
|
}
|
||||||
if(j == 4) {
|
if(j == 5) {
|
||||||
if(StringUtils.isBlank(col)) {
|
if(StringUtils.isBlank(col)) {
|
||||||
throw new BadRequestException("销售数量不能为空");
|
throw new BadRequestException("销售数量不能为空");
|
||||||
}
|
}
|
||||||
mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col)));
|
BigDecimal saleQty = new BigDecimal(NumberUtils.isNumber(col) ? NumberUtils.toDouble(col) : 0);
|
||||||
|
mpsSaleOrder.setSale_qty(saleQty);
|
||||||
}
|
}
|
||||||
if(j == 5) {
|
if(j == 6) {
|
||||||
//计量单位
|
//计量单位
|
||||||
if(StringUtils.isNotBlank(col)) {
|
if(StringUtils.isNotBlank(col)) {
|
||||||
mpsSaleOrder.setQty_unit_name(col);
|
mpsSaleOrder.setQty_unit_name(col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(j == 6) {
|
// if(j == 7) {
|
||||||
//最早开始时间(下料时间)
|
// //最早开始时间(下料时间)
|
||||||
if(StringUtils.isNotBlank(col)) {
|
// if(StringUtils.isNotBlank(col)) {
|
||||||
mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
|
// mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if(j == 7) {
|
if(j == 8) {
|
||||||
if(StringUtils.isBlank(col)) {
|
if(StringUtils.isBlank(col)) {
|
||||||
throw new BadRequestException("订单交期不能为空");
|
throw new BadRequestException("订单交期不能为空");
|
||||||
}
|
}
|
||||||
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col)));
|
if(col.contains("."))
|
||||||
|
{
|
||||||
|
int currentYear = DateUtil.thisYear(); // 假设默认使用2023年份
|
||||||
|
String[] dateParts = col.split("\\.");
|
||||||
|
String month = dateParts[1];
|
||||||
|
String day = dateParts[2];
|
||||||
|
// 将提取的部分拼接成标准的日期格式"yyyy-MM-dd"
|
||||||
|
String formattedDate = currentYear + "-" + month + "-" + day;
|
||||||
|
// 使用DateUtil.parse解析日期字符串
|
||||||
|
mpsSaleOrder.setPlandeliver_date(formattedDate);
|
||||||
}
|
}
|
||||||
if(j == 8) {
|
else{
|
||||||
//备注
|
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col, "yyyy-MM-dd")));
|
||||||
if(StringUtils.isNotBlank(col)) {
|
|
||||||
mpsSaleOrder.setRemark(col);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 设置明细号
|
||||||
|
String orderCode = mpsSaleOrder.getSale_code();
|
||||||
|
if(orderCode != null) {
|
||||||
|
int seqNo = orderSeqNoMap.getOrDefault(orderCode, 0) + 1;
|
||||||
|
orderSeqNoMap.put(orderCode, seqNo);
|
||||||
|
mpsSaleOrder.setSeq_no(seqNo * 100);
|
||||||
}
|
}
|
||||||
|
OrderQuery orderQuery =new OrderQuery();
|
||||||
|
orderQuery.setSale_code( mpsSaleOrder.getSale_code());
|
||||||
|
orderQuery.setStatus("10");
|
||||||
|
List<Map> salesOrders = baseMapper.queryAll(orderQuery);
|
||||||
|
//相同订单号
|
||||||
|
if(salesOrders.size()>0) {
|
||||||
|
List<Map> salesOrderList = salesOrders.stream().filter(m -> mpsSaleOrder.getSale_code().equals(m.get("sale_code")) && mpsSaleOrder.getMaterial_code().equals(m.get("material_code"))).collect(Collectors.toList());
|
||||||
|
if(salesOrderList.size()>0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Map maxSeqNoOrder= salesOrders.stream()
|
||||||
|
.max(Comparator.comparingInt(m -> (int) m.get("seq_no")))
|
||||||
|
.orElse(null);
|
||||||
|
int maxSeqNoValue = (int) maxSeqNoOrder.get("seq_no");
|
||||||
|
mpsSaleOrder.setSeq_no(maxSeqNoValue+100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code()+"-"+mpsSaleOrder.getSeq_no());
|
||||||
if(CollectionUtils.isEmpty(errorMap)) {
|
if(CollectionUtils.isEmpty(errorMap)) {
|
||||||
if(null != mpsSaleOrder.getSale_code()) {
|
if(mpsSaleOrder.getSale_code() != null) {
|
||||||
data.add(mpsSaleOrder);
|
data.add(mpsSaleOrder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -246,22 +280,15 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
|||||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.saveBatch(data);
|
this.saveBatch(data);
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch(Exception e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new BadRequestException(e.getMessage());
|
throw new BadRequestException(e.getMessage());
|
||||||
}
|
}
|
||||||
finally {
|
|
||||||
if(inputStream != null) {
|
|
||||||
try {
|
|
||||||
inputStream.close();
|
|
||||||
}
|
|
||||||
catch(Exception ignored) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(JSONObject form) {
|
public void update(JSONObject form) {
|
||||||
MpsSaleOrder mpsSaleOrder = form.toJavaObject(MpsSaleOrder.class);
|
MpsSaleOrder mpsSaleOrder = form.toJavaObject(MpsSaleOrder.class);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
|||||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||||
|
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialQZTask;
|
||||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask;
|
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask;
|
||||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
@@ -65,6 +66,8 @@ public class PdaWashController {
|
|||||||
private WmsToAcsService wmsToAcsService;
|
private WmsToAcsService wmsToAcsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private WashSendMaterialTask washSendMaterialTask;
|
private WashSendMaterialTask washSendMaterialTask;
|
||||||
|
@Autowired
|
||||||
|
private WashSendMaterialQZTask washSendMaterialQZTask;
|
||||||
|
|
||||||
@PostMapping("/specList")
|
@PostMapping("/specList")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
@@ -262,6 +265,13 @@ public class PdaWashController {
|
|||||||
washSendMaterialTask.createTask(query);
|
washSendMaterialTask.createTask(query);
|
||||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@PostMapping("/washQzFinish")
|
||||||
|
@Log("强制下料")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> washQzFinish(@RequestBody JSONObject query) {
|
||||||
|
washSendMaterialQZTask.createTask(query);
|
||||||
|
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/washTaskFinish")
|
@PostMapping("/washTaskFinish")
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import org.springframework.util.CollectionUtils;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -126,14 +127,15 @@ public class WashCallEmptyTask extends AbstractAcsTask {
|
|||||||
JSONArray data = new JSONArray();
|
JSONArray data = new JSONArray();
|
||||||
data.add(task);
|
data.add(task);
|
||||||
// 下发
|
// 下发
|
||||||
wms.issueTaskToAcs(data);
|
Map<String, Object> stringObjectMap = wms.issueTaskToAcs(data);
|
||||||
|
|
||||||
}, "bcpcallemp", 2);
|
}, "bcpcallemp", 2);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
structattrService.update(
|
structattrService.update(
|
||||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
.eq(StIvtStructattr::getStruct_code, task.getString("point_code3"))
|
.set(StIvtStructattr::getTask_code, "")
|
||||||
|
.eq(StIvtStructattr::getStruct_code, task.getString("point_code1"))
|
||||||
);
|
);
|
||||||
log.error("刻字请求异常,error:{}",ex);
|
log.error("刻字请求异常,error:{}",ex);
|
||||||
schBaseTask.setRemark(ex.getMessage());
|
schBaseTask.setRemark(ex.getMessage());
|
||||||
@@ -212,6 +214,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
|
|||||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||||
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
|
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
|
||||||
schBaseTask.setUpdate_time(new Date());
|
schBaseTask.setUpdate_time(new Date());
|
||||||
|
schBaseTask.setIs_send(true);
|
||||||
taskService.updateById(schBaseTask);
|
taskService.updateById(schBaseTask);
|
||||||
structattrService.update(
|
structattrService.update(
|
||||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
private ISchBasePointService pointService;
|
private ISchBasePointService pointService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private WmsToAcsService wms;
|
private WmsToAcsService wms;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -98,22 +99,18 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String createTask(JSONObject param) {
|
public String createTask(JSONObject param) {
|
||||||
String start_point_code = param.getString("device_code");
|
|
||||||
PdmProduceWorkorder order = null;
|
|
||||||
if (StringUtils.isNotEmpty(param.getString("workorder_code"))){
|
|
||||||
order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
|
||||||
.eq("workorder_code", param.getString("workorder_code"))// )
|
|
||||||
.eq("is_delete", false)
|
|
||||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
|
||||||
}
|
|
||||||
//?刻字满料请求:可以存在多个任务?
|
//?刻字满料请求:可以存在多个任务?
|
||||||
List<SchBaseTask> tasks = taskService.list(new QueryWrapper<SchBaseTask>()
|
List<SchBaseTask> tasks = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||||
.eq("point_code1", param.getString("device_code"))
|
.eq("point_code1", "A1_CPQXJ_01_X")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!CollectionUtils.isEmpty(tasks)){
|
if (!CollectionUtils.isEmpty(tasks)){
|
||||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), "A1_CPQXJ_01_X"));
|
||||||
|
}
|
||||||
|
SchBaseTask washTask = null;
|
||||||
|
String task_id = param.getString("task_id");
|
||||||
|
if (!StringUtils.isEmpty(task_id)){
|
||||||
|
washTask = taskService.getById(task_id);
|
||||||
}
|
}
|
||||||
// 查找任务状态
|
// 查找任务状态
|
||||||
String taskdtl_id = IdUtil.getStringId();
|
String taskdtl_id = IdUtil.getStringId();
|
||||||
@@ -123,29 +120,29 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
task.put("task_type", AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
task.put("task_type", AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
||||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||||
task.put("material_id", order!=null?order.getMaterial_id():"");
|
task.put("material_id", washTask!=null?washTask.getMaterial_id():"");
|
||||||
task.put("material_qty", param.getBigDecimal("weight"));
|
task.put("material_qty", param.getBigDecimal("wegiht"));
|
||||||
task.put("vehicle_code", param.getString("vehicle_code"));
|
task.put("vehicle_code", param.getString("vehicle_code"));
|
||||||
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
||||||
task.put("point_code1", start_point_code);
|
task.put("point_code1", "A1_CPQXJ_01_X");
|
||||||
task.put("handle_class", this.getClass().getName());
|
task.put("handle_class", this.getClass().getName());
|
||||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
task.put("create_id", currentUserId);
|
task.put("create_id", currentUserId);
|
||||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||||
task.put("create_time", DateUtil.now());
|
task.put("create_time", DateUtil.now());
|
||||||
|
task.put("is_send",true);
|
||||||
|
task.put("is_auto_issue",false);
|
||||||
task.put("priority", "1");
|
task.put("priority", "1");
|
||||||
task.put("finished_type", "1");
|
task.put("finished_type", "1");
|
||||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||||
task.put("table_fk_id",order!=null?order.getWorkorder_code():"");
|
task.put("table_fk_id",washTask!=null?washTask.getTask_id():"");
|
||||||
// 去刻字缓存区寻找空位
|
// 去刻字缓存区寻找空位
|
||||||
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
|
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
|
||||||
.eq("is_used", "1")
|
.eq("is_used", "1")
|
||||||
.eq("region_code","A1_BCP_YC")
|
.eq("region_code","A1_BCP_YC")
|
||||||
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
|
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
|
||||||
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
|
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
|
||||||
.last("and (material_id is null or material_id = '')")
|
|
||||||
);
|
|
||||||
if (CollectionUtils.isEmpty(list)) {
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
throw new BadRequestException("异常位没有可用货位");
|
throw new BadRequestException("异常位没有可用货位");
|
||||||
}
|
}
|
||||||
@@ -156,7 +153,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
pointService.updateById(point);
|
pointService.updateById(point);
|
||||||
// 设置点位
|
// 设置点位
|
||||||
task.put("update_time", DateUtil.now());
|
task.put("update_time", DateUtil.now());
|
||||||
task.put("point_code2",point.getPoint_code());
|
task.put("point_code3",point.getPoint_code());
|
||||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
||||||
@@ -174,10 +171,15 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancel(String task_id) {
|
public void cancel(String task_id) {
|
||||||
|
SchBaseTask byId = taskService.getById(task_id);
|
||||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||||
.set("update_name","acs")
|
.set("update_name","acs")
|
||||||
.set("update_time",DateUtil.now()).eq("task_id",task_id));
|
.set("update_time",DateUtil.now()).eq("task_id",task_id));
|
||||||
|
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||||
|
.set("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
|
||||||
|
.set("lock_type", StatusEnum.LOCK_OFF.getCode())
|
||||||
|
.eq("point_code",byId.getPoint_code3()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -187,8 +189,6 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
|
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
|
||||||
public void pointConfirm(JSONObject task) {
|
public void pointConfirm(JSONObject task) {
|
||||||
//
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String createTask(JSONObject param) {
|
public String createTask(JSONObject param) {
|
||||||
if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vechile_code"))){
|
if (StringUtils.isEmpty(param.getString("wegiht"))||StringUtils.isEmpty(param.getString("vechile_code"))){
|
||||||
throw new BadRequestException("请求参数不能为空");
|
throw new BadRequestException("请求参数不能为空");
|
||||||
}
|
}
|
||||||
String start_point_code = "A1_CPQXJ_01_X";
|
String start_point_code = "A1_CPQXJ_01_X";
|
||||||
@@ -85,19 +85,16 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
|||||||
form.put("bill_type","0001");
|
form.put("bill_type","0001");
|
||||||
form.put("point_code",start_point_code);
|
form.put("point_code",start_point_code);
|
||||||
form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库
|
form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库
|
||||||
form.put("total_qty",param.getString("weight"));
|
form.put("total_qty",param.getString("wegiht"));
|
||||||
form.put("material_id",order.getMaterial_id());
|
form.put("material_id",order.getMaterial_id());
|
||||||
form.put("unit_weight",byId.getNet_weight());
|
form.put("unit_weight",byId.getNet_weight());
|
||||||
form.put("storagevehicle_code",param.getString("vehicle_code"));
|
form.put("storagevehicle_code",param.getString("vechile_code"));
|
||||||
form.put("product_code","A1");
|
form.put("product_code","A1");
|
||||||
form.put("auto_send",true);
|
form.put("auto_send",true);
|
||||||
JSONObject req = new JSONObject();
|
JSONObject req = new JSONObject();
|
||||||
req.put("from",form);
|
req.put("from",form);
|
||||||
pdaStBcpInService.createIn(req);
|
pdaStBcpInService.createIn(req);
|
||||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
|
||||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
|
||||||
.set("task_step","")
|
|
||||||
.eq("task_id",param.getString("task_id")));
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.pda.controller;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.anno.Log;
|
import org.nl.common.anno.Log;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.wms.storage_manage.pda.service.PdaStBcpInService;
|
import org.nl.wms.storage_manage.pda.service.PdaStBcpInService;
|
||||||
@@ -62,7 +63,8 @@ public class PdaStBcpInController {
|
|||||||
@Log("呼叫空载具")
|
@Log("呼叫空载具")
|
||||||
//("呼叫空载具")
|
//("呼叫空载具")
|
||||||
public ResponseEntity<Object> callVehicle() {
|
public ResponseEntity<Object> callVehicle() {
|
||||||
return new ResponseEntity<>(pdaStBcpInService.callVehicle(), HttpStatus.OK);
|
pdaStBcpInService.callVehicle();
|
||||||
|
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/createIn")
|
@PostMapping("/createIn")
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -158,25 +159,21 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
|
|||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("message", "下发失败");
|
result.put("message", "下发失败");
|
||||||
RedissonUtils.lock(() -> {
|
RedissonUtils.lock(() -> {
|
||||||
// 1.查入库点位
|
|
||||||
SchBasePoint pointDao = iSchBasePointService.getOne(
|
|
||||||
new QueryWrapper<SchBasePoint>().lambda()
|
|
||||||
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("半成品入库区域"))
|
|
||||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")), false
|
|
||||||
);
|
|
||||||
|
|
||||||
// 2.判断此入库点是否有正在执行的任务
|
// 2.判断此入库点是否有正在执行的任务
|
||||||
List<SchBaseTask> taskList = iSchBaseTaskService.list(
|
List<SchBaseTask> taskList = iSchBaseTaskService.list(
|
||||||
new QueryWrapper<SchBaseTask>().lambda()
|
new QueryWrapper<SchBaseTask>().lambda()
|
||||||
.eq(SchBaseTask::getIs_delete, false)
|
.eq(SchBaseTask::getIs_delete, false)
|
||||||
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||||
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, pointDao.getPoint_code())
|
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, "A1_CPQXJ_01_X")
|
||||||
.or()
|
.or()
|
||||||
.eq(SchBaseTask::getPoint_code2, pointDao.getPoint_code())
|
.eq(SchBaseTask::getPoint_code3, "A1_CPQXJ_01_X")
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(taskList)) throw new BadRequestException("有正在执行中的任务,请稍后在尝试!");
|
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||||
|
throw new BadRequestException("清洗下料有正在执行中的任务,请稍后在尝试!"+taskList.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
|
|
||||||
// 3.找一个空载具
|
// 3.找一个空载具
|
||||||
StIvtStructattr attrDao = structattrService.getOne(
|
StIvtStructattr attrDao = structattrService.getOne(
|
||||||
@@ -195,7 +192,7 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
|
|||||||
.acs_task_type("7")
|
.acs_task_type("7")
|
||||||
.task_group_id(IdUtil.getStringId())
|
.task_group_id(IdUtil.getStringId())
|
||||||
.point_code1(attrDao.getStruct_code())
|
.point_code1(attrDao.getStruct_code())
|
||||||
.point_code3(pointDao.getPoint_code())
|
.point_code3("A1_CPQXJ_01_X")
|
||||||
.vehicle_code(attrDao.getStoragevehicle_code())
|
.vehicle_code(attrDao.getStoragevehicle_code())
|
||||||
.product_area("A1") // 暂时写死
|
.product_area("A1") // 暂时写死
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -97,11 +97,11 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
|||||||
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
|
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
|
||||||
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
|
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
|
||||||
);
|
);
|
||||||
// if (ObjectUtil.isEmpty(orderDao)) {
|
if (ObjectUtil.isEmpty(orderDao)) {
|
||||||
// throw new BadRequestException("销售单不存在!");
|
throw new BadRequestException(row.getSource_bill_code()+"对应销售单"+row.getBase_bill_code()+"_"+row.getBase_bill_table()+"不存在!");
|
||||||
// }
|
}
|
||||||
|
|
||||||
row.setBase_billdtl_id(orderDao==null?"":orderDao.getSale_id().toString());
|
row.setBase_billdtl_id(orderDao.getSale_id());
|
||||||
row.setBase_bill_code(row.getBase_bill_code());
|
row.setBase_bill_code(row.getBase_bill_code());
|
||||||
row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type());
|
row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type());
|
||||||
row.setBase_bill_table(row.getBase_bill_table());
|
row.setBase_bill_table(row.getBase_bill_table());
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
<if test="sale_id != null and sale_id != ''">
|
<if test="sale_id != null and sale_id != ''">
|
||||||
and ivt.sale_id = #{sale_id}
|
and ivt.sale_id = #{sale_id}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="sale_code != null and sale_code != ''">
|
||||||
|
and ivt.sale_code = #{sale_code}
|
||||||
|
</if>
|
||||||
order by ivt.canuse_qty ASC,ivt.struct_code ASC
|
order by ivt.canuse_qty ASC,ivt.struct_code ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@@ -29,9 +29,9 @@ spring:
|
|||||||
password: ${DB_PWD:123456}
|
password: ${DB_PWD:123456}
|
||||||
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 30
|
initial-size: 10
|
||||||
# 最小连接数
|
# 最小连接数
|
||||||
min-idle: 30
|
min-idle: 10
|
||||||
# 最大连接数
|
# 最大连接数
|
||||||
max-active: 100
|
max-active: 100
|
||||||
# 是否自动回收超时连接
|
# 是否自动回收超时连接
|
||||||
|
|||||||
@@ -38,6 +38,13 @@ export function changeEmp(data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function setMaterial(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/structattr/setMaterial',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function getSectCascader(data) {
|
export function getSectCascader(data) {
|
||||||
return request({
|
return request({
|
||||||
@@ -47,4 +54,4 @@ export function getSectCascader(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { add, edit, del, changeActive, getSectCascader, changeEmp }
|
export default { add, edit, del, changeActive, getSectCascader, changeEmp, setMaterial }
|
||||||
|
|||||||
@@ -51,6 +51,61 @@
|
|||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission" />
|
<crudOperation :permission="permission" />
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="仓位物料设置"
|
||||||
|
append-to-body
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
destroy-on-close
|
||||||
|
width="1000px"
|
||||||
|
close="closeView"
|
||||||
|
>
|
||||||
|
<el-form ref="form" :model="materialForm" :rules="rules" size="mini" label-suffix=":" label-width="90px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否空载具" prop="is_emptyvehicle">
|
||||||
|
<el-radio
|
||||||
|
v-for="item in trueorfalse"
|
||||||
|
:key="item.value"
|
||||||
|
v-model="materialForm.is_emptyvehicle"
|
||||||
|
:label="item.value"
|
||||||
|
>{{ item.label }}
|
||||||
|
</el-radio>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="载具号">
|
||||||
|
<label slot="label">载 具 号:</label>
|
||||||
|
<el-input v-model="materialForm.storagevehicle_code" style="width: 200px;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item v-if="materialForm.is_emptyvehicle==false" label="物料编码">
|
||||||
|
<el-input v-model="materialForm.material_code" style="width: 200px;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="物料编码" prop="material_code">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input v-model="materialForm.material_code" clearable style="width: 370px">
|
||||||
|
<el-button slot="append" icon="el-icon-plus" @click="queryMater(materialForm)" />
|
||||||
|
</el-input>
|
||||||
|
</template>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item v-if="materialForm.is_emptyvehicle==false" label="物料数量">
|
||||||
|
<el-input-number v-model="materialForm.qty" style="width: 200px;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="text" @click="closeView">取消</el-button>
|
||||||
|
<el-button type="primary" @click="setStructMaterial(form)">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
<!--表单组件-->
|
<!--表单组件-->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
@@ -253,18 +308,27 @@
|
|||||||
v-permission="['admin','structattr:edit','structattr:del']"
|
v-permission="['admin','structattr:edit','structattr:del']"
|
||||||
label="操作"
|
label="操作"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
width="120px"
|
width="180px"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
<span>
|
||||||
<udOperation
|
<udOperation
|
||||||
:data="scope.row"
|
:data="scope.row"
|
||||||
:permission="permission"
|
:permission="permission"
|
||||||
/>
|
/>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="toView(scope.row)">仓位设置</el-button>
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
|
<MaterDtl
|
||||||
|
:dialog-show.sync="materialShow"
|
||||||
|
:is-single="true"
|
||||||
|
:mater-opt-code="materType"
|
||||||
|
@setMaterValue="setMaterValue"
|
||||||
|
/>
|
||||||
<pagination />
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -278,6 +342,9 @@ import crudOperation from '@crud/CRUD.operation'
|
|||||||
import udOperation from '@crud/UD.operation'
|
import udOperation from '@crud/UD.operation'
|
||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import crudSectattr from '@/api/wms/basedata/st/sectattr'
|
import crudSectattr from '@/api/wms/basedata/st/sectattr'
|
||||||
|
import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||||
|
|
||||||
|
import {setMaterial} from "../../../../../api/wms/basedata/st/structattr";
|
||||||
/* import checkoutbill from "@/api/wms/st/core/outbill/checkoutbill";*/
|
/* import checkoutbill from "@/api/wms/st/core/outbill/checkoutbill";*/
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
@@ -290,6 +357,7 @@ const defaultForm = {
|
|||||||
sect_code: null,
|
sect_code: null,
|
||||||
sect_name: null,
|
sect_name: null,
|
||||||
stor_id: null,
|
stor_id: null,
|
||||||
|
material_code: null,
|
||||||
stor_code: null,
|
stor_code: null,
|
||||||
stor_name: null,
|
stor_name: null,
|
||||||
stor_type: null,
|
stor_type: null,
|
||||||
@@ -328,7 +396,7 @@ const defaultForm = {
|
|||||||
export default {
|
export default {
|
||||||
name: 'Structattr',
|
name: 'Structattr',
|
||||||
dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL'],
|
dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL'],
|
||||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
components: { pagination, crudOperation, rrOperation, udOperation, MaterDtl },
|
||||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
cruds() {
|
cruds() {
|
||||||
return CRUD({
|
return CRUD({
|
||||||
@@ -354,7 +422,11 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
materialForm:{},
|
||||||
|
materialShow: false,
|
||||||
|
materType: '00',
|
||||||
sects: [],
|
sects: [],
|
||||||
|
dialogVisible: false,
|
||||||
trueorfalse: [ { value: true, label: '是' }, { value: false, label: '否' }],
|
trueorfalse: [ { value: true, label: '是' }, { value: false, label: '否' }],
|
||||||
invtypelist: [],
|
invtypelist: [],
|
||||||
permission: {},
|
permission: {},
|
||||||
@@ -419,6 +491,21 @@ export default {
|
|||||||
val[1] = form.sect_id
|
val[1] = form.sect_id
|
||||||
form.cascader = val
|
form.cascader = val
|
||||||
},
|
},
|
||||||
|
setStructMaterial(data){
|
||||||
|
console.log(data)
|
||||||
|
crudStructattr.setMaterial(data).then(res => {
|
||||||
|
this.crud.toQuery()
|
||||||
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
setMaterValue(row) {
|
||||||
|
console.log(row)
|
||||||
|
this.materialForm.material_code = row.material_code
|
||||||
|
this.tableData.splice(this.nowindex, 1, this.nowrow)
|
||||||
|
},
|
||||||
|
queryMater(index, row) {
|
||||||
|
this.materialShow = true
|
||||||
|
},
|
||||||
sectChange(val) {
|
sectChange(val) {
|
||||||
this.form.sect_id = val[1]
|
this.form.sect_id = val[1]
|
||||||
},
|
},
|
||||||
@@ -472,6 +559,14 @@ export default {
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
toView(row){
|
||||||
|
this.materialForm = row
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
closeView(){
|
||||||
|
this.materialForm={}
|
||||||
|
this.dialogVisible = false
|
||||||
|
},
|
||||||
changeEmp(data) {
|
changeEmp(data) {
|
||||||
let msg = '设置该仓位非空载具,是否继续!'
|
let msg = '设置该仓位非空载具,是否继续!'
|
||||||
if (data.is_emptyvehicle === false) {
|
if (data.is_emptyvehicle === false) {
|
||||||
|
|||||||
@@ -121,7 +121,7 @@
|
|||||||
<el-input v-model="form.deliver_code" style="width: 200px;" />
|
<el-input v-model="form.deliver_code" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="销售单单号" prop="deliver_code">
|
<el-form-item label="销售单单号" prop="deliver_code">
|
||||||
<el-input v-model="form.deliver_code" style="width: 200px;" />
|
<el-input v-model="form.sale_code" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发货单明细" prop="seq_no">
|
<el-form-item label="发货单明细" prop="seq_no">
|
||||||
<el-input v-model="form.seq_no" style="width: 200px;" />
|
<el-input v-model="form.seq_no" style="width: 200px;" />
|
||||||
|
|||||||
@@ -181,6 +181,12 @@
|
|||||||
min-width="100"
|
min-width="100"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="seq_no"
|
||||||
|
label="销售单行号"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
<!-- <el-table-column prop="seq_no" label="明细序号" /> -->
|
<!-- <el-table-column prop="seq_no" label="明细序号" /> -->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="sale_type"
|
prop="sale_type"
|
||||||
|
|||||||
@@ -152,10 +152,10 @@
|
|||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column prop="task_code" label="任务编码" min-width="100" show-overflow-tooltip />
|
<el-table-column prop="task_code" label="任务编码" min-width="100" show-overflow-tooltip />
|
||||||
<el-table-column prop="table_fk_id" label="业务编码" min-width="100" show-overflow-tooltip />
|
<el-table-column prop="table_fk_id" label="关联业务" min-width="100" show-overflow-tooltip />
|
||||||
<el-table-column v-if="true" prop="task_id" label="任务标识" min-width="150" show-overflow-tooltip />
|
<el-table-column v-if="true" prop="task_id" label="任务标识" min-width="150" show-overflow-tooltip />
|
||||||
<el-table-column v-if="true" prop="material_id" label="物料标识" min-width="150" show-overflow-tooltip />
|
<el-table-column v-if="true" prop="material_id" label="物料id" min-width="150" show-overflow-tooltip />
|
||||||
<el-table-column v-if="true" prop="material_spec" label="物料标识" min-width="150" show-overflow-tooltip />
|
<el-table-column v-if="true" prop="material_spec" label="规格" min-width="150" show-overflow-tooltip />
|
||||||
<el-table-column prop="task_name" label="任务类型" :min-width="flexWidth('task_name',crud.data,'任务类型')" />
|
<el-table-column prop="task_name" label="任务类型" :min-width="flexWidth('task_name',crud.data,'任务类型')" />
|
||||||
<el-table-column prop="acs_task_type" label="acs任务类型" min-width="120" show-overflow-tooltip :formatter="acsTypeName" />
|
<el-table-column prop="acs_task_type" label="acs任务类型" min-width="120" show-overflow-tooltip :formatter="acsTypeName" />
|
||||||
<el-table-column v-if="false" prop="task_status" label="任务状态" />
|
<el-table-column v-if="false" prop="task_status" label="任务状态" />
|
||||||
|
|||||||
@@ -152,7 +152,6 @@
|
|||||||
<el-table-column show-overflow-tooltip prop="plan_qty" label="出库数量">
|
<el-table-column show-overflow-tooltip prop="plan_qty" label="出库数量">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-show="!scope.row.edit"
|
|
||||||
v-model="form.tableData[scope.$index].plan_qty"
|
v-model="form.tableData[scope.$index].plan_qty"
|
||||||
size="small"
|
size="small"
|
||||||
:controls="false"
|
:controls="false"
|
||||||
@@ -161,7 +160,7 @@
|
|||||||
:min="0"
|
:min="0"
|
||||||
@change="changeQty"
|
@change="changeQty"
|
||||||
/>
|
/>
|
||||||
<span v-show="scope.row.edit">{{ scope.row.plan_qty }}</span>
|
<!-- <span v-show="scope.row.edit">{{ scope.row.plan_qty }}</span>-->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" />
|
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" />
|
||||||
|
|||||||
Reference in New Issue
Block a user