diff --git a/ant-design-vue-jeecg/src/api/api.js b/ant-design-vue-jeecg/src/api/api.js index eca8531..9b320fb 100644 --- a/ant-design-vue-jeecg/src/api/api.js +++ b/ant-design-vue-jeecg/src/api/api.js @@ -165,6 +165,8 @@ export const selectSupplePort = (params) => postAction('/receipt/receiptContaine export const inventoryPort = (params) => postAction('/cycleCountDetail/cycleCountDetail/inventoryPort', params); //创建空托盘入库任务 export const createEmptyIn = (params) => postAction('/task/taskHeader/createEmptyIn', params); +//修改优先级 +export const updatePriority = (params, priority) => postAction('/task/taskHeader/updatePriority?id=' + params + '&priority=' + priority, params); //创建空托盘出库任务 export const createEmptyOut = (params) => postAction('/task/taskHeader/createEmptyOut', params); //选择空托盘出库整出口 diff --git a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue index d7a9671..b2d2682 100644 --- a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue @@ -168,6 +168,8 @@ <a-divider type="vertical"/></a> <a v-if="record.isDoubleIn == 1 && record.exceptionState == 1 && record.status == 100" v-has="'taskHeader:executeTask'" @click="handleDoubleInTask(record)"><a-button type="danger">修复重入数据</a-button> <a-divider type="vertical"/></a> + <a v-if="record.status < 20 " v-has="'taskHeader:priority'" @click="handlePriority(record)"><a-button type="danger">优先级</a-button> + <a-divider type="vertical"/></a> <!-- <a v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" @click="cancelTask(record)" >取消</a>--> <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> <a-button type="danger">取消</a-button> @@ -186,6 +188,7 @@ <taskHeader-modal ref="modalForm" @ok="modalFormOk"></taskHeader-modal> <empty-in-task-modal ref="emptyInModal" @ok="modalFormOk"></empty-in-task-modal> <many-empty-in-task-modal ref="manyEmptyInModal" @ok="modalFormOk"></many-empty-in-task-modal> + <update-priority ref="updatePriority" @ok="modalFormOk"></update-priority> <MaterialTaskModal ref="materialTaskModal" @ok="modalFormOk"></MaterialTaskModal> <call-receipt-box-modal ref="modalForm5" @ok="modalFormOk"></call-receipt-box-modal> <call-receipt-empty-box-modal ref="modalForm6" @ok="modalFormOk"></call-receipt-empty-box-modal> @@ -204,6 +207,7 @@ import {completeTaskByWMS, cancelTask} from '@/api/api' import {execute} from '@/api/api' import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/api/api' import EmptyInTaskModal from './modules/EmptyInTaskModal' +import UpdatePriority from './modules/UpdatePriority' import ManyEmptyInTaskModal from "./modules/ManyEmptyInTaskModal"; import {filterObj} from "@/utils/util"; import MaterialTaskModal from "./modules/MaterialTaskModal"; @@ -221,7 +225,8 @@ export default { EmptyInTaskModal, TaskDetailList, TaskHeaderModal, - MaterialTaskModal + MaterialTaskModal, + UpdatePriority }, data() { return { @@ -306,6 +311,11 @@ export default { dataIndex: 'exceptionName' }, { + title: '优先级', + align: "center", + dataIndex: 'priority' + }, + { title: '创建人', align: "center", dataIndex: 'createBy' @@ -525,6 +535,10 @@ export default { quickReceipt(){ this.$refs.materialTaskModal.edit(); }, + handlePriority(record){ + this.$refs.updatePriority.edit(record); + this.$refs.updatePriority.title = "修改优先级"; + }, solutionZoneCode(value) { var actions = [] Object.keys(this.zoneList).some((key) => { diff --git a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue index 77c99b6..7dbf5bb 100644 --- a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue @@ -168,6 +168,8 @@ <a-divider type="vertical"/></a> <a v-if="record.isDoubleIn == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleDoubleInTask(record)"><a-button type="danger">修复重入数据</a-button> <a-divider type="vertical"/></a> + <a v-if="record.status < 20 " v-has="'taskHeader:priority'" @click="handlePriority(record)"><a-button type="danger">优先级</a-button> + <a-divider type="vertical"/></a> <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> <a-button type="danger">取消</a-button> <a-divider type="vertical"/> @@ -191,6 +193,7 @@ <empty-out-task-modal ref="emptyOutModal" @ok="modalFormOk"></empty-out-task-modal> <batch-empty-out-task-modal ref="batchEmptyOutModal" @ok="modalFormOk"></batch-empty-out-task-modal> <many-empty-out-task-modal ref="manyEmptyOutModal" @ok="modalFormOk"></many-empty-out-task-modal> + <update-priority ref="updatePriority" @ok="modalFormOk"></update-priority> <call-shipment-box-modal ref="modalForm5" @ok="modalFormOk"></call-shipment-box-modal> </a-card> @@ -211,6 +214,7 @@ import EmptyOutTaskModal from './modules/EmptyOutTaskModal' import BatchEmptyOutTaskModal from './modules/BatchEmptyOutTaskModal' import ManyEmptyOutTaskModal from "./modules/ManyEmptyOutTaskModal"; import CallShipmentBoxModal from "@views/system/task/modules/CallShipmentBoxModal"; +import UpdatePriority from "@views/system/task/modules/UpdatePriority.vue"; export default { name: "ShipmentTaskHeaderList", @@ -221,7 +225,8 @@ export default { EmptyOutTaskModal, BatchEmptyOutTaskModal, TaskDetailList, - TaskHeaderModal + TaskHeaderModal, + UpdatePriority }, data() { return { @@ -299,6 +304,11 @@ export default { dataIndex: 'exceptionName' }, { + title: '优先级', + align: "center", + dataIndex: 'priority' + }, + { title: '创建人', align: "center", dataIndex: 'createBy' @@ -494,6 +504,10 @@ export default { this.$refs.manyEmptyOutModal.edit(); this.$refs.manyEmptyOutModal.title = "创建空托盘组出库"; }, + handlePriority(record){ + this.$refs.updatePriority.edit(record); + this.$refs.updatePriority.title = "修改优先级"; + }, solutionZoneCode(value) { var actions = [] Object.keys(this.zoneList).some((key) => { diff --git a/ant-design-vue-jeecg/src/views/system/task/modules/UpdatePriority.vue b/ant-design-vue-jeecg/src/views/system/task/modules/UpdatePriority.vue new file mode 100644 index 0000000..3686d83 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/task/modules/UpdatePriority.vue @@ -0,0 +1,100 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="关闭"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="优先级" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="priority" :min='0' :precision='0'> + <a-input v-model="model.priority" placeholder="请输入优先级" type="number"></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + + +import { updatePriority} from '@/api/api' + +export default { + name: "UpdatePriorityModal", + components: {}, + data() { + return { + title: "操作", + width: 500, + visible: false, + id: '', + model: {}, + labelCol: { + xs: {span: 24}, + sm: {span: 5}, + }, + wrapperCol: { + xs: {span: 24}, + sm: {span: 16}, + }, + + confirmLoading: false, + validatorRules: { + priority: [ + {required: true, message: '请输入优先级!'}, + ], + }, + } + }, + created() { + //备份model原始值 + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + edit(record) { + console.log(record) + this.id = record.id; + this.visible = true; + }, + close() { + this.$emit('close'); + this.visible = false; + this.$refs.form.clearValidate(); + }, + handleOk() { + const that = this; + // 触发表单验证 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + updatePriority(this.id,this.model.priority,).then((res) => { + if (res.success) { + that.$message.success(res.message); + that.$emit('ok'); + that.model.priority = ''; + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + } else { + return false + } + }) + }, + handleCancel() { + this.close() + }, + } +} +</script> \ No newline at end of file diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java index e7a96f0..74eb3fe 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java @@ -498,7 +498,6 @@ public class WcsServiceImpl implements WcsService { wcsTask.setShipmentOrder(taskHeader.getShipmentOrder()); wcsTask.setSequence(taskHeader.getSequence()); wcsTask.setSequenceNumber(taskHeader.getSequenceNumber()); - wcsTask.setPriority(10); wcsTask.setRemark(QuantityConstant.EMPTY_STRING); Container container = containerService.getContainerByCode(containerCode, warehouseCode); if (container == null) { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java index 463bab6..52bcf4e 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java @@ -871,4 +871,23 @@ public class TaskHeaderController extends HuahengBaseController { }); return result; } + + /** + * 修改优先级 + * @return + */ + @AutoLog(value = "修改优先级") + @PostMapping("updatePriority") + @ApiOperation("修改优先级") + @ResponseBody + public Result updatePriority(@RequestBody @RequestParam(name = "id") String id, @RequestParam(name = "priority") String priority, HttpServletRequest req) { + Result result = handleMultiProcess("updatePriority", new MultiProcessListener() { + @Override + public Result<?> doProcess() { + Result result = taskHeaderService.updatePriority(id, priority); + return result; + } + }); + return result; + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java index 6b6006e..a81b7ec 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java @@ -115,6 +115,10 @@ public class TaskHeader implements Serializable { @Excel(name = "起始出入口", width = 15) @ApiModelProperty(value = "起始出入口") private String fromPortCode; + /** 优先级 */ + @Excel(name = "优先级", width = 15) + @ApiModelProperty(value = "优先级") + private Integer priority; /** 目标出入口 */ @Excel(name = "目标出入口", width = 15) @ApiModelProperty(value = "目标出入口") diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java index c1e7fe4..5d82db9 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java @@ -454,4 +454,6 @@ public interface ITaskHeaderService extends IService<TaskHeader> { List<String> findCommonData(List<String> dataList1, List<String> dataList2, boolean flag); boolean delMain (Integer id); + + Result updatePriority(String id, String priority); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java index 875c76b..9022615 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java @@ -9,8 +9,10 @@ import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.modules.wms.api.wcs.entity.WcsTask; import org.jeecg.modules.wms.api.wcs.service.LocationAllocationService; import org.jeecg.modules.wms.api.wcs.service.WcsService; +import org.jeecg.modules.wms.config.address.service.IAddressService; import org.jeecg.modules.wms.config.container.entity.Container; import org.jeecg.modules.wms.config.container.service.IContainerService; import org.jeecg.modules.wms.config.location.entity.Location; @@ -68,6 +70,7 @@ import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.modules.wms.task.taskHeaderHistory.service.ITaskHeaderHistoryService; import org.jeecg.utils.HuahengJwtUtil; +import org.jeecg.utils.OkHttpUtils; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; import org.springframework.beans.factory.annotation.Autowired; @@ -198,6 +201,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Resource private IMaterialMultipleService materialMultipleService; + @Resource + private IAddressService addressService; + @Override @Transactional public void delMain(String id) { @@ -3528,4 +3534,43 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea QuantityConstant.TASK_STATUS_COMPLETED); return super.update(taskHeader, taskHeaderLambdaQueryWrapper); } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result updatePriority(String id, String priority) { + TaskHeader task = taskHeaderService.getById(id); + if (task == null) { + return Result.error("修改优先级时,根据任务号没有找到任务"); + } + if (task.getStatus() > QuantityConstant.TASK_STATUS_RELEASE) { + return Result.error("任务已经开始执行或完成,不能修改优先级"); + } + TaskHeader taskHeader = new TaskHeader(); + taskHeader.setId(task.getId()); + taskHeader.setPriority(Integer.valueOf(priority)); + if (!taskHeaderService.updateById(taskHeader)) { + throw new JeecgBootException("修改优先级失败Id:" + id); + } + WcsTask wcsTask = new WcsTask(); + wcsTask.setTaskNo(id); + wcsTask.setPriority(Integer.valueOf(priority)); + String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_CONNECT_WCS, task.getZoneCode()); + if (StringUtils.isEmpty(value)) { + throw new JeecgBootException("任务下发,没有找到连接WCS的数据配置"); + } + int connectWCS = Integer.parseInt(value); + if (connectWCS == QuantityConstant.RULE_WCS_CONNECT) { + String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_WCS_TASK_PRIORITY_CHANGE, task.getWarehouseCode(), task.getZoneCode()); + String jsonParam = JSON.toJSONString(wcsTask); + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); + if (StringUtils.isEmpty(body)) { + throw new JeecgBootException("任务下发, 接口地址错误或返回为空"); + } + Result result = JSON.parseObject(body, Result.class); + if (result.getCode() != QuantityConstant.HTTP_OK) { + throw new JeecgBootException("WCS修改优先级失败:" + result.getMessage()); + } + } + return Result.ok("修改优先级成功"); + } }